添加依赖项
Media3 库包含两个基于 Jetpack Compose 的界面模块。您不必同时添加这两个模块,因为 Material3 模块依赖于核心模块。
Kotlin
// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.10.1")
implementation("androidx.media3:media3-ui-compose-material3:1.10.1")
Groovy
// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.10.1"
implementation "androidx.media3:media3-ui-compose-material3:1.10.1"
我们强烈建议您以 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,以及
将 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 准则的播放器界面。 |