Biblioteki narzędzi interfejsu TalkBack

Ulepszaj dzięki funkcji tworzenia wiadomości
Dzięki Jetpack Compose na system operacyjny Android TV możesz tworzyć atrakcyjne interfejsy użytkownika przy użyciu minimalnej ilości pisania.

Zestaw narzędzi interfejsu Leanback zawiera biblioteki typowe dla telewizorów, dostępne tylko w aplikacjach opracowanych na system operacyjny Android TV. Do tych bibliotek należą:

  • Biblioteka Leanback: zawiera szablony interfejsu, które upraszczają tworzenie aplikacji na Androida TV.
  • Biblioteka Leanback Preferences (Preferencje i ustawienia Leanback): udostępnia ekrany preferencji i ustawień zgodne z platformą, ale dopasowane do tematyki aplikacji.
  • Biblioteka Leanback Paging: obsługuje model stronicowania AndroidX dla ObjectAdapters, który jest powszechnie używany z szablonami Leanback.
  • Biblioteka Leanback Tabs: obsługuje nawigację przy użyciu kart w Androidzie TV.

Biblioteka stronicowania Leanback

Określanie stron w zestawie narzędzi interfejsu Leanback działa tak samo jak biblioteka AndroidaX Paging 3, która upraszcza dodawanie stronicowania do RecyclerView.Adapter. W przypadku biblioteki stronicowania Leanback widoczny adapter to zwykle ObjectAdapter, dlatego biblioteka dodaje obsługę stronicowania do ObjectAdapter.

Aby dodać do aplikacji adapter stronicowania, najpierw dodaj do projektu zależność biblioteki:

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

Następnie postępuj zgodnie z dokumentacją dotyczącą tempa 3, używając androidx.leanback.paging.PagingDataAdapter zamiast androidx.paging.PagingDataAdapter. Jedyną różnicą jest to, że teraz możesz przekazywać Presenter lub PresenterSelector. Działa on wszędzie tam, gdzie zwykle używasz obiektu ObjectAdapter, na przykład w 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);

Biblioteka kart Leanback

Szablony zestawu narzędzi interfejsu Leanback umożliwiają boczną nawigację po ekranie przeglądania. Aby dodać wiersz kart w poziomie u góry aplikacji, użyj kart Leanback.

Dodaj do projektu zależność biblioteki:

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

Następnie zaimplementuj karty za pomocą właściwości LeanbackTabLayout i LeanbackViewPager, postępując zgodnie z obecnym przewodnikiem ViewPager. Pamiętaj, że wartość LeanbackViewPager została utworzona na podstawie kolumny ViewPager, a nie ViewPager2.

Oto przykład:

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

Ograniczenia

Biblioteka Leanback Tabs ma ograniczenia w zakresie obsługiwanych motywów i sposobu obsługi przesuwania uwagi.

Obsługiwane motywy

Obsługiwane są tylko motywy, które pochodzą z elementu Theme.AppCompat. TabLayout zawiera ograniczenie wymuszania motywu, które uniemożliwia użycie jakiegokolwiek niepotomnego motywu Theme.AppCompat. Możesz też użyć motywu mostka w zestawie narzędzi interfejsu Leanback.

Przenieś zaznaczenie z kart do góry

Gdy wysokość układu jest większa niż wysokość ekranu i naciśniesz przycisk w górę na padzie kierunkowym, element sterujący wróci na kartę zamiast pozostawać we fragmencie i przejść do elementu znajdującego się nad nim (zobacz ilustrację 1). Aby rozwiązać ten problem, zawartość we fragmencie musi zastąpić wyszukiwanie zaznaczenia, np. RowsSupportFragment. Znacznika BrowseSupportFragment nie można używać na karcie, ponieważ ma on metodę wyszukiwania z zastąpieniem fokusu, która uniemożliwia przeniesienie zaznaczenia z powrotem na kartę.

Rysunek 1. Przycisk na padzie kierunkowym w górę powoduje przejście na kartę zamiast na poprzedni element.