Le kit d'interface utilisateur Leanback fournit des bibliothèques spécifiques aux téléviseurs développées pour l'OS Android TV. Ces bibliothèques incluent les éléments suivants:
- Bibliothèque Leanback: propose des modèles d'interface utilisateur qui simplifier la création d'applications Android TV.
- Préférences Leanback bibliothèque: fournit des écrans de préférences et de paramètres cohérents avec mais vous pouvez choisir un thème correspondant à votre application.
- Bibliothèque Leanback Paging: prend en charge le
Modèle de pagination AndroidX pour
ObjectAdapters
, généralement utilisé avec Modèles Leanback. - Bibliothèque Leanback Tabs: compatible avec les onglets sur Android TV.
Bibliothèque de pagination Leanback
La pagination dans le kit d'interface utilisateur Leanback fonctionne de la même manière qu'avec AndroidX.
la bibliothèque Paging 3, qui
simplifie l'ajout de pagination à
RecyclerView.Adapter
Avec la bibliothèque Leanback Paging, l'adaptateur exposé est généralement
ObjectAdapter
À la place, la bibliothèque ajoute une 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 les
la documentation Paging 3 avec
androidx.leanback.paging.PagingDataAdapter
au lieu de
androidx.paging.PagingDataAdapter
La seule différence, c'est que vous pouvez désormais
pour transmettre un 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 Leanback Tabs
Les modèles du kit d'interface utilisateur Leanback offrent une navigation latérale dans le écran de navigation. Ajouter une ligne d'onglets horizontalement en haut de l'application, vous pouvez utiliser les onglets Leanback à la place.
Ajoutez la dépendance de bibliothèque à votre projet:
implementation "androidx.leanback:leanback-tab:$version"
Implémentez ensuite les onglets à l'aide de LeanbackTabLayout
et LeanbackViewPager
en
en suivant les
Guide ViewPager 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 a des limites au niveau des thèmes qu'elle prend en charge et de la mise au point le mouvement 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 les thèmes non descendants
sur Theme.AppCompat
d'être utilisés. Vous pouvez également utiliser le thème de pont
Kit d'interface utilisateur Leanback
Sélectionner le déplacement 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 pavé directionnel
bouton vers le haut, la commande revient dans 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, les contenus
à l'intérieur du fragment doivent
remplacer la recherche de focus. Par exemple, utilisez
RowsSupportFragment
BrowseSupportFragment
ne peut pas être utilisée dans un onglet, car il contient une méthode de recherche ciblée qui a été remplacée,
empêche le focus de revenir à l'onglet.