Leanback-UI-Toolkit-Bibliotheken

Besser lernen mit der Funktion „Schreiben“
Mit Jetpack Compose für Android TV OS lassen sich mit nur minimalem Code ansprechende UIs erstellen.
<ph type="x-smartling-placeholder"></ph> Für TV verfassen →

Das Leanback-UI-Toolkit bietet einige TV-spezifische Bibliotheken, die exklusiv für Apps, die für Android TV OS entwickelt wurden Zu diesen Bibliotheken gehören:

  • Leanback-Bibliothek: stellt UI-Vorlagen bereit, die das Erstellen von Android TV-Apps zu vereinfachen.
  • Leanback-Einstellungen Bibliothek: Hier finden Sie Einstellungen, die den Bildschirmen aber auch thematisch passend zu Ihrer App gestalten.
  • Leanback-Seitenging-Bibliothek: unterstützt die Das AndroidX-Auslagerungsmodell für ObjectAdapters, das häufig mit dem Leanback-Vorlagen.
  • Leanback Tabs-Bibliothek: unterstützt Tabs Navigation auf Android TV.

Leanback-Paging-Bibliothek

Das Paging im Leanback-UI-Toolkit funktioniert genauso wie im AndroidX-Toolkit. Page 3-Bibliothek, die vereinfacht das Hinzufügen von Paging zu einem RecyclerView.Adapter Bei der Leanback-Seitenbibliothek ist der dargestellte Adapter in der Regel ein ObjectAdapter sodass die Bibliothek die Paging-Unterstützung für ObjectAdapter hinzufügt.

Um Ihrer App einen Paging-Adapter hinzuzufügen, fügen Sie zuerst die Bibliotheksabhängigkeit zu Ihrem Projekt hinzu:

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

Folgen Sie dann den Dokumentation für Seite 3 mit androidx.leanback.paging.PagingDataAdapter statt androidx.paging.PagingDataAdapter. Der einzige Unterschied ist, dass Sie jetzt um eine Presenter zu übergeben. oder PresenterSelector Das funktioniert überall dort, wo Sie normalerweise ObjectAdapter verwenden, z. B. in einer 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);

Leanback-Tabs-Bibliothek

Die Toolkit-Vorlagen für die Leanback-Benutzeroberfläche ermöglichen eine seitliche Navigation im Bildschirm ansehen. So fügen Sie eine Reihe von Tabs horizontal hinzu: im oberen Bereich der App kannst du stattdessen Leanback-Tabs verwenden.

Fügen Sie Ihrem Projekt die Bibliotheksabhängigkeit hinzu:

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

Implementieren Sie dann Tabs mithilfe von LeanbackTabLayout und LeanbackViewPager, indem Sie den vorhandenen ViewPager-Anleitung Beachten Sie, dass LeanbackViewPager basiert auf ViewPager, nicht auf ViewPager2.

Hier ein Beispiel:

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

Beschränkungen

Die Leanback-Tabs-Bibliothek weist Einschränkungen hinsichtlich der unterstützten Designs und der Fokussierung auf. gehandhabt wird.

Unterstützte Designs

Es werden nur aus Theme.AppCompat abgeleitete Themen unterstützt. TabLayout enthält eine Erzwingungseinschränkung für das Design, die verhindert, dass nicht untergeordnete Designs von Theme.AppCompat nicht verwendet werden. Sie können das Brückendesign auch für die Leanback-UI-Toolkit

Bewegung von Tabs nach oben fokussieren

Wenn die Layouthöhe größer als die Bildschirmhöhe ist und Sie das Steuerkreuz drücken wird das Steuerelement zurück zum Tab verschoben, anstatt innerhalb des Fragments zu bleiben. und zu einem darüber liegenden Element navigieren (siehe Abbildung 1). Um dieses Problem zu beheben, innerhalb des Fragments die Fokussuche überschreiben; Verwenden Sie zum Beispiel RowsSupportFragment BrowseSupportFragment kann nicht innerhalb eines Tabs verwendet werden, da dieser eine überschriebene Fokussuchmethode hat, verhindert, dass der Fokus wieder auf den Tab verschoben wird.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Die Schaltfläche „Nach oben“ des Steuerkreuzes verschiebt den Fokus auf einen Tab statt auf das vorherige Element.