Android ভিউ-ভিত্তিক অ্যাপের জন্য স্পেশিয়াল UI ডেভেলপ করা

প্রযোজ্য XR ডিভাইস
এইসব XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে এই নির্দেশিকা আপনাকে সাহায্য করে।
XR হেডসেট
ওয়্যারড XR গ্লাস

Android Jetpack Compose ফ্রেমওয়ার্ক ব্যবহার করা হল Android UI ডেভেলপমেন্টের লেটেস্ট উন্নতিগুলির সুবিধা নেওয়ার এবং আপনার অ্যাপ্লিকেশন যে ইন্ডাস্ট্রির পেশাদার পদ্ধতির সাথে আপ-টু-ডেট আছে তা যাচাই করার সবচেয়ে ভালো উপায়।

তবে, আপনি যদি মাইগ্রেট না করে থাকেন এবং Android Views-এর উপর ভিত্তি করে তৈরি অ্যাপ স্প্যাশিয়ালাইজ করার জন্য কাজ করে থাকেন, তাহলে আপনি কয়েকটি পদ্ধতি অবলম্বন করতে পারেন।

SpatialPanels-এর মধ্যে আপনার আগে থেকে থাকা ভিউ আবার ব্যবহার করা

SpatialPanels XR লাইব্রেরির জন্য Jetpack Compose-এর অংশ হলেও, সেগুলি ভিউও গ্রহণ করে। আপনার MainActivity-তে Subspace ব্যবহার করার সময়, নিচের উদাহরণে দেখানো SpatialPanel-এ আগে থেকে থাকা ভিউ প্লেস করুন।

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

Android Views ও Compose ইন্টারঅপারেবিলিটি API ব্যবহার করা

Views ও Compose-এর মধ্যে ইন্টারঅপারেবিলিটি সংক্রান্ত নির্দেশিকা দেখুন। এই ডকুমেন্টে এইসব ফ্রেমওয়ার্ক একসাথে ব্যবহার করা সম্পর্কে বলা আছে এবং এতে ব্যবহারযোগ্য কোড স্যাম্পেলের লিঙ্ক দেওয়া আছে।

আগে থেকে থাকা কোনও ফ্র্যাগমেন্টে স্পেশিয়াল প্যানেল ও অরবিটার যোগ করতে ComposeView ব্যবহার করা

Composables যোগ করতে এবং নতুন XR কন্টেন্ট তৈরি করতে, আপনার XML লেআউটে একটি ComposeView ব্যবহার করুন। View binding বা findViewById ব্যবহার করে onCreateView() ফাংশনে ComposeView খুঁজুন।

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 লাইব্রেরির সাথে সরাসরি কাজ করা

Jetpack SceneCore-এর উপরে XR-এর জন্য Compose তৈরি করা হয়েছে। আপনি যদি Views-এর উপর ভিত্তি করে তৈরি অ্যাপ স্প্যাশিয়ালাইজ করেন, তাহলে আপনি Compose for XR-এর মধ্যে আপনার বিদ্যমান UI কোড ব্যবহার করা চালিয়ে যেতে পারেন অথবা Jetpack SceneCore-এর Session সাথে সরাসরি কাজ করার বিকল্প বেছে নিতে পারেন।

আপনি PanelEntity ব্যবহার করে SceneCore থেকে সরাসরি প্যানেল তৈরি করতে পারবেন। dimensions ব্যবহার করে মিটারে অথবা pixelDimensions ব্যবহার করে পিক্সেলে প্যানেলের সাইজ সেট করুন। আপনি সংশ্লিষ্ট কম্পোনেন্ট ব্যবহার করে প্যানেলগুলিকে মুভ করা বা রিসাইজ করার বিকল্প বেছে নিতে পারেন। আরও তথ্যের জন্য, এনটিটিতে সাধারণ ব্যবহার যোগ করুন দেখুন।

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