Le kit d'interface utilisateur Leanback fournit des bibliothèques spécifiques à la télévision, exclusives aux applications développées pour l'OS Android TV. Ces bibliothèques incluent les éléments suivants:
- Leanback: fournit des modèles d'interface utilisateur qui simplifient la création d'applications Android TV.
- Bibliothèque Leanback Preferences: fournit des écrans de préférences et de paramètres cohérents avec la plate-forme, mais dont le thème peut correspondre à votre application.
- Bibliothèque Leanback Paging: compatible avec le modèle de pagination AndroidX pour
ObjectAdapters
, qui est couramment utilisé avec les modèles Leanback. - Bibliothèque Leanback Tabs: prend en charge la navigation par onglets sur Android TV.
Bibliothèque Paging Leanback
La pagination dans le kit de l'interface utilisateur Leanback fonctionne de la même manière que la bibliothèque Paging 3 d'AndroidX, ce qui simplifie l'ajout de 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 bibliothèque à votre projet:
implementation "androidx.leanback:leanback-paging:$version"
Consultez ensuite la documentation de 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 élément Presenter
ou PresenterSelector
.
Cela fonctionne partout où vous utilisez habituellement 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 d'onglets YouTube "en moins de clics"
Les modèles de kits d'outils d'interface utilisateur Leanback permettent une navigation latérale sur l'écran de navigation. Pour ajouter une ligne d'onglets horizontalement en haut de l'application, utilisez plutôt les onglets "en moins de clics".
Ajoutez la dépendance de bibliothèque à votre projet:
implementation "androidx.leanback:leanback-tab:$version"
Implémentez ensuite des 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 d'onglets "en moins de clics" présente des limites concernant les thèmes qu'elle prend en charge et la façon dont le déplacement du curseur est géré.
Thèmes compatibles
Seuls les thèmes dérivés de Theme.AppCompat
sont acceptés. TabLayout
contient une contrainte d'application de thème qui empêche l'utilisation d'un thème non descendant de Theme.AppCompat
. Vous pouvez également utiliser le thème Bridge pour le kit UI Leanback.
Placer le curseur sur le mouvement des onglets vers le haut
Lorsque la hauteur de la mise en page est supérieure à celle de l'écran et que vous appuyez sur le bouton du pavé directionnel haut, la commande revient à l'onglet au lieu de rester à l'intérieur du fragment et d'accéder à un élément situé au-dessus (voir la figure 1). Pour gérer ce problème, le contenu à l'intérieur du fragment doit remplacer la recherche ciblée. Par exemple, utilisez RowsSupportFragment
.
BrowseSupportFragment
ne peut pas être utilisé dans un onglet, car il comporte une méthode de recherche ciblée remplacée qui l'empêche de revenir à l'onglet.