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

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

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

Котлин

// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.9.0")
implementation("androidx.media3:media3-ui-compose-material3:1.9.0")

Классный

// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.9.0"
implementation "androidx.media3:media3-ui-compose-material3:1.9.0"

Мы настоятельно рекомендуем разрабатывать ваше приложение, используя подход Compose-first, или перейти с использования Views .

Демонстрационное приложение Fully Compose

Хотя библиотека media3-ui-compose не включает в себя готовые элементы Compose (такие как кнопки, индикаторы, изображения или диалоговые окна), вы можете найти демонстрационное приложение, полностью написанное на Compose , которое избегает каких-либо решений по обеспечению совместимости, таких как обертывание PlayerView в AndroidView . Демонстрационное приложение использует классы UI state holder из модуля media3-ui-compose и библиотеку Compose Material3 .

Какая библиотека мне нужна?

В зависимости от необходимого уровня настройки вы можете выбрать одну из двух библиотек Media3 Compose. Чтобы понять разницу, полезно представить себе конвейер создания состояния пользовательского интерфейса : Business logic → UI logic → UI .

Используйте media3-ui-compose для полного контроля над компонентами вашего пользовательского интерфейса.

Эта библиотека обеспечивает связь между Business logic → UI logic . Она содержит базовые компоненты, такие как PlayerSurface и ContentFrame , а также классы-хранилища состояний (например, PlayPauseButtonState ), которые преобразуют состояние Player в состояние пользовательского интерфейса.

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

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

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

Вкратце

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