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

Compose ile daha iyi uygulamalar geliştirin
Android TV OS için Jetpack Compose'u kullanarak minimum kodla güzel kullanıcı arayüzleri oluşturun.

Desteği sonlandırılan Leanback UI araç seti, Android TV OS için geliştirilen uygulamalara özel bazı TV'ye özgü 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 Tercihleri kitaplığı: Platformla tutarlı olan ancak uygulamanıza uyacak şekilde temalandırılabilen tercih ve ayarlar ekranları sağlar.
  • Leanback Paging kitaplığı: Genellikle Leanback şablonlarıyla kullanılan ObjectAdapters için AndroidX sayfalama modelini destekler.
  • Leanback Tabs kitaplığı: Android TV'de sekmeli gezinmeyi destekler.

Leanback sayfa ayırma kitaplığı

Leanback kullanıcı arayüzü araç setindeki sayfalama, AndroidX Paging 3 kitaplığıyla aynı şekilde çalışır. Bu kitaplık, RecyclerView.Adapter öğesine sayfalama eklemeyi kolaylaştırır. Leanback Paging kitaplığıyla, gösterilen bağdaştırıcı genellikle ObjectAdapter olur. Bu nedenle kitaplık, ObjectAdapter'ye sayfalama 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 Paging 3 belgelerini uygulayın. Tek fark, artık Presenter veya PresenterSelector iletebiliyor olmanızdır. Bu kısayol, normalde ObjectAdapter kullandığı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 Tabs 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ılavuzunu izleyerek LeanbackTabLayout ve LeanbackViewPager kullanarak sekmeleri uygulayın. Unutmayın:LeanbackViewPager, ViewPager2 değil, ViewPager temel alınarak hesaplanır.

Aşağıda 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 Tabs kitaplığının desteklediği temalar ve odak hareketinin işlenme şekliyle ilgili sınırlamalar vardır.

Desteklenen temalar

Yalnızca Theme.AppCompat kaynağından türetilen temalar desteklenir. TabLayout Theme.AppCompat öğesinin alt öğesi olmayan temaların kullanılmasını engelleyen bir tema zorlama kısıtlaması içeriyor. Leanback kullanıcı arayüzü araç seti için köprü temasını da kullanabilirsiniz.

Sekmelerden üste odaklanma

Düzen yüksekliği ekran yüksekliğinden büyük olduğunda ve D-pad yukarı düğmesine bastığınızda kontrol, parçanın içinde kalıp üstündeki bir öğeye gitmek yerine sekmeye geri döner (bkz. Şekil 1). Bu sorunu çözmek 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 odak arama yöntemine sahip olduğundan sekme içinde kullanılamaz.

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