Использование платформы Android Jetpack Compose — лучший способ воспользоваться последними достижениями в разработке пользовательского интерфейса Android и обеспечить соответствие вашего приложения лучшим отраслевым практикам.
Однако, если вы еще не выполнили миграцию и работаете над пространственной структурой приложения на основе Android Views , вы можете использовать несколько подходов.
Повторно используйте существующие виды в SpatialPanels.
Хотя SpatialPanel
являются частью библиотеки Jetpack Compose for XR, они также принимают представления. При использовании setSubspaceContent
в MainActivity поместите существующее представление в SpatialPanel
, как показано в следующем примере.
setSubspaceContent {
SpatialPanel(
view = MyCustomView(this),
modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
)
}
Используйте Android Views и API совместимости Compose.
Обратитесь к руководству по совместимости между Views и Compose . Эта документация описывает совместное использование этих платформ и содержит ссылки на примеры кода, которые вы можете использовать.
Используйте ComposeView для добавления пространственных панелей и орбитальных аппаратов к существующему фрагменту.
Используйте ComposeView
в макете XML, чтобы добавлять составные элементы и создавать новый контент XR. Используйте [ ViewBinding
][ViewBinding] для вызова ComposeView
в функции onCreateView
.
Узнайте больше о руководстве ComposeView
.
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view = inflater.inflate(R.layout.fragment_first, container, false)
val composeView = view.findViewById<ComposeView>(R.id.compose_view)
composeView.apply {
// Dispose of the Composition when the view's LifecycleOwner
// is destroyed
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
// In Compose world
Orbiter(
position = Edge.Top,
offset = 10.dp,
alignment = Alignment.End
) {
SpatialPanel(SubspaceModifier.height(500.dp).width(500.dp)) {
Text("Spatial Panel with Orbiter")
}
}
}
return view
}
}
Работайте напрямую с библиотекой Jetpack SceneCore.
Compose for XR построен на основе Jetpack SceneCore . Если вы пространственно определяете приложение на основе представлений, вы можете продолжать использовать существующий код пользовательского интерфейса в Compose для XR или вместо этого выбрать прямую работу с Session
Jetpack SceneCore.
Вы можете создавать панели непосредственно из SceneCore, используя PanelEntity
. Сделайте панели подвижными или изменяющими их размер с помощью компонентов. Дополнительные сведения см. в разделе Добавление общего поведения к сущностям .
val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
panelContent,
surfaceDimensionsPx = Dimensions(500f,500f,500f),
dimensions = Dimensions(1f,1f,1f),
name = "panel entity"
)