Leanback kullanıcı arayüzü araç kiti kitaplıkları

Compose ile daha iyi hizmet verin
Android TV OS için Jetpack Compose'u kullanarak minimum kodla etkileyici kullanıcı arayüzleri oluşturun.

Leanback kullanıcı arayüzü araç seti, TV'ye özgü bazı kitaplıklar sayesinde Android TV OS için geliştirilen uygulamalar. Bu kitaplıklar şunları içerir:

  • Leanback kitaplığı: Şu özelliklere sahip kullanıcı arayüzü şablonları Android TV uygulamaları oluşturmayı kolaylaştırır.
  • Leanback Tercihleri kitaplık: Projeniz, standartlarla tutarlı tercihler ve ayar uygulamanızla eşleşecek şekilde temalı olabilir.
  • Leanback Paging kitaplığı: ObjectAdapters için AndroidX sayfalama modeli. Bu model genellikle Leanback şablonları.
  • Leanback Sekmeleri kitaplığı: sekmeli desteği destekler Android TV'de gezinme.

Leanback sayfalama kitaplığı

Leanback kullanıcı arayüzü araç setinde gezinme, AndroidX ile aynı şekilde çalışır Sayfa 3 kitaplığı, bir sayfaya sayfa oluşturma eklemeyi basitleştirir RecyclerView.Adapter. Leanback Paging kitaplığıyla, açığa çıkan adaptör genellikle ObjectAdapter bunun yerine kitaplık, ObjectAdapter öğesine sayfa oluşturma desteği ekler.

Uygulamanıza sayfalama bağdaştırıcısı eklemek için önce kitaplık bağımlılığını projenize ekleyin:

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

Daha sonra, 3. belgeyi - androidx.leanback.paging.PagingDataAdapter androidx.paging.PagingDataAdapter. Aradaki tek fark: Presenter geçmek için veya PresenterSelector. Bu, normal şartlarda ObjectAdapter kullanacağınız her yerde çalışır; örneğin 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 Sekmeleri kitaplığı

Leanback kullanıcı arayüzü araç seti şablonları, ekrana göz atın. Bir sekme satırını yatay olarak eklemek için uygulamanın üst kısmında görünenler yerine Leanback Sekmelerini kullanabilirsiniz.

Kitaplık bağımlılığını projenize ekleyin:

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

Ardından LeanbackTabLayout ve LeanbackViewPager kullanarak sekmeleri uygulayın. Mevcut ViewPager kılavuzu. Lütfen LeanbackViewPager, ViewPager2 değil ViewPager temel alınarak oluşturulmuştur.

Aşağıda bununla ilgili bir örnek verilmiştir:

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

Sınırlamalar

Leanback Sekmeleri kitaplığının desteklediği temalarda ve odağın nasıl işlediğini tartıştık.

Desteklenen temalar

Yalnızca Theme.AppCompat üzerinden türetilen temalar desteklenir. TabLayout. alt öğe olmayan temaları önleyen bir tema yaptırım kısıtlaması içerdiğinde Theme.AppCompat depolama alanının kullanılması engellendi. Şu öğe için köprü temasını da kullanabilirsiniz: Leanback kullanıcı arayüzü araç seti.

Sekmelerden yukarıya doğru harekete odaklan

Düzen yüksekliği ekran yüksekliğinden fazla olduğunda ve D-pad'e bastığınızda yukarı düğmesi, kontrol, parçanın içinde kalmak yerine sekmeye geri gider bir öğeye gidin (bkz. Şekil 1). Bu sorunu ele almak için içerik içinde, odak aramasını geçersiz kılması gerekir; örneğin, RowsSupportFragment. BrowseSupportFragment geçersiz kılınmış olan odaklanma arama yöntemine sahip olduğu için sekme içinde kullanılamaz odağın sekmeye geri dönmesini engeller.

Şekil 1. D-pad yukarı düğmesi, odağı önceki öğe yerine sekmeye taşır.