添加依赖项
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 连接。它包含 PlayerSurface 和 ContentFrame 等基础组件,以及状态持有者类(例如 PlayPauseButtonState),用于将 Player 状态转换为界面状态。
此库不提供现成的 Material Design 组件。您需要负责构建自己的界面组件并设置其样式。它可让您最大限度地控制外观和风格,因此非常适合采用高度自定义设计系统的应用。
使用 media3-ui-compose-material3 可更快地与 Material Design 集成。
此库提供流水线的最终 UI 部分。它依赖于 media3-ui-compose,并包含使用 Material3 组件设置样式的预构建可组合函数。这样一来,您就不必从头开始构建自己的按钮和其他界面元素。您仍然可以自定义这些组件的主题、颜色和图标,但核心实现由系统提供。
资讯一览
| 功能 | media3-ui-compose |
media3-ui-compose-material3 |
|---|---|---|
| 界面组件 | 包含 PlayerSurface 和 ContentFrame 等基础元素,但不包含预设样式的按钮或控件。 |
提供了一整套预构建的 Material3 样式 Composables,例如 PlayPauseButton、SeekBackButton、PositionAndDurationText 等。 |
| 状态管理 | 提供 remember...State 持有者来管理逻辑。 |
在内部管理状态,但您仍可根据需要访问状态容器。 |
| 依赖项 | androidx.compose.foundation |
media3-ui-compose、androidx.compose.material3、com.google.android.material |
| 主要使用场景 | 使用自定义设计系统构建播放器界面。完全控制外观和风格。 | 快速构建遵循 Material Design 3 准则的播放器界面。 |