在 Android TV 上使用 Jetpack Compose

Compose for TV 是构建 Android TV 的新颖方法 界面。Compose for TV 充分发挥 Android 的 Jetpack Compose 的优势, TV 应用,从而为应用构建功能强大且美观出众的界面 。

使用 Compose for TV 的一些具体优势包括:

  • 灵活性:Compose 可用于创建任何类型的界面,包括简单的界面 以及复杂的动画组件开箱即可使用,但也可以 进行自定义和设置样式,以满足应用的需求。
  • 简体中文与加速开发:Compose 与 让开发者能够更高效地构建应用 可以减少代码量。
  • 直观:Compose 使用声明式语法, 更改界面,调试、理解和审核您的代码。

如果您不熟悉如何使用 Jetpack Compose 工具包,请查看 Compose 开发者在线课程。很多 Compose 移动设备开发原则同样适用于 TV。了解原因 Compose 有关声明式界面框架一般优势的信息。学习内容 另请参阅适用于 GitHub 上的 TV 示例代码库

兼容性

Compose for TV 适用于搭载 Android 5.0(API 级别 21)或更高版本的 Android TV。 若要使用 Compose for TV 1.0 版,必须安装 androidx.compose 库 和 Kotlin 1.7.10。

设置

在 Android TV 上使用 Jetpack Compose 与将 Jetpack Compose 用于 其他 Android 项目主要区别在于 Compose for TV 添加了一些库,这些库可提供针对 TV 优化的组件,并使创建 为电视量身打造的用户界面在某些情况下,这些组件 与电视对应的非电视版本对应的名称,例如 androidx.tv.material3.Buttonandroidx.compose.material3.Button

Jetpack Compose 工具包依赖项

如需使用 Compose for TV,请添加 Jetpack Compose 工具包 依赖项添加到应用的 build.gradle 文件中,如下所示:

Kotlin

dependencies {
   val composeBom = platform("androidx.compose:compose-bom:2024.06.00")
   implementation(composeBom)

   // General compose dependencies.
   implementation("androidx.activity:activity-compose:1.9.0")

   implementation("androidx.compose.ui:ui-tooling-preview")
   debugImplementation("androidx.compose.ui:ui-tooling")

   // Compose for TV dependencies.
   implementation("androidx.tv:tv-material:1.0.0-rc01")
}

Groovy

dependencies {
   def composeBom = platform('androidx.compose:compose-bom:2024.06.00')
   implementation composeBom

   // General compose dependencies.
   implementation 'androidx.activity:activity-compose:1.9.0'

   implementation 'androidx.compose.ui:ui-tooling-preview'
   debugImplementation 'androidx.compose.ui:ui-tooling'

   // Compose for TV dependencies.
   implementation 'androidx.tv:tv-material:1.0.0-rc01'
}

不同之处

TV Material 组件专门针对客厅设计,焦点清晰 指示器方便远程使用的输入行为。如需详细了解 如需使用这些特定组件,请参阅 TV 界面设计指南

图 1. TV Material 库中的示例组件。

尽可能使用 TV 版的 API,从中受益 这些功能。

虽然从技术层面来讲,可以使用移动版 Compose Material, 它没有针对 Android TV 上独特的互动方式进行优化。在 将 Compose Material 与 Compose Material 结合使用, Compose for TV 可能会导致意外行为。例如: 因为每个库都有自己的 MaterialTheme 对象,所以有可能 颜色、排版或形状不一致的情况。

下表概述了 TV 与 移动设备:

TV 依赖项
(androidx.tv.*)
比较 移动设备依赖项
(androidx.compose.*)
androidx.tv:tv-material 代替 androidx.compose.material3:material3

其他资源

深入阅读

请浏览以下指南,了解如何针对以下平台打造针对电视优化的出色体验: