المساحة الفرعية هي جزء من المساحة الثلاثية الأبعاد داخل تطبيقك حيث يمكنك وضع نماذج ثلاثية الأبعاد وإنشاء تنسيقات ثلاثية الأبعاد وإضافة عمق إلى المحتوى الثنائي الأبعاد. لا يتم عرض المساحة الفرعية إلا عند تفعيل ميزة "المعالجة المكانية". وفي Home Space أو على الأجهزة غير المتوافقة مع الواقع الممتد، يتم تجاهل أي رمز برمجي ضمن هذه المساحة الفرعية.
لمزيد من المعلومات حول التنسيقات المكانية والمكوّنات التي يمكنك استخدامها ضمن مساحة فرعية، يُرجى الاطّلاع على المكوّنات المكانية.
لمحة عن التدرّجات الهرمية للمساحات الفرعية
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 باستخدام الجلسة الحالية للحصول على هذه السمات المحدّدة حسب الحاجة. انظر المثال التالي:
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 لمزيد من التفاصيل.