Портирование графического кода AWT на Android - PullRequest
9 голосов
/ 26 апреля 2011

Мы хотели бы использовать некоторые из наших существующих графических кодов Java AWT на платформе Android.Насколько я могу судить, Android не включает ни одного из классов AWT - нет Graphics2D, Path2D, FontMetrics и т. Д.

Как лучше всего перенести наш код для рисования наAndroid?В идеале мы хотели бы изменить нашу кодовую базу, чтобы она предназначалась как для , так и для Android и универсальной Java.

Ответы [ 3 ]

8 голосов
/ 26 апреля 2011

Платформа Android поддерживает небольшое подмножество AWT. Под маленьким я подразумеваю, что он поддерживает шрифты AWT. Переход от java swing (вы действительно просто используете awt в качестве автономного интерфейса?) К Android будет шоком для системы. Один определяет пользовательский интерфейс Android в файлах ресурсов XML, и эти ресурсы загружаются в классы Activity, которые представляют собой логическую единицу приложения. Canvas заменяет объекты Graphics2D, и у них несколько иная функциональность. Система пользовательского интерфейса Android стремится избежать абсолютного позиционирования, что часто встречается в Java-интерфейсах. И для Android есть еще много всего, что нужно учитывать, например, размер экрана и разница в разрешении. Ни один из которых не был большой проблемой для Java SE. Чтобы ответить на ваш вопрос: у вас вырезана работа, и вам придется начинать большую часть кодирования с нуля.

Я не уверен, что означает «код для рисования», но в моем случае у меня есть большой объем кода анимации, который отображается через формы AWT. Это воспроизводимо на Android, так как есть объекты graphics.drawable.shapes, и можно отображать примитивные фигуры, выполняя что-то вроде canvas.drawCircle (x, y, z, h) (что-то напоминает вам?). Но когда я портировал его, это было трудно, и я чувствовал, что я заставляю андроида делать то, чего он действительно не хотел и не собирался делать. Трудно точно ответить на ваш вопрос, учитывая его неопределенность.

2 голосов
/ 26 апреля 2011

Я не думаю, что вы можете портировать AWT на Android. Я имею в виду, что это Java SE против его подмножества (или обновленный Java ME со стероидами, как вы предпочитаете).

Тем не менее, есть некоторые классы пользовательского интерфейса для Java ME, которые отлично работают на Android. Лично мне нравится LWUIT, но он не единственный.

1 голос
/ 13 марта 2019

appengine-awt - это чистая реализация java пакетов java.awt и javax.imageio для использования в среде Google AppEngine.

https://github.com/witwall/appengine-awt

SwingWT - это 100% чистая библиотека Java, целью которой является бесплатная реализация Swing и AWT. В отличие от Swing, он управляет нативными одноранговыми виджетами для вашей платформы из SWT.

https://github.com/witwall/SwingWT

...