बंद किए जा चुके Leanback यूज़र इंटरफ़ेस (यूआई) टूलकिट में, टीवी के लिए खास तौर पर बनाई गई कुछ लाइब्रेरी उपलब्ध हैं. ये लाइब्रेरी, Android TV OS के लिए बनाए गए ऐप्लिकेशन के लिए ही उपलब्ध हैं. इन लाइब्रेरी में ये शामिल हैं:
- Leanback लाइब्रेरी: यह यूज़र इंटरफ़ेस (यूआई) टेंप्लेट उपलब्ध कराती है. इससे Android TV ऐप्लिकेशन बनाना आसान हो जाता है.
- Leanback Preferences लाइब्रेरी: यह प्लैटफ़ॉर्म के हिसाब से, सेटिंग और प्राथमिकताओं वाली स्क्रीन उपलब्ध कराती है. हालांकि, इन्हें आपके ऐप्लिकेशन के हिसाब से थीम दी जा सकती है.
- Leanback Paging लाइब्रेरी: यह
ObjectAdapters
के लिए AndroidX पेजिंग मॉडल के साथ काम करती है. इनका इस्तेमाल आम तौर पर Leanback टेंप्लेट के साथ किया जाता है. - Leanback Tabs लाइब्रेरी: यह Android TV पर टैब वाले नेविगेशन की सुविधा देती है.
Leanback Paging Library
Leanback यूज़र इंटरफ़ेस (यूआई) टूलकिट में पेजिंग की सुविधा, AndroidX Paging 3 लाइब्रेरी की तरह ही काम करती है. इससे RecyclerView.Adapter
में पेजिंग की सुविधा जोड़ना आसान हो जाता है.
Leanback Paging लाइब्रेरी के साथ, आम तौर पर ObjectAdapter
को अडैप्टर के तौर पर इस्तेमाल किया जाता है. इसलिए, लाइब्रेरी ObjectAdapter
में पेजिंग की सुविधा जोड़ती है.
अपने ऐप्लिकेशन में पेजिंग अडैप्टर जोड़ने के लिए, सबसे पहले अपने प्रोजेक्ट में लाइब्रेरी की डिपेंडेंसी जोड़ें:
implementation "androidx.leanback:leanback-paging:$version"
इसके बाद, androidx.paging.PagingDataAdapter
के बजाय androidx.leanback.paging.PagingDataAdapter
का इस्तेमाल करके, Paging 3 के दस्तावेज़ में दिए गए निर्देशों का पालन करें. फ़र्क़ सिर्फ़ इतना है कि अब Presenter
या PresenterSelector
पास किया जा सकता है.
यह सुविधा, उन सभी जगहों पर काम करती है जहां आम तौर पर ObjectAdapter
का इस्तेमाल किया जाता है. जैसे, 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 लाइब्रेरी
Leanback UI टूलकिट के टेंप्लेट, ब्राउज़ स्क्रीन में साइड नेविगेशन की सुविधा देते हैं. ऐप्लिकेशन में सबसे ऊपर हॉरिज़ॉन्टल तौर पर टैब की एक लाइन जोड़ने के लिए, Leanback टैब का इस्तेमाल किया जा सकता है.
अपने प्रोजेक्ट में लाइब्रेरी की डिपेंडेंसी जोड़ें:
implementation "androidx.leanback:leanback-tab:$version"
इसके बाद, LeanbackTabLayout
और LeanbackViewPager
का इस्तेमाल करके टैब लागू करें. इसके लिए, ViewPager गाइड में दिए गए निर्देशों का पालन करें. ध्यान दें कि LeanbackViewPager
, ViewPager
पर आधारित है, न कि ViewPager2
पर.
यहां एक उदाहरण दिया गया है:
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);
सीमाएं
Leanback Tabs लाइब्रेरी में, थीम इस्तेमाल करने और फ़ोकस को एक जगह से दूसरी जगह ले जाने से जुड़ी कुछ सीमाएं हैं.
इन थीम के साथ काम करता है
सिर्फ़ Theme.AppCompat
से बनाए गए थीम इस्तेमाल किए जा सकते हैं. TabLayout
में थीम लागू करने से जुड़ी पाबंदी है. इसलिए, Theme.AppCompat
की किसी भी नॉनडिसेंडेंट थीम का इस्तेमाल नहीं किया जा सकता. Leanback यूज़र इंटरफ़ेस (यूआई) टूलकिट के लिए, ब्रिज थीम का भी इस्तेमाल किया जा सकता है.
टैब से सबसे ऊपर मौजूद विकल्पों पर फ़ोकस ले जाना
जब लेआउट की ऊंचाई, स्क्रीन की ऊंचाई से ज़्यादा होती है और डी-पैड के ऊपर वाले बटन को दबाया जाता है, तो कंट्रोल फ़्रैगमेंट में रहने के बजाय टैब पर वापस चला जाता है. साथ ही, यह उसके ऊपर मौजूद किसी आइटम पर नेविगेट नहीं करता (पहला फ़िगर देखें). इस समस्या को हल करने के लिए, फ़्रैगमेंट में मौजूद कॉन्टेंट को फ़ोकस सर्च को ओवरराइड करना होगा. उदाहरण के लिए, RowsSupportFragment
का इस्तेमाल करें.
BrowseSupportFragment
का इस्तेमाल किसी टैब में नहीं किया जा सकता, क्योंकि इसमें फ़ोकस सर्च करने का तरीका बदला गया है. इससे फ़ोकस को वापस टैब पर ले जाने में समस्या आती है.