基于 Compose 的界面使用入门

添加依赖项

Media3 库包含两个基于 Jetpack Compose 的界面模块。您无需同时添加这两个依赖项,因为 Material3 依赖项依赖于核心依赖项。

Kotlin

// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.9.0")
implementation("androidx.media3:media3-ui-compose-material3:1.9.0")

Groovy

// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.9.0"
implementation "androidx.media3:media3-ui-compose-material3:1.9.0"

我们强烈建议您以“Compose 优先”的方式开发应用,或从使用 View 进行迁移

完全采用 Compose 的演示应用

虽然 media3-ui-compose 库不包含开箱即用的可组合项(例如按钮、指示器、图片或对话框),但您可以找到一个完全使用 Compose 编写的演示应用,该应用避免了任何互操作性解决方案,例如将 PlayerView 封装在 AndroidView 中。此演示应用利用 media3-ui-compose 模块中的界面状态持有者类,并使用 Compose Material3 库。

我需要哪个库?

您可以根据所需的自定义程度,在两个 Media3 Compose 库之间进行选择。为了了解这两者的区别,不妨考虑一下界面状态生成流水线Business logic → UI logic → UI

使用 media3-ui-compose 全面控制界面组件。

此库提供 Business logic → UI logic 连接。它包含 PlayerSurfaceContentFrame 等基础组件,以及状态持有者类(例如 PlayPauseButtonState),用于将 Player 状态转换为界面状态。

此库提供现成的 Material Design 组件。您需要负责构建自己的界面组件并设置其样式。它可让您最大限度地控制外观和风格,因此非常适合采用高度自定义设计系统的应用。

使用 media3-ui-compose-material3 可更快地与 Material Design 集成。

此库提供流水线的最终 UI 部分。它依赖于 media3-ui-compose,并包含使用 Material3 组件设置样式的预构建可组合函数。这样一来,您就不必从头开始构建自己的按钮和其他界面元素。您仍然可以自定义这些组件的主题、颜色和图标,但核心实现由系统提供。

资讯一览

功能 media3-ui-compose media3-ui-compose-material3
界面组件 包含 PlayerSurfaceContentFrame 等基础元素,但包含预设样式的按钮或控件。 提供了一整套预构建的 Material3 样式 Composables,例如 PlayPauseButtonSeekBackButtonPositionAndDurationText 等。
状态管理 提供 remember...State 持有者来管理逻辑。 在内部管理状态,但您仍可根据需要访问状态容器。
依赖项 androidx.compose.foundation media3-ui-composeandroidx.compose.material3com.google.android.material
主要使用场景 使用自定义设计系统构建播放器界面。完全控制外观和风格。 快速构建遵循 Material Design 3 准则的播放器界面。