2011-04-25 171 views
7

我们希望在Android平台上使用我们现有的一些Java AWT图形代码。据我所知,Android不包括任何AWT类的 - 没有Graphics2DPath2DFontMetrics将AWT图形代码移植到Android

什么是口最好的办法我们的绘制代码为Android?理想情况下,我们想修改我们的代码库,以便将都设为 Android和泛型Java。

+1

查看awt-android-compat项目:http://code.google.com/p/awt-android-compat/。不幸的是,最近没有太多活动,所以它还处于很早的阶段。 似乎在Android的内部代码中有一些对AWT的引用,但直接使用它似乎是不可能的。也许它可以用于贡献awt-android-compat项目?我不确定。 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2.2_r1/com/android/internal/awt/AndroidGraphics2D.java#AndroidGraphics2D – Josh1billion 2012-02-02 17:36:11

+0

awt android兼容性:死了,问题太多了。 – 2012-10-01 10:28:41

+1

这是我为Graphics apis制作的包装,它没有完全完成,但有很多功能。 http://pastebin.com/b5TFWSqQ – schwiz 2013-02-07 02:10:47

回答

6

android平台支持awt的一个小子集。小,我的意思是它支持awt字体。从java swing开始(你真的只是使用awt作为独立的用户界面吗?)到Android会对系统产生冲击。一个在XML资源文件中定义了Android的UI,并且这些资源被加载到代表应用逻辑单元的Activity类中。 Canvas'取代了Graphics2D对象,并且它们有不同的功能。Android UI系统试图避免绝对定位,这在Java UI中很常见。 Android还有很多需要考虑的因素,例如屏幕尺寸和分辨率的不同。这两者对于Java SE都不是什么大问题。为了回答你的问题:你的工作不适合你,你将不得不从头开始编写大部分代码。

我不确定'绘图代码'是什么意思,但在我的情况下,我有大量的动画代码通过awt形状显示。这是在android上的可重复使用,因为有graphics.drawable.shapes对象,并且可以通过做类似canvas.drawCircle(x,y,z,h)(提醒你什么?)来显示原始形状。但是当我移植它的时候,这很困难,我觉得我正在把android做一些真正不想做的事情,而且没有打算这么做。考虑到它的含糊性,很难回答你的问题。

+0

你写道:“Android UI系统试图避免绝对定位,这在Java UI中很常见”。我认为这两种系统的定位是相同的。你能解释我错在哪里吗?背景资料:我有类似的问题。我应该实现一些仅用于结构化而不用于绘制的java.awt代码。例如像awt.Rectangle2D?或者我应该彻底重构android中的应用程序。 如果我必须重构,我认为这将是很多努力。另一方面,如果我尝试模拟java.awt,我不会真正知道会有什么后果。 – dritan 2014-08-31 12:23:00

2

我不认为你可以将AWT移植到Android。我的意思是,它是Java SE与它的一个子集(或更新的Java ME,带有类固醇,如你所愿)。

虽然有一些用于Java ME的UI类可以在Android上完美地工作。我个人喜欢LWUIT,但它不是唯一的。