Le kit d'outils d'interface utilisateur Leanback obsolète fournit des bibliothèques spécifiques à la télévision, exclusives aux applications développées pour Android TV OS. Ces bibliothèques incluent les éléments suivants :
- Bibliothèque Leanback : fournit des modèles d'interface utilisateur qui simplifient la création d'applications Android TV.
- Leanback Preferences bibliothèque : fournit des écrans de préférences et de paramètres cohérents avec la plate-forme, mais qui peuvent être personnalisés pour correspondre à votre application.
- Bibliothèque Leanback Paging : prend en charge le
modèle de pagination AndroidX pour les
ObjectAdapters, qui sont couramment utilisés avec les modèles Leanback. - Bibliothèque Leanback Tabs : prend en charge la navigation par onglets sur Android TV.
Bibliothèque de pagination Leanback
La pagination dans le kit d'outils d'interface utilisateur Leanback fonctionne de la même manière que la bibliothèque AndroidX
Paging 3, ce qui
simplifie l'ajout de la pagination à un
RecyclerView.Adapter.
Avec la bibliothèque Leanback Paging, l'adaptateur exposé est généralement un
ObjectAdapter
. La bibliothèque ajoute donc la prise en charge de la pagination à ObjectAdapter.
Pour ajouter un adaptateur de pagination à votre application, commencez par ajouter la dépendance de la bibliothèque à votre projet :
implementation "androidx.leanback:leanback-paging:$version"
Suivez ensuite la
documentation Paging 3 en utilisant
androidx.leanback.paging.PagingDataAdapter au lieu de
androidx.paging.PagingDataAdapter. La seule différence est que vous pouvez désormais
transmettre un Presenter
ou
PresenterSelector.
Cela fonctionne partout où vous utilisez normalement un ObjectAdapter, par exemple dans un
ListRow :
Kotlin
val adapter: PagingDataAdapter<MyItem> = PagingDataAdapter(myPresenter, object : DiffUtil.ItemCallback<MyItem>() { override fun areItemsTheSame( oldItem: MyItem, newItem: MyItem ): Boolean { return oldItem.id === newItem.id } override fun areContentsTheSame( oldItem: MyItem, newItem: MyItem ): Boolean { return oldItem == newItem } }) val header = HeaderItem(headerTitle) val row = ListRow(header, adapter)
Java
PagingDataAdapter<MyItem> adapter = new PagingDataAdapter(myPresenter, new DiffUtil.ItemCallback<MyItem>() { @Override public boolean areItemsTheSame(@NonNull MyItem oldItem, @NonNull MyItem newItem) { return oldItem.getId().equals(newItem.getId()); } @Override public boolean areContentsTheSame(@NonNull MyItem oldItem, @NonNull MyItem newItem) { return oldItem.equals(newItem); } }); HeaderItem header = new HeaderItem(headerTitle); Row row = new ListRow(header, adapter);
Bibliothèque Leanback Tabs
Les modèles du kit d'outils d'interface utilisateur Leanback fournissent une navigation latérale dans le écran de navigation. Pour ajouter une ligne d'onglets horizontalement en haut de l'application, vous pouvez utiliser Leanback Tabs.
Ajoutez la dépendance de la bibliothèque à votre projet :
implementation "androidx.leanback:leanback-tab:$version"
Implémentez ensuite les onglets à l'aide de LeanbackTabLayout et LeanbackViewPager en
suivant le guide ViewPager existant
. Notez que
LeanbackViewPager est basé sur ViewPager, et non sur ViewPager2.
Voici un exemple :
Kotlin
val leanbackTabLayout = findViewById<LeanbackTabLayout>(R.id.tab_layout) val leanbackViewPager = findViewById<LeanbackViewPager>(R.id.view_pager) leanbackViewPager.setAdapter(adapter) leanbackTabLayout.setupWithViewPager(leanbackViewPager)
Java
LeanbackTabLayout leanbackTabLayout = findViewById(R.id.tab_layout); LeanbackViewPager leanbackViewPager = findViewById(R.id.view_pager); leanbackViewPager.setAdapter(adapter); leanbackTabLayout.setupWithViewPager(leanbackViewPager);
Limites
La bibliothèque Leanback Tabs présente des limites en termes de thèmes compatibles et de gestion des mouvements du curseur.
Thèmes compatibles
Seuls les thèmes dérivés de Theme.AppCompat sont compatibles. TabLayout
contient une contrainte d'application de thème, ce qui empêche l'utilisation de tout thème non descendant de Theme.AppCompat. Vous pouvez également utiliser le thème de pont pour le kit d'outils d'interface utilisateur Leanback.
Mouvement du curseur des onglets vers le haut
Lorsque la hauteur de la mise en page est supérieure à la hauteur de l'écran et que vous appuyez sur le bouton haut du pavé directionnel, le contrôle revient à l'onglet au lieu de rester dans le fragment et de passer à un élément situé au-dessus (voir la figure 1). Pour résoudre ce problème, le contenu
du fragment doit remplacer la recherche du curseur. Par exemple, utilisez
RowsSupportFragment.
BrowseSupportFragment
ne peut pas être utilisé dans un onglet, car il possède une méthode de recherche du curseur remplacée qui empêche le curseur de revenir à l'onglet.