Начало работы с интерфейсом на основе Compose

Добавьте зависимость

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

Яркий

// 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 или перейти на него с Views.

Демонстрационное приложение, полностью созданное с помощью Compose

Хотя библиотека media3-ui-compose не включает готовые composable-функции (например, кнопки, индикаторы, изображения или диалоговые окна), вы можете найти демоверсию приложения, полностью написанную на 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, CurrentMediaItemState, PlaylistState, ErrorState), которые преобразуют состояние Player в состояние пользовательского интерфейса.

Эта библиотека не предоставляет готовые к использованию компоненты Material Design. Вы сами создаете и оформляете компоненты интерфейса. Это дает вам максимальный контроль над внешним видом, что делает его идеальным, если у вас есть система индивидуального дизайна.

Используйте media3-ui-compose-material3 для более быстрой интеграции с Material Design.

Эта библиотека предоставляет последнюю часть конвейера – UI. Она зависит от media3-ui-compose и включает готовые composable-функции, оформленные с помощью компонентов Material3, в том числе composable-функции Player и MiniController. Composable-функция Player предлагает комплексные возможности воспроизведения медиаконтента с видео, элементами управления и индикатором выполнения, которые можно дополнительно настроить с помощью PlayerDefaults. MiniController – это компактная composable-функция, которая позволяет управлять проигрывателем и показывает информацию о текущем мультимедийном объекте. Вам не придется создавать кнопки и другие элементы интерфейса с нуля. Вы можете настраивать тему, цвета и значки этих компонентов, но основная реализация уже готова.

Самое главное

Функция media3-ui-compose media3-ui-compose-material3
Компоненты интерфейса Базовые элементы, такие как PlayerSurface и ContentFrame, но без предварительно стилизованных кнопок или элементов управления. Предоставляет composable-функции Player и MiniController, а также полный набор готовых composable-функций в стиле Material3, таких как PlayPauseButton, SeekBackButton, PositionAndDurationText, ErrorText и т. д.
Управление состоянием Предоставляет держатели remember...State для управления логикой. Управляет состоянием внутри, но вы по-прежнему можете получить доступ к хранилищам состояния, если это необходимо.
Зависимости androidx.compose.foundation media3-ui-compose, androidx.compose.material3, com.google.android.material
Основной пример использования Создание интерфейса проигрывателя с помощью собственной системы проектирования. Полный контроль над внешним видом и функциями. Быстрое создание интерфейса проигрывателя, соответствующего рекомендациям Material Design 3.