المساحة الفرعية هي قسم من المساحة الثلاثية الأبعاد داخل تطبيقك، ويمكنك وضع نماذج ثلاثية الأبعاد وإنشاء تنسيقات ثلاثية الأبعاد وإضافة بُعد أعمق إلى المحتوى الثنائي الأبعاد. لا يتم عرض المساحة الفرعية إلا عند تفعيل ميزة التوزيع المكاني. في المساحة المشتركة أو على الأجهزة غير المتوافقة مع الواقع الممتد، يتم تجاهل أي رمز برمجي داخل هذه المساحة الفرعية.
يمكنك استخدام العناصر القابلة للإنشاء في المساحة الفرعية، مثل SpatialPanel وSpatialRow و
وSpatialColumn لإنشاء التنسيق ووضع محتوى ثنائي الأبعاد في مساحة ثلاثية الأبعاد. لوضع محتوى ثلاثي الأبعاد، استخدِم العنصر المناسب القابل للإنشاء في المساحة الفرعية، مثل
SceneCoreEntity للنماذج الثلاثية الأبعاد وSpatialExternalSurface لل
صور المجسّمة. بعض مكوّنات الواقع الممتد، مثل Orbiter أو SpatialDialog
، هي عناصر قياسية ثنائية الأبعاد قابلة للإنشاء يمكن استخدامها في أي مكان في التسلسل الهرمي لواجهة المستخدم الثنائية الأبعاد،
ولكن يجب استدعاء SubspaceComposable في المساحة الفرعية لتطبيقك. لإجراء
ذلك، استخدِم العنصر Subspace القابل للإنشاء في المساحة الفرعية.
لمحة عن التسلسلات الهرمية للمساحات الفرعية
Subspace على المستوى الأعلى هي المساحة الفرعية الخارجية التي يستدعيها تطبيقك.
يؤدي كل استدعاء إلى Subspace إلى إنشاء تسلسل هرمي جديد ومستقل لواجهة المستخدم المكانية.
لا يرث هذا العنصر الموضع المكاني أو الاتجاه أو المقياس لأي عنصر Subspace رئيسي مضمّن فيه.
لإنشاء عنصر Subspace مضمّن أو متداخل داخل SpatialPanel أو Orbiter أو
SpatialPopup أو مكوّن آخر، استخدِم PlanarEmbeddedSubspace.
PlanarEmbeddedSubspace يختلف عن Subspace في نقطتَين رئيسيتَين:
- يشاركان في التنسيق الثنائي الأبعاد الذي يتم استدعاؤهما فيه. يعني ذلك أنّ ارتفاع المساحة الفرعية وعرضها سيخضعان لقيود ارتفاع وعرض التنسيق الرئيسي الثنائي الأبعاد.
- يتصرفان كعناصر فرعية للكيان الذي يتم استدعاؤهما فيه. يعني ذلك أنّه،
إذا استدعيت عنصرًا قابلاً للإنشاء في مساحة فرعية مضمّنة داخل
SpatialPanel، ستكون هذه المساحة الفرعية عنصرًا فرعيًا منSpatialPanelالذي تم استدعاؤها فيه.
تتيح هذه السلوكيات في PlanarEmbeddedSubspace إمكانات مثل:
- نقل العنصر الفرعي مع العنصر الرئيسي
- إزاحة موضع العنصر الفرعي باستخدام الإزاحة
SubspaceModifier - عرض كائن ثلاثي الأبعاد يظهر فوق واجهة المستخدم الثنائية الأبعاد ويتطابق مع ارتفاع وعرض المساحة المناسبة في التنسيق الثنائي الأبعاد
تعديل التنسيقات لمساحة فرعية
على Android XR، يكون تنسيق تطبيقك مرتبطًا بـ VolumeConstraints في
Subspace في "وضع المساحة الكاملة" تلقائيًا. لهذا السبب، عليك مراعاة مقدار المساحة المرئية المتاحة للمستخدم وتعديل التنسيق وفقًا لذلك. يوفر recommendedContentBoxInFullSpace الأبعاد المحددة للمربع المحيط داخل ActivitySpace حتى يمكن وضع المحتوى ضمن مجال رؤية المستخدم.
يجب أن يتناسب المحتوى الأساسي لتطبيقك مع هذا المربّع. إذا كان لديك محتوى يجب أن يتجاوز الحدود المقترَحة، ننصحك باستخدام تنسيق يشجّع المستخدمين على استكشاف المساحة من خلال تحريك رؤوسهم. يمكن إلغاء القيد التلقائي لـ
recommendedContentBoxInFullSpace من خلال تطبيق
معدِّل مخصّص يستند إلى الحجم، مثل SubspaceModifier.requiredSizeIn. للحصول على سلوك غير محدود، اضبط allowUnboundedSubspace = true.
استدعِ recommendedContentBoxInFullSpace باستخدام Session الحالي للحصول على هذه الأبعاد المحدّدة حسب الحاجة. انظر المثال التالي:
val session = LocalSession.current session?.scene?.activitySpace?.recommendedContentBoxInFullSpace
إضافة مساحة فرعية إلى تطبيقك
يوضّح مثال الرمز البرمجي التالي كيفية إضافة Subspace و
PlanarEmbeddedSubspace إلى تطبيقك:
setContent { // This is a top-level subspace Subspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is an embedded subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in the top-level Subspace PlanarEmbeddedSubspace { SpatialPanel {} } }
لمزيد من التفاصيل، اطّلِع على مستندات المرجع الكاملة حول Subspace و
PlanarEmbeddedSubspace.