Jetpack Compose для XR

Декларативно создавайте пространственные макеты пользовательского интерфейса, использующие пространственные возможности Android XR.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
12 декабря 2024 г. - - - 1.0.0-альфа01

Объявление зависимостей

Чтобы добавить зависимость от XR Compose, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

Добавьте зависимости для нужных вам артефактов в файл build.gradle для вашего приложения или модуля:

классный

dependencies {
    implementation "androidx.xr.compose:compose:1.0.0-alpha01"

    // Use to write unit tests
    testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha01"
}

Котлин

dependencies {
    implementation("androidx.xr.compose:compose:1.0.0-alpha01")

    // Use to write unit tests
    testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha01")
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новую задачу

Дополнительную информацию см . в документации по системе отслеживания проблем .

Версия 1.0

Версия 1.0.0-альфа01

12 декабря 2024 г.

androidx.xr.compose:compose-*1.0.0-alpha01 выпущен.

Особенности первоначальной версии

  • Первоначальный выпуск Jetpack Compose для XR для разработчиков. Используйте знакомые концепции Compose, такие как строки и столбцы, для создания пространственных макетов пользовательского интерфейса в XR, независимо от того, переносите ли вы существующее 2D-приложение в XR или создаете новое приложение XR с нуля. Эта библиотека предоставляет подпространственные и пространственные компонуемые элементы: такие как пространственные панели и орбитальные аппараты, которые позволяют разместить существующий пользовательский интерфейс на основе 2D-композиции или представлений в пространственном макете. Он представляет компонуемое подпространство Volume, которое позволяет вам размещать объекты SceneCore, такие как 3D-модели, относительно вашего пользовательского интерфейса. Узнайте больше в этом руководстве для разработчиков :

    • Subspace : этот составной элемент можно разместить в любом месте иерархии пользовательского интерфейса вашего приложения, что позволяет вам поддерживать макеты для 2D- и пространственного пользовательского интерфейса без потери контекста между файлами. Это упрощает совместное использование таких вещей, как существующая архитектура приложения, между XR и другими форм-факторами без необходимости поднимать состояние по всему дереву пользовательского интерфейса или перепроектировать ваше приложение.

    • SpatialPanel : пространственная панель — это компонуемое подпространство, которое позволяет отображать содержимое приложения — например, вы можете отображать воспроизведение видео, неподвижные изображения или любой другой контент на пространственной панели.

    • Орбитер : Орбитальный аппарат — это пространственный компонент пользовательского интерфейса. Он предназначен для прикрепления к соответствующей пространственной панели и содержит элементы навигации и контекстных действий, связанные с этой пространственной панелью. Например, если вы создали пространственную панель для отображения видеоконтента, вы можете добавить элементы управления воспроизведением видео внутри орбитального аппарата.

    • Volume : размещайте объекты SceneCore, такие как 3D-модели, относительно вашего пользовательского интерфейса.

  • Пространственный макет. Вы можете создать несколько пространственных панелей и разместить их в пространственном макете с помощью SpatialRow , SpatialColumn , SpatialBox и SpatialLayoutSpacer . Используйте SubspaceModifier для настройки макета.

  • Компоненты пространственного пользовательского интерфейса. Эти элементы можно повторно использовать в двухмерном пользовательском интерфейсе, а их пространственные атрибуты будут видны только при включении пространственных возможностей.

    • SpatialDialog : панель слегка отодвинется назад по оси Z, чтобы отобразить диалоговое окно с повышенными правами.
    • SpatialPopUp : панель слегка отодвинется назад по оси Z, чтобы отобразить приподнятое всплывающее окно.
    • SpatialElevation : можно задать SpatialElevationLevel для добавления высоты.
  • Пространственные возможности. Пространственные возможности могут меняться по мере взаимодействия пользователей с вашим приложением или системой или даже могут быть изменены самим вашим приложением, например при перемещении в «Домашнее пространство» или «Полное пространство». Чтобы избежать проблем, вашему приложению необходимо проверить LocalSpatialCapabilities.current , чтобы определить, какие API поддерживаются в текущей среде. isSpatialUiEnabled : Пространственные элементы пользовательского интерфейса (например, SpatialPanel) isContent3dEnabled : 3D-объекты isAppEnvironmentEnabled : Среда isPassthroughControlEnabled : может ли приложение контролировать состояние прохождения isSpatialAudioEnabled : Пространственный звук

Известные проблемы

  • В настоящее время для использования Jetpack Compose для XR требуется minSDK 30. В качестве обходного пути вы можете добавить следующую запись манифеста <uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/> чтобы иметь возможность собирать и запускать minSDK 23.
  • Приложения Jetpack XR в настоящее время требуют запроса разрешения android.permission.SCENE_UNDERSTANDING в AndroidManifest.
  • Когда приложение запускается непосредственно в «Полном пространстве» с использованием свойства PROPERTY_XR_ACTIVITY_START_MODE в своем манифесте, действия/приложения сначала открываются в «Домашнем пространстве», а затем переходят в «Полное пространство».
  • glTF в Volume Composables может изначально мерцать в неправильном месте.
  • Использование SpatialDialog на панели, которая была значительно перемещена, приведет к смещению содержимого в неправильном направлении.