सबस्पेस मॉडिफ़ायर

SubspaceModifier, Subspace में मौजूद कंपोज़ेबल के लिए, Compose मॉडिफ़ायर की तरह होता है. SubspaceModifier की मदद से, 3D स्पेस में कंपोज़ेबल में बदलाव किया जा सकता है. इससे आपको 3D लेआउट नोड को पोज़िशन करने, घुमाने, और उनमें व्यवहार जोड़ने में मदद मिलती है.

लेआउट

डिफ़ॉल्ट रूप से, Subspace, ऐप्लिकेशन देखने के लिए सुझाए गए स्पेस से बंधा होता है. इन सीमाओं का इस्तेमाल, आपके सबस्पेस कॉम्पोनेंट के लेआउट को मेज़र करते समय किया जाता है. यह 2D कंपोज़ लेआउट में सीमाओं की तरह होता है.

सीमाएं भरें

मॉडिफ़ायर fillMaxSize, fillMaxWidth, fillMaxHeight, और fillMaxDepth की मदद से, कॉन्टेंट को उसके पैरंट के दायरे में (कुछ हद तक) भरा जा सकता है. फ़िल मॉडिफ़ायर का इस्तेमाल करने से, आपका ऐप्लिकेशन ऐसे कॉन्टेंट को लेआउट कर पाता है जो XR डिवाइस की डिसप्ले की विशेषताओं से अलग होता है.

साइज़ और ज़रूरी साइज़ सेट करना

मॉडिफ़ायर size, width, height, और depth, कॉन्टेंट के पसंदीदा साइज़ के बारे में बताते हैं. कॉन्टेंट का सटीक साइज़ बताने के लिए, requiredSize, requiredWidth, requiredHeight, और requiredDepth का इस्तेमाल करें. इन इकाइयों को dp में तय किया जाना चाहिए; मीटर को डीपी में बदलने के लिए, Meter.toDp() का इस्तेमाल करें.

पोजीशन कंपोज़ेबल

offset

offset मॉडिफ़ायर, कंपोज़ेबल को 3D स्पेस में x, y, और z ऐक्सिस के साथ ले जाता है. इन यूनिट को dp में तय किया जाना चाहिए; मीटर को dp में बदलने के लिए, Meter.toDp() का इस्तेमाल करें.

rotate

rotate मॉडिफ़ायर, स्पेस में दिए गए कंपोज़ेबल को घुमाता है. रोटेशन की दिशा और मात्रा को अलग-अलग तरीकों से तय किया जा सकता है:

  • पिच, यॉ, और रोल का इस्तेमाल करके, जो क्रम से x, y, और z ऐक्सिस के चारों ओर रोटेशन के बारे में बताते हैं,
  • axisAngle का इस्तेमाल करके, जो कि रोटेशन के ऐक्सिस को दिखाने वाला Vector3 है. साथ ही, यह भी बताया जाता है कि इसे कितने डिग्री पर घुमाया जाना चाहिए,
  • रोटेशन को दिखाने वाली Quaternion का इस्तेमाल करके.

कंपोज़ेबल के लुक में बदलाव करना

alpha

alpha मॉडिफ़ायर, एलिमेंट और उसके चाइल्ड की ओपैसिटी सेट करता है. इसमें 0f का मतलब पूरी तरह से पारदर्शी और 1.0f का मतलब पूरी तरह से अपारदर्शी होता है.

scale

scale मॉडिफ़ायर, कंपोज़ेबल के कॉन्टेंट को हॉरिज़ॉन्टल, वर्टिकल, और डेप्थ ऐक्सिस के हिसाब से स्केल करता है.

कंपोज़ेबल में व्यवहार जोड़ना

resizable

resizable मॉडिफ़ायर चालू होने पर, खींचकर छोड़े जा सकने वाले यूज़र इंटरफ़ेस (यूआई) कंट्रोल दिखेंगे. इनकी मदद से, उपयोगकर्ता एलिमेंट का साइज़ बदल सकता है. यह Entity पर ResizableComponent का इस्तेमाल करने जैसा ही है.

movable

movable मॉडिफ़ायर चालू होने पर, कॉम्पोनेंट में यूज़र इंटरफ़ेस (यूआई) कंट्रोल जोड़े जाएंगे. इनकी मदद से उपयोगकर्ता, एलिमेंट को 3D स्पेस में ले जा सकेगा. यह Entity पर MovableComponent का इस्तेमाल करने जैसा ही है.

movable लेआउट नोड, यह तय कर सकता है कि उसे किस तरह के प्लैन पर ऐंकर करना है. हालांकि, ऐसा करना ज़रूरी नहीं है. उदाहरण के लिए, टेबल पर स्नैप होने वाला SpatialPanel बनाने के लिए:

SpatialPanel(
  modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
  // This panel snaps to available planes that are detected as a TABLE.
}

प्लेन पर स्नैप करने के लिए, आपके ऐप्लिकेशन को android.permission.SCENE_UNDERSTANDING_COARSE की रनटाइम अनुमति दी जानी चाहिए.

टेस्टिंग और सुलभता

semantics

semantics मॉडिफ़ायर, लेआउट नोड में सिमैंटिक्स जोड़ता है. इसका इस्तेमाल टेस्टिंग और ऐक्सेसिबिलिटी के लिए किया जाता है. Jetpack Compose में सिमैंटिक्स और SemanticsModifier देखें.

testTag

testTag मॉडिफ़ायर, SemanticsPropertyReceiver.testTag का शॉर्टहैंड है. इससे टेस्ट फ़्रेमवर्क, टेस्ट में एलिमेंट ढूंढ पाते हैं.