إضافة مساحة فرعية إلى تطبيقك

أجهزة XR المعنيّة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة الواقع الممتد.
سماعات رأس بنظام الواقع الممتد
نظارات الواقع الممتد السلكية

المساحة الفرعية هي جزء من المساحة الثلاثية الأبعاد داخل تطبيقك، ويمكنك وضع نماذج ثلاثية الأبعاد فيها وإنشاء تصاميم ثلاثية الأبعاد وإضافة عمق إلى المحتوى الثنائي الأبعاد. لا يتم عرض مساحة فرعية إلا عند تفعيل ميزة "التجسيم الصوتي". في "مساحة المنزل" أو على الأجهزة غير المتوافقة مع XR، يتم تجاهل أي رمز برمجي ضمن تلك المساحة الفرعية.

يمكنك استخدام عناصر Subspace القابلة للإنشاء، مثل SpatialPanel وSpatialRow وSpatialColumn، لإنشاء التصميم ووضع المحتوى الثنائي الأبعاد في المساحة الثلاثية الأبعاد. لعرض محتوى ثلاثي الأبعاد، استخدِم Subspace Composable المناسب، مثل SceneCoreEntity للنماذج الثلاثية الأبعاد وSpatialExternalSurface للصور المجسمة. بعض عناصر XR، مثل 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 لمزيد من التفاصيل.