المساحة الفرعية هي قسم من المساحة الثلاثية الأبعاد داخل تطبيقك حيث يمكنك وضع نماذج ثلاثية الأبعاد وإنشاء تصاميم ثلاثية الأبعاد وإضافة عمق إلى المحتوى ثنائي الأبعاد. لا يتم عرض المساحة الفرعية إلا عند تفعيل ميزة "الصوت المكاني". في "المساحة الرئيسية" أو على الأجهزة غير المزوّدة بتقنية XR، يتم تجاهل أي رمز ضمن هذا الفضاء الفرعي.
يمكنك استخدام العناصر القابلة للتجميع في المساحات الفرعية، مثل Volume
وSpatialPanel
لوضع النماذج الثلاثية الأبعاد. إنّ بعض مكوّنات الواقع المعزّز، مثل Orbiter
أو
SpatialDialog
، هي عناصر قابلة للتجميع ثنائية الأبعاد يمكن استخدامها في أي مكان في
تسلسل واجهة المستخدم ثنائية الأبعاد، ولكن يجب استدعاء عناصر SubspaceComposable
في
الفضاء الفرعي لتطبيقك. لإجراء ذلك، استخدِم العنصر القابل للتجميع ApplicationSubspace
أو
العنصر القابل للتجميع Subspace
.
كما يوحي الاسم، يجب أن يحتوي العنصر القابل للتجميع ApplicationSubspace
على
كل المحتوى المكاني في تطبيقك. عنصر Subspace
القابل للتجميع مثالي
لإدراج قسم من المساحة الثلاثية الأبعاد بشكل أعمق في التسلسل الهرمي الحالي لواجهة المستخدم في تطبيقك.
كما هو الحال مع أي عنصر قابل للتجميع آخر، يمكنك استدعاء Subspace
مباشرةً في التدرّج الهرمي لواجهة مستخدم ثنائية الأبعاد. ومع ذلك، من المهم أن تكون على دراية بالنتائج المترتبة على مكان
في التسلسل الهرمي الذي تستدعي فيه Subspace
.
لمحة عن تسلسلات المساحات الفرعية الهرمية
المساحة الفرعية ذات المستوى الأعلى هي المساحة الفرعية الخارجية التي يستدعيها تطبيقك. استخدِم العنصر القابل للتجميع
ApplicationSubspace
للمساحة الفرعية ذات المستوى الأعلى، ولكن إذا
كنت تستخدِم العنصر القابل للتجميع "المساحة الفرعية" فقط في تطبيقك، سيكون العنصر القابل للتجميعSubspace
الخارجي هو المساحة الفرعية ذات المستوى الأعلى. تكون هذه المساحة الفرعية من المستوى الأعلى محدودة تلقائيًا بالمساحة المقترَحة لعرض التطبيق، وهي عادةً ما تكون المكان الذي يتم فيه وضع التنسيق المكاني لتطبيقك وSpatialPanel
. إذا كنت بحاجة إلى
تغيير حدود الفضاء الفرعي من المستوى الأعلى، نقْل قيمة مختلفة
VolumeConstraints
إلى ApplicationSubspace
.
ومع ذلك، في حال تداخل مساحة فرعية أخرى داخل تسلسل هرمي لواجهة مستخدم ثنائية الأبعاد في لوحة مضمّنة في المساحة الفرعية ذات المستوى الأعلى، سيختلف سلوك المساحة الفرعية المُدمجة.
هناك اختلافان رئيسيان بين المساحات الفرعية المُدمجة والمساحات Subspace
من المستوى الأعلى:
- وتشارك هذه العناصر في التخطيط ثنائي الأبعاد الذي يتمّ استدعاؤها فيه. وهذا يعني أنّه سيتم تقييد ارتفاع المساحة الفرعية وعرضه بالارتفاع والعرض لتنسيقها الرئيسي ثنائي الأبعاد.
- وتتصرف هذه العناصر كعناصر فرعية للكيان الذي يتم استدعاؤها فيه. وهذا يعني أنّه،
في حال استدعاء عنصر
Subspace
قابل للتجميع مُدمَج داخلSpatialPanel
، يكون هذا الفضاء الفرعي تابعًا لعنصرSpatialPanel
الذي تم استدعاؤه.
توفّر سلوكيات المساحة الفرعية المُدمجة إمكانات مثل:
- نقل العنصر الثانوي مع العنصر الرئيسي
- إزاحة الموقع الجغرافي للطفل باستخدام الإزاحة
SubspaceModifier
- عرض عنصر ثلاثي الأبعاد يحوم فوق واجهة المستخدم ثنائية الأبعاد ويطابق الارتفاع والعرض المناسبَين للمساحة في التنسيق ثنائي الأبعاد
إضافة مساحة فرعية إلى تطبيقك
يوضّح مثال الرمز البرمجي التالي كيفية إضافة مساحات فرعية من المستوى الأعلى والمُدمجة إلى تطبيقك:
setContent { // This is a top-level subspace ApplicationSubspace { SpatialPanel { MyComposable() } } }
@Composable private fun MyComposable() { Row { PrimaryPane() SecondaryPane() } } @Composable private fun PrimaryPane() { // This is a nested subspace, because PrimaryPane is in a SpatialPanel // and that SpatialPanel is in a top-level Subspace Subspace { ObjectInAVolume(true) } }