ספריות של ערכות הכלים לבניית ממשק משתמש ל-Leanback

משפרים את הפיתוח באמצעות 'כתיבה'
בעזרת 'Jetpack פיתוח נייטיב' ל-Android TV תוכלו ליצור ממשקי משתמש יפהפיים עם כמה שפחות קוד.

ערכת הכלים לבניית ממשק משתמש ל-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 לא ניתן להשתמש בה בתוך כרטיסייה כי יש בה שיטת חיפוש למיקוד שבוטלה, מונע מהמיקוד לחזור לכרטיסייה.

איור 1. לחצן D-pad מעביר את המיקוד לכרטיסייה במקום לפריט הקודם.