Biblioteki narzędzi interfejsu TalkBack

Zestaw narzędzi interfejsu Suica zawiera kilka bibliotek przeznaczonych specjalnie dla telewizji. Są one dostępne tylko w aplikacjach utworzonych na potrzeby systemu operacyjnego Android TV. Do tych bibliotek należą:

  • Biblioteka leanback: zawiera szablony interfejsu, które upraszczają tworzenie aplikacji na Androida TV.
  • Biblioteka ustawień TalkBack: zawiera ekrany z ustawieniami i ustawieniami, które są spójne z platformą, ale mogą pasować do Twojej aplikacji.
  • Biblioteka leanback stronicowania: obsługuje model stronicowania AndroidX dla ObjectAdapters, który jest powszechnie używany z szablonami Leanback.
  • Biblioteka kart Leanback: obsługuje nawigację po kartach na Androidzie TV.

Biblioteka stronicowania w funkcji Classroom

Uruchamianie w zestawie stronicowania w zestawie narzędzi interfejsu TalkBack działa tak samo jak w bibliotece Paging 3 w AndroidzieX, co upraszcza dodawanie stronicowania do RecyclerView.Adapter. W przypadku biblioteki stronicowania SKAdNetwork ujawniony adapter to zwykle ObjectAdapter, dlatego biblioteka dodaje obsługę stronicowania do ObjectAdapter.

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

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

Następnie postępuj zgodnie z dokumentacją etapu 3, używając parametru androidx.leanback.paging.PagingDataAdapter zamiast androidx.paging.PagingDataAdapter. Jedyna różnica polega na tym, że teraz możesz przekazywać Presenter lub PresenterSelector. Działa to wszędzie tam, gdzie normalnie jest używany 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 funkcji BeyondCorp

Szablony zestawu narzędzi interfejsu TalkBack zapewniają boczną nawigację na ekranie przeglądania. Aby dodać wiersz kart w poziomie u góry aplikacji, użyj zamiast tego kart funkcji TalkBack.

Dodaj zależność z biblioteką do projektu:

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

Następnie zaimplementuj karty za pomocą LeanbackTabLayout i LeanbackViewPager, postępując zgodnie z dotychczasowym przewodnikiem po ViewPager. Pamiętaj, że pole LeanbackViewPager jest oparte na wartości 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 kart funkcji BeyondCorp ma ograniczenia w zakresie obsługiwanych motywów i sposobu obsługi ruchu fokusu.

Obsługiwane motywy

Obsługiwane są tylko motywy pochodzące z szablonu Theme.AppCompat. TabLayout zawiera ograniczenie wymuszania motywu, które uniemożliwia użycie motywu niepodrzędnego elementu Theme.AppCompat. Możesz też użyć motywu mostka w narzędziach Leanback UI.

Przenieś zaznaczenie kart na górę

Jeśli wysokość układu jest większa niż wysokość ekranu i naciśniesz przycisk w górę na padzie kierunkowym, element sterujący wróci do karty, zamiast pozostawać we fragmencie i przejść do elementu nad nim (zobacz ilustrację 1). Aby rozwiązać ten problem, treści wewnątrz fragmentu muszą zastąpić aktywne wyszukiwanie, na przykład użycie RowsSupportFragment. Nie można użyć funkcji BrowseSupportFragment w karcie, ponieważ ma ona zastąpioną metodę wyszukiwania zaznaczenia, która uniemożliwia przeniesienie zaznaczenia na kartę.

Rysunek 1. Przycisk w górę na padzie kierunkowym przenosi zaznaczenie na kartę, a nie na poprzedzający element.