Développement de widgets Android modernes
Nous sommes en 2020 et les widgets font à nouveau fureur après que iOS les a finalement pris en charge. Cependant, les widgets Android ne semblent pas avoir été mis à jour depuis 2012.
À partir de la documentation Android :
Un objet RemoteViews (et, par conséquent, un widget d'application) peut prendre en charge les classes de disposition suivantes:
- FrameLayout
- Disposition linéaire
- Disposition relative
- Disposition de la grille
Ce qui signifie, pas de ConstraintLayout, pas de RecyclerView, pas d'AndroidX. Je ne veux pas revenir aux jours sombres de ListView.
La documentation sur le site des développeurs Android est-elle toujours la meilleure pratique pour développer des widgets Android aujourd'hui? Quelqu'un a-t-il de l'expérience dans la création de widgets dans un monde AndroidX? Existe-t-il une sorte d'API tierce pour rendre l'expérience moins douloureuse?
Réponses
Cependant, les widgets Android ne semblent pas avoir été mis à jour depuis 2012.
Correct.
Je ne veux pas revenir aux jours sombres de ListView.
Ummm ... désolé?
La documentation sur le site des développeurs Android est-elle toujours la meilleure pratique pour développer des widgets Android aujourd'hui?
Les widgets d'application concernent moins les «meilleures pratiques» que le protocole documenté et pris en charge. Gardez à l'esprit que les widgets d'application sont en réalité un protocole de communication inter-processus (IPC) qui se traduit par une interface utilisateur à la fin. Votre application ne rend pas l'interface utilisateur - l'écran d'accueil ou un autre hôte de widget d'application l'est, généralement avec l'aide d' AppWidgetHostAPI et des API associées.
Ce qui signifie, pas de ConstraintLayout, pas de RecyclerView, pas d'AndroidX.
Correct. Après tout, vous ne savez pas si l'écran d'accueil a accès à l'une de ces choses, ou dans quelle version ils se trouvent, etc.
Existe-t-il une sorte d'API tierce pour rendre l'expérience moins douloureuse?
Ce n'est pas vraiment possible. Votre application a très peu à voir avec les widgets d'application. Le "gros travail" se situe dans le cadre et, dans une moindre mesure, dans l'écran d'accueil. Une API tierce ne peut pas vraiment changer cela.
Je m'attendais à ce que Google commence à inciter les développeurs de lanceurs à prendre en charge les tranches comme une forme alternative de "widget d'application". Cela ne s'est pas encore produit, car Google semble avoir oublié les tranches. Peut-être qu'à l'avenir, Google proposera quelque chose basé sur Android 11SurfaceControlViewHost , ce qui ouvre les portes à toutes sortes de possibilités. Dans les deux cas, il se peut que les développeurs de lanceurs apportent des modifications pour prendre en charge ces éléments, ce qui ralentira l'adoption.
La chose la plus proche que vous puissiez faire pour offrir une interface utilisateur au-delà de ce qui est dans la liste limitée de widgets et de conteneurs est de rendre vos propres éléments dans un Bitmapet de le montrer dans un ImageViewwidget de l'application. Cela devient délicat, car vous ne connaissez pas la taille précise du widget de l'application. Et, bien sûr, cela ne change pas les options de saisie.