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

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

Библиотека Media3 включает в себя два модуля пользовательского интерфейса на основе Jetpack Compose. Добавлять оба необязательно, поскольку модуль Material3 зависит от основного модуля.

Котлин

// 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-first, или перейти с использования Views .

Демонстрационное приложение Fully 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 , а также классы-хранилища состояний (например, PlayPauseButtonState , CurrentMediaItemState , PlaylistState , ErrorState ), которые преобразуют состояние Player в состояние пользовательского интерфейса.

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

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

This library provides the final UI part of the pipeline. It depends on media3-ui-compose and includes prebuilt composable functions that are styled with Material3 components , including the Player and MiniController composables. The Player composable offers a comprehensive media playback experience with video, controls, and progress bar, which you can further customize using PlayerDefaults . The MiniController composable provides a compact affordance to control the player while displaying information about the current media item. It eliminates the need for you to build your own buttons and other UI elements from scratch. You can still customize the theme, colors, and icons of these components, but the core implementation is provided for you.

Вкратце

Особенность 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.