Android Görünümlere dayalı uygulamalar için kullanıcı arayüzü geliştirme

Oluşturma yöntemini deneyin
Android XR için önerilen kullanıcı arayüzü araç seti, Jetpack XR SDK'sını kullanan Jetpack Compose'dir.

Android kullanıcı arayüzü geliştirmesindeki en son gelişmelerden yararlanmanın ve uygulamanızın sektördeki en iyi uygulamalara uygun kalmasının en iyi yolu Android Jetpack Compose çerçevesini kullanmaktır.

Ancak taşıma işlemini yapmadıysanız ve Android Views tabanlı bir uygulamayı mekansallaştırmaya çalışıyorsanız kullanabileceğiniz birkaç yaklaşım vardır.

Mevcut görünümlerinizi SpatialPanels'de yeniden kullanma

SpatialPanel, XR için Jetpack Compose kitaplığının bir parçası olsa da Görünümleri de kabul eder. MainActivity'nizde setSubspaceContent kullanırken aşağıdaki örnekte gösterildiği gibi mevcut bir görünümü SpatialPanel içine yerleştirin.

setSubspaceContent {
   SpatialPanel(
       view = MyCustomView(this),
       modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
   )
}

Android Views ve Compose birlikte çalışabilirlik API'lerini kullanma

Görünümler ve Oluştur arasında birlikte çalışabilirlik hakkındaki kılavuza göz atın. Bu dokümanlar, bu çerçevelerin birlikte kullanımını kapsar ve kullanabileceğiniz kod örneklerinin bağlantılarını içerir.

Mevcut bir parçaya uzamsal paneller ve yörünge araçları eklemek için ComposeView kullanın

Composables eklemek ve yeni XR içerikleri oluşturmak için XML düzeninizde ComposeView kullanın. onCreateView işlevinde ComposeView işlevini çağırmak için [ViewBinding][ViewBinding] öğesini kullanın.

ComposeView yönergeleri hakkında daha fazla bilgi edinin.

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
   }
}

Doğrudan Jetpack SceneCore kitaplığıyla çalışma

XR için Compose, Jetpack SceneCore'un üzerine inşa edilmiştir. Görünümlere dayalı bir uygulamayı mekansallaştırıyorsanız XR için Compose'da mevcut kullanıcı arayüzü kodunuzu kullanmaya devam edebilir veya bunun yerine doğrudan Jetpack SceneCore'un Session ile çalışmayı seçebilirsiniz.

PanelEntity simgesini kullanarak panelleri doğrudan SceneCore'dan oluşturabilirsiniz. Bileşenleri kullanarak panelleri taşınabilir veya yeniden boyutlandırılabilir hale getirin. Daha fazla bilgi için Öğelere ortak davranış ekleme başlıklı makaleyi inceleyin.

val panelContent = MyCustomView(this)
val panelEntity = xrSession.createPanelEntity(
   panelContent,
   surfaceDimensionsPx = Dimensions(500f,500f,500f),
   dimensions = Dimensions(1f,1f,1f),
   name = "panel entity"
)