Librerie di toolkit dell'interfaccia utente Leanback

Migliora la creazione con Compose
Crea splendide UI con un minimo codice utilizzando Jetpack Compose per il sistema operativo Android TV.

Il toolkit Leanback UI fornisce alcune librerie specifiche per la TV esclusive per app sviluppate per il sistema operativo Android TV. Queste librerie includono:

  • Libreria Leanback: offre modelli UI che semplificare la creazione di app per Android TV.
  • Preferenze di Leanback libreria: fornisce schermate di preferenze e impostazioni coerenti con alla piattaforma, ma possono essere tematici in base alla tua app.
  • La libreria Leanback Paging supporta Modello di paging AndroidX per ObjectAdapters, di uso comune con Modelli Leanback.
  • Libreria Leanback Tabs: supporta i formati a schede su Android TV.

Libreria di paging Leanback

Il paging all'interno del toolkit dell'interfaccia utente Leanback funziona come in AndroidX Paging 3, che semplifica l'aggiunta di pagine RecyclerView.Adapter Con la libreria Leanback Paging, l'adattatore esposto è in genere un ObjectAdapter quindi la libreria aggiunge il supporto del paging a ObjectAdapter.

Per aggiungere un adattatore di paging alla tua app, aggiungi prima la dipendenza della libreria al progetto:

implementation "androidx.leanback:leanback-paging:$version"

Poi segui le Documentazione di Paging 3 utilizzando androidx.leanback.paging.PagingDataAdapter invece di androidx.paging.PagingDataAdapter. L'unica differenza è che ora sei in grado per passare in un Presenter o PresenterSelector. Funziona ovunque tu voglia normalmente usare un ObjectAdapter, ad esempio in una 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);

Libreria Leanback Tabs

I modelli di toolkit dell'interfaccia utente Leanback offrono una navigazione laterale schermata di navigazione. Per aggiungere una riga di schede orizzontalmente nella parte superiore dell'app, puoi usare le schede Leanback.

Aggiungi la dipendenza della libreria al tuo progetto:

implementation "androidx.leanback:leanback-tab:$version"

Poi implementa le schede utilizzando LeanbackTabLayout e LeanbackViewPager seguendo il modello Guida di ViewPager. Tieni presente che LeanbackViewPager si basa su ViewPager, non su ViewPager2.

Di seguito è riportato un esempio:

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);

Limitazioni

La libreria Leanback Tabs presenta limitazioni relative ai temi supportati e al modo in cui il movimento viene gestito.

Temi supportati

Sono supportati solo i temi derivati da Theme.AppCompat. TabLayout contiene un vincolo di applicazione del tema, che impedisce qualsiasi tema non discendente di Theme.AppCompat. Puoi anche utilizzare il tema del ponte per Toolkit UI Leanback.

Imposta lo stato attivo sul movimento dalle schede all'alto

Quando l'altezza del layout è superiore a quella dello schermo e premi il D-pad il pulsante su, il controllo torna alla scheda anziché rimanere all'interno del frammento e passando a un elemento al di sopra (vedi figura 1). Per gestire il problema, i contenuti all'interno del frammento deve sostituire la ricerca attiva; Ad esempio, utilizza RowsSupportFragment BrowseSupportFragment non può essere utilizzato all'interno di una scheda perché ha un metodo di ricerca dello stato attivo con override che impedisce allo stato attivo di tornare alla scheda.

Figura 1. Il pulsante verso l'alto del D-pad sposta lo stato attivo sulla scheda anziché sull'elemento precedente.