सबस्पेस मॉडिफ़ायर के बारे में जानकारी

XR डिवाइसों पर काम करने वाले ऐप्लिकेशन
इस गाइड की मदद से, इन XR डिवाइसों के लिए ऐप्लिकेशन बनाए जा सकते हैं.
एक्सआर हेडसेट
तार वाले एक्सआर के स्मार्ट ग्लास

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

लेआउट

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

सीमाएं भरें

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

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

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

कंपोज़ेबल को पोज़िशन करना

offset

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

rotate

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

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

rotateToLookAtUser

The rotateToLookAtUser मॉडिफ़ायर, कॉन्टेंट को लगातार घुमाता है, ताकि वह हर समय उपयोगकर्ता की ओर रहे. इस मॉडिफ़ायर का इस्तेमाल, "बिलबोर्ड" इफ़ेक्ट पाने के लिए भी किया जा सकता है. इसमें, कॉन्टेंट Y-ऐक्सिस पर घूमकर उपयोगकर्ता की ओर रहता है. हालांकि, यह सीधा और ग्रेविटी के साथ अलाइन रहता है. इसके लिए, rotateToLookAtUser मॉडिफ़ायर को gravityAligned मॉडिफ़ायर के साथ मिलाएं.

कंपोज़ेबल की मदद से मूव करना और साइज़ बदलना

उपयोगकर्ताओं को 3D स्पेस में ऑब्जेक्ट की पोज़िशन और साइज़ को सीधे तौर पर मैनेज करने की सुविधा दें. इन मॉडिफ़ायर को अलग-अलग कॉम्पोनेंट (जैसे, SpatialPanel), सबस्पेस, और स्पेस में दिखने वाले लेआउट कॉम्पोनेंट (जैसे, SpatialRow या SpatialColumn) में जोड़ा जा सकता है.

एलिमेंट मूव करना

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

  • MovePolicy.default: सिस्टम, मूवमेंट को पूरी तरह से मैनेज करता है. साथ ही, उपयोगकर्ता के इनपुट के आधार पर, नई पोज़ और स्केल की वैल्यू अपने-आप कैलकुलेट करके लागू करता है.
  • MovePolicy.custom: सिस्टम, इनपुट के आधार पर टारगेट पोज़ की वैल्यू कैलकुलेट करता है. हालांकि, यह इसे संबंधित एलिमेंट पर अपने-आप लागू नहीं करता. यह आपके ऐप्लिकेशन में, मूवमेंट को सीमित करने या पसंद के मुताबिक मूवमेंट बनाने के लिए काम का है.

एलिमेंट का साइज़ बदलना

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

  • ResizePolicy.default(): सिस्टम, साइज़ बदलने के जेस्चर को अपने-आप मैनेज करता है और कॉन्टेंट पर नए डाइमेंशन लागू करता है.
  • ResizePolicy.custom(): सिस्टम, SpatialResizeEvent उपलब्ध कराता है. साथ ही, यह साइज़ बदलने के नतीजे को संबंधित एलिमेंट पर अपने-आप लागू नहीं करता.

कंपोज़ेबल के दिखने की सेटिंग बदलना

alpha

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

scale

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

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

semantics

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

testTag

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