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.