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 niektóre biblioteki typowe dla telewizji, dostępne wyłącznie na system operacyjny Android TV. Do tych bibliotek należą:

  • Biblioteka Leanback: udostępnia szablony interfejsu, które ułatwiają tworzenie aplikacji na Androida TV.
  • Ustawienia Leanback Library: udostępnia ekrany preferencji i ustawień zgodne z z platformy, ale też dobrać tematykę pasującą do Twojej aplikacji.
  • Biblioteka Leanback Paging: obsługuje Model stronicowania AndroidX dla ObjectAdapters, który jest powszechnie używany z Szablony Leanback.
  • Biblioteka Leanback Tabs: obsługuje karty nawigacji na Androidzie TV.

Biblioteka stronicowania Leanback

Tworzenie stron w zestawie narzędzi interfejsu Leanback działa tak samo jak w AndroidzieX. biblioteki Paging 3, która upraszcza dodawanie stronicowania do RecyclerView.Adapter. W przypadku biblioteki stronicowania Leanback widoczny adapter jest zwykle ObjectAdapter więc 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 Dokumentacja znaczników „Paging 3” w języku angielskim: androidx.leanback.paging.PagingDataAdapter zamiast androidx.paging.PagingDataAdapter Jedyna różnica polega na tym, że teraz można do zaliczenia Presenter lub PresenterSelector Działa on wszędzie tam, gdzie zwykle używa się identyfikatora ObjectAdapter, np. 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 zapewniają boczną nawigację w ekranu przeglądania. Dodawanie wiersza kart w poziomie u góry aplikacji, możesz zamiast tego używać kart Leanback.

Dodaj do projektu zależność biblioteki:

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

Następnie zaimplementuj karty za pomocą funkcji LeanbackTabLayout i LeanbackViewPager przez zgodnie z istniejącym Przewodnik po wyświetleniu strony ViewPager. Pamiętaj, że Wartość LeanbackViewPager jest oparta na kolumnie ViewPager, a nie na podstawie 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 podlega ograniczeniom dotyczącym motywów, które obsługuje, oraz sposobu skupienia ruch jest obsługiwany.

Obsługiwane motywy

Obsługiwane są tylko motywy, które pochodzą z elementu Theme.AppCompat. TabLayout zawiera ograniczenie egzekwowania motywu, które zapobiega występowaniu motywu niepodrzędnego z Theme.AppCompat. Możesz również użyć motywu mostu dla: Zestaw narzędzi interfejsu Leanback.

Przenieś zaznaczenie z kart do góry

Gdy wysokość układu jest większa niż wysokość ekranu i naciśniesz pad kierunkowy przycisk w górę, element sterujący wróci do karty zamiast pozostawać we fragmencie i przejście do elementu znajdującego się nad nim (patrz ilustracja 1). Aby rozwiązać ten problem, wewnątrz fragmentu musi zastąpić wyszukiwanie zaznaczenia; na przykład użyj RowsSupportFragment BrowseSupportFragment nie można jej używać na karcie, ponieważ ma ona zastąpione metodę wyszukiwania zapobiega przeniesieniu zaznaczenia z powrotem na kartę.

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