添加依赖项
Media3 库包含两个基于 Jetpack Compose 的界面模块。您无需同时添加这两者,因为 Material3 依赖于核心库。
Kotlin
// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.11.1")
implementation("androidx.media3:media3-ui-compose-material3:1.11.1")
Groovy
// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.11.1"
implementation "androidx.media3:media3-ui-compose-material3:1.11.1"
我们强烈建议您以 Compose 优先的方式开发应用,或从使用 View 迁移到使用 Compose。
完全使用 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 等基础组件,以及可将 Player 状态转换为界面状态的状态容器类(例如 PlayPauseButtonState、CurrentMediaItemState、PlaylistState、ErrorState)。
此库不提供开箱即用的 Material Design 组件。您需要负责构建自己的界面组件并为其设置样式。它可让您最大限度地控制外观和风格,因此非常适合高度自定义的设计体系。
使用 media3-ui-compose-material3 可更快地与 Material Design 集成。
此库提供流水线的最终 UI 部分。它依赖于 media3-ui-compose,并包含使用 Material3 组件设置样式的预构建可组合函数,包括 Player 和 MiniController 可组合项。Player 可组合项提供全面的媒体播放体验,包括视频、控件和进度条,您可以使用 PlayerDefaults 进一步自定义这些内容。MiniController 可组合项提供了一个紧凑的控件,用于控制播放器,同时显示有关当前媒体文件信息。这样您就无需从头开始构建自己的按钮和其他界面元素。您仍然可以自定义这些组件的主题、颜色和图标,但核心实现已为您提供。
资讯一览
| 功能 | media3-ui-compose |
media3-ui-compose-material3 |
|---|---|---|
| 界面组件 | PlayerSurface 和 ContentFrame 等基础元素,但没有预先设置样式的按钮或控件。 |
提供 Player 和 MiniController 可组合项,以及一整套预构建的 Material3 样式可组合项,例如 PlayPauseButton、SeekBackButton、PositionAndDurationText、ErrorText 等。 |
| 状态管理 | 提供 remember...State 持有者来管理逻辑。 |
在内部管理状态,但您仍可以根据需要访问状态容器。 |
| 依赖项 | androidx.compose.foundation |
media3-ui-compose、androidx.compose.material3、com.google.android.material |
| 主要应用场景 | 使用自定义设计体系构建播放器界面。完全控制外观和风格。 | 快速构建符合 Material Design 3 准则的播放器界面。 |