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

Yazma yöntemini deneyin
Android XR için önerilen kullanıcı arayüzü araç seti, Jetpack XR SDK'yı kullanan Jetpack Compose'dur.

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. Görünüm bağlamayı veya findViewById kullanarak onCreateView() işlevindeki ComposeView öğesini bulun.

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. Views tabanlı bir uygulamayı uzamsallaştırıyorsanız Compose for XR'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 paneli 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"
)