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

एक्सआर डिवाइसों पर लागू होने वाली सुविधाएं
इस गाइड की मदद से, इन तरह के एक्सआर डिवाइसों के लिए अनुभव बनाए जा सकते हैं.
एक्सआर हेडसेट
तार वाले एक्सआर स्मार्ट ग्लास

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

लेआउट

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

सीमाएं भरें

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

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

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

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

offset

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

rotate

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

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

rotateToLookAtUser

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

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

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

एलिमेंट की जगह बदलना

मूवेबल मॉडिफ़ायर की मदद से, उपयोगकर्ता सबस्पेस के एलिमेंट को पकड़कर उनकी जगह बदल सकते हैं.

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

  • movable: इस मॉडिफ़ायर का इस्तेमाल, मनमुताबिक मूवमेंट का तरीका तय करने के लिए करें. सिस्टम, मूव अफ़ॉर्डेंस उपलब्ध कराता है. हालांकि, आपको ज़रूरी onMove इवेंट का इस्तेमाल करना होगा और नतीजे लागू करने होंगे. यह सुविधा, ऐप्लिकेशन में मूवमेंट को सीमित करने या कस्टम मूवमेंट बनाने के लिए काम की है.

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

रीसाइज़ किए जा सकने वाले मॉडिफ़ायर की मदद से, उपयोगकर्ता सबस्पेस के एलिमेंट को पकड़कर उनका साइज़ बदल सकते हैं.

  • transformingResizable: इस मॉडिफ़ायर का इस्तेमाल, सिस्टम की ओर से मैनेज किए जाने वाले साइज़ बदलने की सुविधा के लिए करें. यह मॉडिफ़ायर, इमेज का साइज़ बदलने के जेस्चर को अपने-आप हैंडल करता है. साथ ही, उपयोगकर्ता की ओर से तय किए गए नए डाइमेंशन लागू करता है.

  • resizable: इस मॉडिफ़ायर का इस्तेमाल, इमेज के साइज़ को पसंद के मुताबिक बदलने के लिए करें. सिस्टम, इमेज का साइज़ बदलने की सुविधा देता है. हालांकि, आपको onResize इवेंट का इस्तेमाल करके, नतीजे लागू करने होंगे. यह मॉडिफ़ायर, मुश्किल स्थितियों में काम आता है. जैसे, किसी खास आसपेक्ट रेशियो को बनाए रखना या साइज़ बदलने के बाद, अन्य कॉम्पोनेंट के पूरे लेआउट को फिर से अडजस्ट करना.

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

alpha

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

scale

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

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

semantics

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

testTag

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