ערכת הכלים לבניית ממשק משתמש ל-Leanback מספקת כמה ספריות ספציפיות לטלוויזיה בלעדיות אפליקציות שפותחו עבור מערכת הפעלה של Android TV. הספריות האלה כוללות את התכנים הבאים:
- ספריית Leanback: מספקת תבניות של ממשק משתמש מפשטים את היצירה של אפליקציות ל-Android TV.
- העדפות ל-Leanback הספרייה: מספקת מסכי הגדרות והעדפות שתואמים ל- הפלטפורמה, אבל ניתן לעצב אותו כך שיתאים לאפליקציה.
- ספריית Leanback Paging: תומכת
מודל חלוקה לדפים של AndroidX עבור
ObjectAdapters
, שנמצאים בדרך כלל עם תבניות Leanback. - ספריית Leanback Tabs: תמיכה בכרטיסיות ניווט ב-Android TV.
ספריית דפדוף ב-Leanback
החלוקה לדפים בערכת הכלים של ממשק המשתמש ל-Leanback פועלת כמו ב-AndroidX
Paging 3,
מפשט את ההוספה של החלוקה לדפים
RecyclerView.Adapter
.
באמצעות ספריית Leanback Paging, המתאם שחשוף הוא בדרך כלל
ObjectAdapter
במקום זאת, הספרייה מוסיפה תמיכה במעבר ל-ObjectAdapter
.
כדי להוסיף מתאם דפים לאפליקציה, קודם צריך להוסיף את התלות של הספרייה לפרויקט:
implementation "androidx.leanback:leanback-paging:$version"
לאחר מכן פועלים לפי
דף תיעוד שלישי באמצעות
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' יש מגבלות בעיצובים שהיא תומכת בהם ובמידת המיקוד היא מטופלת.
עיצובים נתמכים
יש תמיכה רק בעיצובים שמקורם ב-Theme.AppCompat
. TabLayout
מכיל מגבלה של אכיפת העיצוב, שמונעת עיצוב שאינו צאצא.
מתוך Theme.AppCompat
בשימוש. אפשר גם להשתמש ב'עיצוב גשר' עבור
ערכת כלים לבניית ממשק משתמש ל-Leanback.
מיקוד התנועה מכרטיסיות לראש המסך
כשגובה הפריסה גדול מגובה המסך ולוחצים על מקשי החיצים
הלחצן 'למעלה', הבקרה עוברת חזרה לכרטיסייה במקום להישאר בתוך המקטע
ומנווטים לפריט שנמצא מעליו (ראו איור 1). כדי לטפל בבעיה הזו, פריטי התוכן
בתוך המקטע חייב לבטל את חיפוש המיקוד; לדוגמה, להשתמש
RowsSupportFragment
BrowseSupportFragment
לא ניתן להשתמש בה בתוך כרטיסייה כי יש בה שיטת חיפוש למיקוד שבוטלה,
מונע מהמיקוד לחזור לכרטיסייה.