2010-10-09 22 views
15

Mam aplikację Java Swing, która rysuje diagramy. Używa wywołań Graphics2D i obiektów awt, takich jak Rectangle itp.Używanie awt z Androidem

W pewnym momencie mogę chcieć przenieść to na Androida. Rozumiem, że nie mogę używać Graphics2D na Androidzie, ale czy mogę nadal używać klas awt Prostokąt, Czcionka, Kolor (itp.).

Co chcę zrobić, to wyizolować wszelkie zmiany kodu między wersją swing a wersją Androida, dodając warstwę emulacji, aby moje połączenia Graphics2D mogły być konwertowane na wywołania rysowania w systemie Android.

Czy to możliwe?

Dla jasności, nie martwię się zbytnio stroną Swing UI (interfejs jest minimalny i można go przepisać na system Android), niepokoi mnie faktyczny kod rysunkowy, który wywołuje Graphics2D z wielu miejsc.

+0

Oto porównanie (choć pochodzi z roku 2008, więc nie jestem pewien, ile jest nadal dokładna), jakie standardowe pakiety obsługuje Android i nie obsługuje: http://www.zdnet.com/blog/ burnette/java-vs-android-apis/504 – Josh1billion

Odpowiedz

8

Głównym problemem jest to, że nie będzie można tworzyć klas w pakietach o nazwie java.awt. Ale oprócz tego punktu, w zasadzie można przepisać bibliotekę opartą na API awt.

Można również sprawdzić projekt awt-android-compat.

+0

Żeby wyjaśnić, czy mówisz, że nie będę mógł używać istniejących klas awt, nawet takich rzeczy jak Prostokąt? Jaki jest problem? – tomd

+4

awt-android-compat to niestety GNU, a mój to komercyjny projekt. – tomd

+1

@tomd: "Tylko po to, by wyjaśnić, czy mówisz, że nie będę w stanie korzystać z istniejących klas awt, nawet takich rzeczy jak Prostokąt? Jaki jest problem?" - nie istnieją na Androidzie. Jednak w przypadku klas użytkowych, które nie próbują rysować na ekranie, możesz pobrać źródło tych klas z projektu Apache Harmony, przekształcić je w nowy pakiet (np. 'Tomd.awt') i użyć ich. – CommonsWare

0

Wydaje się, że część kodu AWT jest częścią pakietu Android bazowej zobacz: http://google.com/codesearch/p?hl=en#uX1GffpyOZk/awt/java/awt/Graphics2D.java&q=Graphics2D&sa=N&cd=1&ct=rc

+2

Link już nie działa. Z tego, co mogę powiedzieć z innych źródeł, wynika, że ​​wsparcie AWT jest * bardzo * ograniczone; jedynym pakietem, jaki widziałem w dokumentacji, jest java.awt.font. – Josh1billion

+0

Dziękuję za zaniedbanie odpowiedzi ze względu na zamykanie przez Google ich wyszukiwania kodu :) – Guy

+0

Niestety, to nic osobistego. Chciałem tylko upewnić się (dla przyszłych pracowników Google, którzy zastanawiają się nad tym samym pytaniem), że najbardziej aktualna, odpowiednia odpowiedź pojawia się na górze. – Josh1billion

1

http://www.apogee.com/ ma produktów handlowych, które pozwolą na uruchomienie programów Swing na Androida. Pamiętaj, że nigdy nie korzystałem z tego produktu, więc nie mogę skomentować, jak to dobrze.