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

Leanback kullanıcı arayüzü araç seti, Android TV OS için geliştirilen uygulamalara özel bazı TV'ye özgü kitaplıklar sağlar. Bu kitaplıklar aşağıdakileri 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 teması seçilebilen tercihler ve ayar ekranları sağlar.
  • Leanback Paging kitaplığı: ObjectAdapters için genellikle Leanback şablonlarında kullanılan AndroidX sayfa oluşturma modelini destekler.
  • Leanback Tabs kitaplığı: Android TV'de sekmeli gezinmeyi destekler.

Leanback Paging kitaplığı

Leanback kullanıcı arayüzü araç kiti içindeki sayfalama, AndroidX Paging 3 kitaplığıyla aynı şekilde çalışır. Bu kitaplık, RecyclerView.Adapter'a sayfa oluşturmayı kolaylaştırır. Leanback Paging kitaplığıyla, açığa çıkan bağdaştırıcı genellikle bir ObjectAdapter olur. Bu nedenle kitaplık, ObjectAdapter öğesine sayfalama desteği ekler.

Uygulamanıza sayfa 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, androidx.paging.PagingDataAdapter yerine androidx.leanback.paging.PagingDataAdapter kullanarak 3. çağrı dokümanlarındaki adımları uygulayın. Tek fark, artık Presenter veya PresenterSelector geçebilmeniz. Bu işlem, ListRow gibi normalde ObjectAdapter kullandığı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 olanağı sağlar. Bir sekme satırını uygulamanın üst kısmına yatay olarak 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 rehberini izleyerek sekmeleri LeanbackTabLayout ve LeanbackViewPager kullanarak uygulayın. LeanbackViewPager değerinin ViewPager2 yerine ViewPager temel alınarak oluşturulacağını unutmayın.

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 Sekmeleri kitaplığının desteklediği temalar ve odaklama hareketinin nasıl ele alındığı konusunda sınırlamalar vardır.

Desteklenen temalar

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

Sekmelerden üste harekete odaklanın

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 kalıp üzerindeki bir öğeye gitmek yerine sekmeye geri gider (şekil 1'e bakın). Bu sorunu çözmek için parçanın içindeki içeriklerin odak araması geçersiz kılması gerekir (ör. RowsSupportFragment kullanın). BrowseSupportFragment, odağın sekmeye geri taşınmasını 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şır.