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"
그런 다음 다음과 같이 LeanbackTabLayout
및 LeanbackViewPager
를 사용하여 탭을 구현합니다.
기존
ViewPager 가이드. 참고:
LeanbackViewPager
는 ViewPager2
가 아닌 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
드림
재정의된 포커스 검색 메서드가 있으므로 탭 내에서 사용할 수 없습니다.
포커스가 탭으로 다시 이동하지 못하게 합니다.