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, Android TV OS için geliştirilen uygulamalara özel TV'ye özel bazı kitaplıklar sağlar. Bu kitaplıklar şunları içerir:

  • Leanback kitaplığı: Android TV uygulamaları oluşturmayı kolaylaştıran kullanıcı arayüzü şablonları sağlar.
  • Leanback Preferences kitaplığı: Platformla tutarlı olan ancak uygulamanızla eşleşecek şekilde temalı olabilen tercihler ve ayar ekranları sağlar.
  • Leanback Paging kitaplığı: ObjectAdapters için genellikle Leanback şablonlarıyla kullanılan AndroidX sayfalama modelini destekler.
  • Leanback Sekmeleri kitaplığı: Android TV'de sekmeli gezinmeyi destekler.

Leanback sayfalama kitaplığı

Leanback kullanıcı arayüzü araç setinin içinde gezinme, AndroidX Paging 3 kitaplığıyla aynı şekilde çalışır. Bu kitaplık, RecyclerView.Adapter'a sayfalama eklemeyi kolaylaştırır. Leanback Paging kitaplığıyla, açığa çıkan bağdaştırıcı genellikle ObjectAdapter olur. Bu nedenle 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"

Ardından androidx.paging.PagingDataAdapter yerine androidx.leanback.paging.PagingDataAdapter kullanarak 3. sayfa belgelerindeki talimatları uygulayın. Tek fark, artık bir Presenter veya PresenterSelector sınavından geçebilmenizdir. Bu, ListRow gibi normalde ObjectAdapter kullanacağınız her yerde çalışır:

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ı, göz atma ekranında yan gezinme sağlar. Uygulamanın üst kısmına yatay olarak bir sekme satırı eklemek için bunun yerine Leanback Sekmelerini kullanabilirsiniz.

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

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

Ardından, mevcut ViewPager kılavuzundaki talimatları uygulayarak LeanbackTabLayout ve LeanbackViewPager kullanarak sekmeleri uygulayın. LeanbackViewPager işlevinin ViewPager2 temelini değil, ViewPager değerini temel aldığını unutmayın.

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 temalar ve odak hareketinin nasıl işlendiğiyle ilgili sınırlamalar vardır.

Desteklenen temalar

Yalnızca Theme.AppCompat üzerinden türetilen temalar desteklenir. TabLayout, Theme.AppCompat öğesine ait alt olmayan temaların kullanılmasını engelleyen bir tema yaptırım kısıtlaması içeriyor. Leanback kullanıcı arayüzü araç seti için köprü temasını da kullanabilirsiniz.

Sekmelerden yukarıya doğru harekete odaklan

Düzen yüksekliği ekran yüksekliğinden fazla olduğunda ve D-pad yukarı düğmesine bastığınızda kontrol, parçanın içinde kalmak ve onun üzerindeki bir öğeye gitmek yerine sekmeye geri döner (bkz. Şekil 1). Bu sorunu işlemek için parçanın içindeki içeriklerin, odak aramasını geçersiz kılması gerekir. Örneğin, RowsSupportFragment kullanın. BrowseSupportFragment, odağın sekmeye geri dönmesini engelleyen geçersiz kılınmış bir odaklı arama yöntemine sahip olduğundan sekme içinde kullanılamaz.

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