Leanback UI 툴킷 라이브러리

Compose를 사용하여 더 효과적으로 빌드
Android TV OS용 Jetpack Compose를 사용하여 최소한의 코드로 멋진 UI를 만드세요.
<ph type="x-smartling-placeholder"></ph> TV용 Compose → 를 통해 개인정보처리방침을 정의할 수 있습니다.

Leanback UI 툴킷은 Android TV OS용으로 개발된 앱입니다. 이러한 라이브러리에는 다음이 포함됩니다.

  • Leanback 라이브러리: 웹 UI에 최적화되어 있는 Android TV 앱 제작을 간소화할 수 있습니다.
  • Leanback 환경설정 라이브러리: 기본 제공 및 설정 화면과 일관성 있는 앱에 맞게 테마를 설정할 수 있습니다.
  • Leanback Paging 라이브러리: ObjectAdapters용 AndroidX 페이징 모델이며, 이는 일반적으로 다음과 함께 사용됩니다. Leanback 템플릿
  • Leanback 탭 라이브러리: 탭 형식 지원 Android TV의 내비게이션

Leanback 페이징 라이브러리

Leanback UI 도구 키트 내의 Paging은 AndroidX와 동일하게 작동합니다. Paging 3 라이브러리: 페이지에 페이징을 추가하는 작업을 RecyclerView.Adapter Leanback Paging 라이브러리를 사용하면 노출되는 어댑터는 일반적으로 ObjectAdapter 드림 대신 라이브러리는 ObjectAdapter에 페이징 지원을 추가합니다.

페이징 어댑터를 앱에 추가하려면 먼저 프로젝트에 라이브러리 종속 항목을 추가합니다.

implementation "androidx.leanback:leanback-paging:$version"

그런 다음 다음을 사용한 Paging 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)

자바

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 UI 툴킷 템플릿은 탐색 화면. 탭 행을 가로로 추가하기 Leanback 탭을 대신 사용할 수 있습니다.

프로젝트에 라이브러리 종속 항목을 추가합니다.

implementation "androidx.leanback:leanback-tab:$version"

그런 다음 다음과 같이 LeanbackTabLayoutLeanbackViewPager를 사용하여 탭을 구현합니다. 기존 ViewPager 가이드. 참고: LeanbackViewPagerViewPager2가 아닌 ViewPager에 기반합니다.

예를 들면 다음과 같습니다.

Kotlin

val leanbackTabLayout = findViewById<LeanbackTabLayout>(R.id.tab_layout)
val leanbackViewPager = findViewById<LeanbackViewPager>(R.id.view_pager)

leanbackViewPager.setAdapter(adapter)
leanbackTabLayout.setupWithViewPager(leanbackViewPager)

자바

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 UI 툴킷입니다.

탭에서 위로 포커스 이동

레이아웃 높이가 화면 높이보다 크고 D패드를 누를 경우 위로 버튼, 컨트롤이 프래그먼트 내부에 머무르지 않고 탭으로 다시 이동함 그 위의 항목으로 이동합니다 (그림 1 참고). 이 문제를 처리하기 위해 프래그먼트 내에서 포커스 검색을 재정의해야 합니다. 예를 들어 RowsSupportFragment BrowseSupportFragment 드림 재정의된 포커스 검색 메서드가 있으므로 탭 내에서 사용할 수 없습니다. 포커스가 탭으로 다시 이동하지 못하게 합니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">
</ph> 그림 1. D패드 위쪽 버튼을 누르면 이전 항목 대신 탭으로 포커스가 이동합니다.