Android Views tabanlı uygulamalar için üç boyutlu kullanıcı arayüzü geliştirme

Geçerli XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
XR Kulaklıklar
Kablolu XR Gözlükler

Android Jetpack Compose çerçevesini kullanmak, Android kullanıcı arayüzü geliştirmeyle ilgili en son gelişmelerden yararlanmanın ve uygulamanızın sektördeki en iyi uygulamalara uygun kalmasını sağlamanın en iyi yoludur.

Ancak henüz geçiş yapmadıysanız ve Android Views tabanlı bir uygulamayı uzamsallaştırmak için çalışıyorsanız uygulayabileceğiniz birkaç yaklaşım vardır.

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

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

setContent {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier.height(500.dp).width(500.dp).depth(25.dp)
        ) { MyCustomView(this@ActivityWithSubspaceContent) }
    }
}

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

Görünümler ve Compose arasındaki birlikte çalışabilirlik ile ilgili kılavuza bakın. Bu dokümanda, bu çerçevelerin birlikte kullanılması ele alınmakta ve kullanabileceğiniz kod örneklerinin bağlantıları yer almaktadır.

Mevcut bir parçaya uzamsal paneller ve yörüngeler eklemek için ComposeView kullanma

Composable'lar eklemek ve yeni XR içerikleri oluşturmak için XML düzeninizde ComposeView kullanın. onCreateView() işlevindeki ComposeView öğesini bulmak için View binding veya findViewById seçeneğini kullanın.

ComposeView rehberliği hakkında daha fazla bilgi edinin.

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
}

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

Compose for XR, Jetpack SceneCore üzerine kurulmuştur. Görünümlere dayalı bir uygulamayı uzamsallaştırıyorsanız XR için Compose'da mevcut kullanıcı arayüzü kodunuzu kullanmaya devam edebilir veya doğrudan Jetpack SceneCore'un Session ile çalışmayı tercih edebilirsiniz.

PanelEntity kullanarak doğrudan SceneCore'dan paneller oluşturabilirsiniz. dimensions kullanarak panelin boyutunu metre cinsinden veya pixelDimensions kullanarak piksel cinsinden ayarlayın. İlgili bileşenleri kullanarak panelleri taşınabilir veya yeniden boyutlandırılabilir hale getirebilirsiniz. Daha fazla bilgi için Varlıklara ortak davranış ekleme başlıklı makaleyi inceleyin.

val panelContent = MyCustomView(this)
val panelEntity = PanelEntity.create(
    session = xrSession,
    view = panelContent,
    pixelDimensions = IntSize2d(500, 500),
    name = "panel entity"
)