Библиотека media3-ui-compose-material3 предоставляет composable-функцию Player, которая показывает элементы управления проигрывателем, индикатор выполнения и текущий медиаконтент. Он обрабатывает как управление состоянием, так и стилизацию Material3 внутри. Подробнее о том, какую библиотеку использовать, рассказывается в обзоре Media3 Compose.
// The library provides styled UI components Row { SeekBackButton(player) PlayPauseButton(player) SeekForwardButton(player) }
// You can rearrange the composables into a layout that suits your needs @Composable fun PlayerProgressControlsLeftAligned(player: Player) { Row { PositionAndDurationText(player) ProgressSlider(player) } } @Composable fun PlayerProgressControlsCenterAligned(player: Player) { Row { PositionText(player) ProgressSlider(player) DurationText(player) } }
Настройка компонентов Material 3
Хотя media3-ui-compose-material3 предоставляет компоненты, соответствующие Material3
Design, вы по-прежнему имеете полный контроль над темами. Вы можете настроить цвета, шрифты и формы, поместив интерфейс проигрывателя в элемент MaterialTheme.
Например, чтобы изменить цвет PlayPauseButton, можно указать собственный colorScheme:
MaterialTheme( colorScheme = lightColorScheme( primary = Color.Red, // Change the primary color for the button onPrimary = Color.White, ) ) { // The PlayPauseButton will now use the custom colors PlayPauseButton(player) }
Доступные компоненты Material 3
Библиотека media3-ui-compose-material3 содержит набор готовых composable-функций для стандартных элементов управления проигрывателем. Вот некоторые компоненты, которые вы можете использовать непосредственно в своем приложении:
| Компонент | Описание |
|---|---|
Player |
Проигрыватель с элементами управления, индикатором выполнения, субтитрами и фреймом для видео или обложки. |
PlayPauseButton |
Кнопка, которая позволяет переключаться между воспроизведением и паузой, а также показывает состояния буферизации, повторного воспроизведения и повторной попытки. |
SeekBackButton |
Кнопка для перемотки назад на определенный интервал. |
SeekForwardButton |
Кнопка для перемотки вперед на заданный интервал. |
NextButton |
Кнопка для перехода к следующему мультимедийному объекту. |
PreviousButton |
Кнопка для перехода к предыдущему медиафайлу. |
RepeatButton |
Кнопка для переключения между режимами повтора. |
ShuffleButton |
Кнопка для включения и отключения воспроизведения в случайном порядке. |
MuteButton |
Кнопка для включения и отключения звука в проигрывателе. |
LiveButton |
Кнопка, которая показывает, воспроизводится ли трансляция в реальном времени. Если нажать на нее, воспроизведение перейдет к текущему моменту. |
PositionAndDurationText |
Текстовая composable-функция, которая показывает текущую позицию и общую продолжительность. |
PositionText |
Текстовая composable-функция, которая показывает текущую позицию. |
DurationText |
Текстовая composable-функция, которая показывает общую продолжительность. |
RemainingDurationText |
Текстовая composable-функция, которая показывает оставшееся время. |
ProgressSlider |
Ползунок, который показывает ход воспроизведения и позволяет пользователю перематывать видео. |
BufferingIndicator |
Индикатор выполнения, который показывается во время буферизации проигрывателя. |
Это неполный список. Все доступные компоненты перечислены в документации по API библиотеки.
Две другие встроенные composable-функции, которые вам, скорее всего, понадобятся, связаны с управлением поверхностями и находятся в модуле media3-ui-compose, поскольку у них нет тематического оформления Material Design.
| Компонент | Описание |
|---|---|
ContentFrame |
Область для медиаконтента, которая управляет соотношением сторон, изменением размера, затвором, обложкой и слотом для субтитров. |
PlayerSurface |
Необработанная поверхность, которая оборачивает SurfaceView и TextureView в AndroidView. |