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.