Leanback kullanıcı arayüzü araç seti, TV'ye özgü bazı kitaplıklar sayesinde Android TV OS için geliştirilen uygulamalar. Bu kitaplıklar şunları içerir:
- Leanback kitaplığı: Şu özelliklere sahip kullanıcı arayüzü şablonları Android TV uygulamaları oluşturmayı kolaylaştırır.
- Leanback Tercihleri kitaplık: Projeniz, standartlarla tutarlı tercihler ve ayar uygulamanızla eşleşecek şekilde temalı olabilir.
- Leanback Paging kitaplığı:
ObjectAdapters
için AndroidX sayfalama modeli. Bu model genellikle Leanback şablonları. - Leanback Sekmeleri kitaplığı: sekmeli desteği destekler Android TV'de gezinme.
Leanback sayfalama kitaplığı
Leanback kullanıcı arayüzü araç setinde gezinme, AndroidX ile aynı şekilde çalışır
Sayfa 3 kitaplığı,
bir sayfaya sayfa oluşturma eklemeyi basitleştirir
RecyclerView.Adapter
.
Leanback Paging kitaplığıyla, açığa çıkan adaptör genellikle
ObjectAdapter
bunun yerine 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"
Daha sonra,
3. belgeyi
- androidx.leanback.paging.PagingDataAdapter
androidx.paging.PagingDataAdapter
. Aradaki tek fark:
Presenter
geçmek için
veya
PresenterSelector
.
Bu, normal şartlarda ObjectAdapter
kullanacağı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 Sekmeleri kitaplığı
Leanback kullanıcı arayüzü araç seti şablonları, ekrana göz atın. Bir sekme satırını yatay olarak eklemek için uygulamanın üst kısmında görünenler yerine Leanback Sekmelerini kullanabilirsiniz.
Kitaplık bağımlılığını projenize ekleyin:
implementation "androidx.leanback:leanback-tab:$version"
Ardından LeanbackTabLayout
ve LeanbackViewPager
kullanarak sekmeleri uygulayın.
Mevcut
ViewPager kılavuzu. Lütfen
LeanbackViewPager
, ViewPager2
değil ViewPager
temel alınarak oluşturulmuştur.
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 temalarda ve odağın nasıl işlediğini tartıştık.
Desteklenen temalar
Yalnızca Theme.AppCompat
üzerinden türetilen temalar desteklenir. TabLayout
.
alt öğe olmayan temaları önleyen bir tema yaptırım kısıtlaması içerdiğinde
Theme.AppCompat
depolama alanının kullanılması engellendi. Şu öğe için köprü temasını da kullanabilirsiniz:
Leanback kullanıcı arayüzü araç seti.
Sekmelerden yukarıya doğru harekete odaklan
Düzen yüksekliği ekran yüksekliğinden fazla olduğunda ve D-pad'e bastığınızda
yukarı düğmesi, kontrol, parçanın içinde kalmak yerine sekmeye geri gider
bir öğeye gidin (bkz. Şekil 1). Bu sorunu ele almak için içerik
içinde, odak aramasını geçersiz kılması gerekir; örneğin,
RowsSupportFragment
.
BrowseSupportFragment
geçersiz kılınmış olan odaklanma arama yöntemine sahip olduğu için sekme içinde kullanılamaz
odağın sekmeye geri dönmesini engeller.