2010-10-09 31 views
15

Tengo una aplicación Java Swing que dibuja diagramas. Utiliza llamadas de Graphics2D y awt objetos como Rectángulo, etc.Uso de awt con android

En algún momento podría querer portar esto a Android. Entiendo que no puedo usar Graphics2D en Android, pero aún puedo usar las clases awt Rectangle, Font, Color (etc).

Lo que quiero hacer es aislar cualquier cambio de código entre la versión de swing y la de Android agregando una capa de emulación para que mis llamadas de Graphics2D puedan convertirse en llamadas de dibujo de Android.

¿Esto es factible?

Para que quede claro, no estoy demasiado preocupado por el lado de UI de Swing (la IU es mínima y puede reescribirse para Android), me preocupa el código de dibujo real que llama a Graphics2D desde muchos lugares.

+0

Aquí hay una comparación (aunque es de 2008, por lo que no estoy seguro de cuánto de eso sigue siendo exacto) de los paquetes estándar que Android admite y no admite: http://www.zdnet.com/blog/ burnette/java-vs-android-apis/504 – Josh1billion

Respuesta

8

El problema principal es que no podrá crear clases en paquetes con el nombre java.awt. Pero excepto ese punto, básicamente puedes reescribir una biblioteca basada en awt API.

También puede consultar el proyecto awt-android-compat.

+0

Solo para aclarar, ¿estás diciendo que no podré usar las clases awt existentes, incluso cosas como Rectangle? ¿Cuál es el problema? – tomd

+4

awt-android-compat es lamentablemente GNU, y el mío es un proyecto comercial. – tomd

+1

@tomd: "Solo para aclarar, ¿estás diciendo que no podré usar las clases existentes de awt, incluso cosas como Rectángulo? ¿Cuál es el problema?" - no existen en Android. Sin embargo, para las clases de utilidad que no intentan dibujar en la pantalla, puede tomar la fuente de esas clases del proyecto Apache Harmony, refactorizarlas en un nuevo paquete (por ejemplo, 'tomd.awt') y usarlas. – CommonsWare

0

Parece que parte del código AWT es parte del paquete de base de Android ver: http://google.com/codesearch/p?hl=en#uX1GffpyOZk/awt/java/awt/Graphics2D.java&q=Graphics2D&sa=N&cd=1&ct=rc

+2

El enlace ya no funciona. Por lo que puedo decir de otras fuentes, parece que el soporte de AWT es * extremadamente * limitado; el único paquete que he visto en la documentación es java.awt.font. – Josh1billion

+0

Gracias por revocar la respuesta en la cuenta de Google cerrando su búsqueda de código :) – Guy

+0

Lo siento, no es nada personal. Solo quería asegurarme (para futuros usuarios de Google, como yo, que quizás se pregunten la misma pregunta) que la respuesta más actual y relevante aparece en la parte superior. – Josh1billion

1

http://www.apogee.com/ tiene productos comerciales que permitirán ejecutar programas Swing en Android. Tenga en cuenta que nunca he usado este producto, así que no puedo comentar lo bueno que es.