Développement de widgets Android
Introduits dans Android 1.5, les widgets sont un type spécial d'application apparaissant sur l'écran d'accueil de l'utilisateur à côté des raccourcis. La mise en page (layout) d'un widget s'écrit en XML, tandis que ses fonctions (que faire à la mise à jour, à la création, etc.) sont des méthodes Java, héritées et redéfinies depuis l'interface AppWidgetProvider.
Bases des widgets
Pour créer un widget fonctionnel qu'un utilisateur peut ajouter à l'écran d'accueil, créez une nouvelle classe héritant de AppWidgetProvider. Cette classe contient des méthodes pour recevoir les intents spécifiques aux widgets (fermeture, mise à jour). Un widget doit aussi contenir un fichier de métadonnées XML, indiquant à l'OS Android ses propriétés : dimensions minimales, fréquence de mise à jour, layout et autres données nécessaires.
Limitations des widgets
Les widgets pour smartphones sont limités en taille et ne peuvent se mettre à jour que jusqu'à une certaine fréquence. Sur Android < 3.1, ils remplacent effectivement les icônes sur l'écran d'accueil et ne sont pas redimensionnables : la taille minimale spécifiée s'étire pour couvrir le nombre d'emplacements requis. Android 3.1+ propose des widgets redimensionnables : ces variables deviennent la taille « par défaut », et de nouvelles variables (minResizeWidth, minResizeHeight) définissent la taille minimale réelle. De plus, tous les widgets ont une fréquence minimale de mise à jour. Si vous spécifiez une fréquence inférieure, Android l'ignore et utilise sa propre fréquence minimale (ex: 30 min sur Android 1.5).
Layouts des widgets
Les widgets doivent fonctionner sur de nombreux téléphones aux résolutions d'écran différentes. LinearLayout est un layout simple s'adaptant facilement à tout écran ; il ordonne les composants gauche→droite ou haut→bas selon l'attribut « android:orientation ». FrameLayout et RelativeLayout sont aussi compatibles. Les widgets peuvent imbriquer des layouts. Android 4.0+ applique automatiquement des marges aux widgets si targetSdkVersion ≥ 14 ; les développeurs recommandent de ne pas ajouter de marges extra hors de la forme de fond du widget pour cette plateforme.
Configuration des widgets
Certains widgets n'affichent que de l'information sans personnalisation. D'autres offrent une configuration. Implémentez cette personnalisation en créant une classe étendant Activity et définissant le layout en XML. Votre classe de configuration doit accéder aux composants de votre classe de layout pour que le widget reconnaisse les actions utilisateur et se mette à jour. AndroidManifest.xml liste les activités implémentées.
