2010-10-09 9 views
15

J'ai une application Java Swing qui dessine des diagrammes. Il utilise des appels Graphics2D et des objets awt tels que Rectangle etc.Utilisation de awt avec android

À un moment donné, je pourrais vouloir porter ceci à Android. Je comprends que je ne peux pas utiliser Graphics2D sur Android, mais puis-je toujours utiliser les classes awt Rectangle, Font, Color (etc). Ce que je veux faire est d'isoler tout changement de code entre la version swing et la version Android en ajoutant une couche d'émulation afin que mes appels Graphics2D puissent être convertis en appels dessin Android.

Est-ce faisable? Pour être clair, je ne suis pas trop inquiet à propos de l'interface utilisateur de Swing (l'interface utilisateur est minimale et peut être réécrite pour Android), je suis préoccupé par le code de dessin qui appelle Graphics2D à partir de nombreux endroits.

+0

Voici une comparaison (bien que ce soit à partir de 2008, donc je ne suis pas sûr de la précision de ce qui est toujours exact) de ce que les paquets standard Android supporte et ne supporte pas: http://www.zdnet.com/blog/ burnette/java-vs-android-apis/504 – Josh1billion

Répondre

8

Le problème principal est que vous ne pourrez pas créer de classes dans des packages nommés java.awt. Mais sauf ce point, vous pouvez fondamentalement réécrire une bibliothèque basée sur awt API.

Vous pouvez également vérifier le projet awt-android-compat.

+0

Juste pour clarifier, dites-vous que je ne serai pas capable d'utiliser les classes awt existantes, même des choses comme Rectangle? Quel est le problème? – tomd

+4

awt-android-compat est malheureusement GNU, et le mien est un projet commercial. – tomd

+1

@tomd: "Juste pour clarifier, dites-vous que je ne serai pas capable d'utiliser les classes awt existantes, même des choses comme Rectangle? Quel est le problème?" - Ils n'existent pas sur Android. Toutefois, pour les classes d'utilitaires qui n'essaient pas de dessiner à l'écran, vous pouvez récupérer la source de ces classes à partir du projet Apache Harmony, les refactoriser dans un nouveau package (par exemple, 'tomd.awt') et les utiliser. – CommonsWare

0

Il semble qu'une partie du code AWT fait partie du package de base Android voir: http://google.com/codesearch/p?hl=en#uX1GffpyOZk/awt/java/awt/Graphics2D.java&q=Graphics2D&sa=N&cd=1&ct=rc

+2

Le lien ne fonctionne plus. D'après ce que je peux dire d'autres sources, il semble que le support AWT soit * extrêmement * limité; le seul paquet que j'ai vu dans la documentation est java.awt.font. – Josh1billion

+0

Merci d'avoir downvoté la réponse en raison de google arrêtant leur recherche de code :) – Guy

+0

Désolé, ce n'est rien de personnel. Je voulais juste m'assurer (pour les futurs googleurs, comme moi, qui se posent peut-être la même question) que la réponse la plus actuelle et la plus pertinente se retrouve en haut. – Josh1billion

1

http://www.apogee.com/ a des produits commerciaux qui vous permettront d'exécuter des programmes Swing sur Android. Notez que je n'ai jamais utilisé ce produit, donc je ne peux pas commenter à quel point c'est bon.