Material3 Compose

Библиотека 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.