Leanback UI टूलकिट Android TV OS के लिए डेवलप किए गए ऐप्लिकेशन. इन लाइब्रेरी में ये शामिल हैं:
- Leanback लाइब्रेरी: इसमें ऐसे यूज़र इंटरफ़ेस (यूआई) टेंप्लेट दिए गए हैं जो इससे Android TV ऐप्लिकेशन आसानी से बनाए जा सकते हैं.
- लीनबैक प्राथमिकताएं लाइब्रेरी: ऐसी प्राथमिकताएं और सेटिंग स्क्रीन उपलब्ध कराती है जो से मेल खाती हो. हालांकि, इसकी थीम आपके ऐप्लिकेशन के हिसाब से हो सकती है.
- Leanback पेजिंग लाइब्रेरी:
ObjectAdapters
के लिए AndroidX पेजिंग मॉडल, जिसे आम तौर पर Leanback टेम्प्लेट. - Leanback टैब लाइब्रेरी: टैब किए गए टैब के साथ काम करता है Android TV पर नेविगेट करें.
Leanback पेजिंग लाइब्रेरी
Leanback यूज़र इंटरफ़ेस (यूआई) टूलकिट के अंदर पेज करना, AndroidX की तरह ही काम करता है
लाइब्रेरी पेज 3, जो
यह किसी फ़ाइल में पेजिंग जोड़ना आसान बनाता है
RecyclerView.Adapter
.
Leanback पेजिंग लाइब्रेरी के साथ, दिख रहा अडैप्टर आमतौर पर
ObjectAdapter
इसलिए, लाइब्रेरी ObjectAdapter
में पेजिंग की सुविधा जोड़ देती है.
अपने ऐप्लिकेशन में पेजिंग अडैप्टर जोड़ने के लिए, पहले अपने प्रोजेक्ट में लाइब्रेरी डिपेंडेंसी जोड़ें:
implementation "androidx.leanback:leanback-paging:$version"
इसके बाद,
इसका इस्तेमाल करके पेज 3 से जुड़ा दस्तावेज़
के बजाय androidx.leanback.paging.PagingDataAdapter
androidx.paging.PagingDataAdapter
. बस अंतर यह है कि अब आपके पास कम से कम
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 टैब लाइब्रेरी
Leanback यूज़र इंटरफ़ेस (यूआई) टूलकिट टेंप्लेट, आपको स्क्रीन ब्राउज़ करें. टैब की पंक्ति को हॉरिज़ॉन्टल तौर पर जोड़ने के लिए ऐप्लिकेशन के शीर्ष पर, इसके बजाय आप इसके बजाय 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
इसका इस्तेमाल टैब के अंदर नहीं किया जा सकता क्योंकि इसमें एक ओवरराइड किया हुआ फ़ोकस खोज तरीका है जो
फ़ोकस को वापस टैब पर जाने से रोकता है.