Использование фреймворка Android Jetpack Compose — лучший способ воспользоваться новейшими достижениями в разработке пользовательского интерфейса Android и убедиться, что ваше приложение соответствует лучшим отраслевым практикам.
Однако если вы еще не выполнили миграцию и работаете над пространственным размещением приложения на базе Android Views , есть несколько подходов, которые вы можете использовать.
Повторно используйте существующие представления в SpatialPanels
Хотя элементы SpatialPanel
входят в библиотеку Jetpack Compose для XR, они также поддерживают View. При использовании Subspace
в MainActivity поместите существующее View в SpatialPanel
, как показано в следующем примере.
setContent { Subspace { SpatialPanel( modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp) ) { MyCustomView(this@ActivityWithSubspaceContent) } } }
Используйте API взаимодействия Android Views и Compose
Ознакомьтесь с руководством по взаимодействию между Views и Compose . Эта документация описывает совместное использование этих фреймворков и содержит ссылки на примеры кода, которые вы можете использовать.
Используйте ComposeView для добавления пространственных панелей и орбитеров к существующему фрагменту.
Используйте ComposeView
в XML-макете для добавления компонуемых элементов и создания нового XR-контента. Используйте привязку View или findViewById
для поиска ComposeView
в функции onCreateView()
.
Подробнее о руководстве ComposeView
читайте здесь .
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { val view = inflater.inflate(R.layout.example_fragment, container, false) view.findViewById<ComposeView>(R.id.compose_view).apply { // Dispose of the Composition when the view's LifecycleOwner // is destroyed setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { // In Compose world SpatialPanel(SubspaceModifier.height(500.dp).width(500.dp)) { Text("Spatial Panel with Orbiter") } } } return view }
Работайте напрямую с библиотекой Jetpack SceneCore
Compose для XR создан на основе Jetpack SceneCore . Если вы пространственно интерпретируете приложение на основе Views, вы можете продолжать использовать существующий код пользовательского интерфейса в Compose для XR или работать напрямую с Session
Jetpack SceneCore.
Панели можно создавать непосредственно из SceneCore, используя PanelEntity
. Задайте размер панели в метрах с помощью dimensions
или в пикселях с помощью pixelDimensions
. Вы можете сделать панели подвижными или изменять их размер, используя соответствующие компоненты. Подробнее см. в разделе Добавление общего поведения к сущностям .
val panelContent = MyCustomView(this) val panelEntity = PanelEntity.create( session = xrSession, view = panelContent, pixelDimensions = IntSize2d(500, 500), name = "panel entity" )