فهم معدِّلات المساحة الفرعية

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

يشبه SubspaceModifier أداة تعديل Compose للعناصر القابلة للإنشاء في Subspace. تتيح لك SubspaceModifier معالجة العناصر القابلة للإنشاء في مساحة ثلاثية الأبعاد، ما يساعدك في تحديد موضع عقد التنسيق ثلاثي الأبعاد وتدويرها وإضافة سلوكيات إليها.

التنسيق

تكون Subspace تلقائيًا محدودة بالمساحة المقترَحة لعرض أحد التطبيقات. تُستخدَم هذه الحدود عند قياس تنسيق مكوّنات المساحة الفرعية ، على غرار الحدود في تنسيقات Compose ثنائية الأبعاد.

ملء الحدود

تجعل أدوات التعديل fillMaxSize وfillMaxWidth وfillMaxHeight و fillMaxDepth المحتوى يملأ (جزئيًا) حدود العنصر الرئيسي. تساعد أدوات تعديل الملء في تنسيق المحتوى في تطبيقك بشكل مستقل عن خصائص عرض جهاز XR.

ضبط الحجم والحجم المطلوب

تحدّد أدوات التعديل size وwidth وheight وdepth الحجم المفضّل للمحتوى. لتحديد الحجم الدقيق للـ محتوى، استخدِم requiredSize وrequiredWidth و requiredHeight وrequiredDepth. يجب تحديد هذه الوحدات بوحدة في dp، وللتحويل من الأمتار إلى dp، استخدِم Meter.toDp().

تحديد موضع العناصر القابلة للإنشاء

offset

تنقل أداة التعديل offset العنصر القابل للإنشاء في مساحة ثلاثية الأبعاد على طول المحاور x وy و وz. يجب تحديد هذه الوحدات بوحدة dp، وللتحويل من الأمتار إلى dp، استخدِم Meter.toDp().

rotate

تُدوّر أداة التعديل rotate العنصر القابل للإنشاء المحدّد في المساحة. يمكنك تحديد اتجاه التدوير ومقداره بطرق مختلفة:

  • باستخدام الانحراف والاتجاه والانقلاب، التي تحدّد التدوير حول المحاور x وy وz على التوالي،
  • باستخدام axisAngle، وهو Vector3 يمثّل محور التدوير، ومقدار الدرجات التي يجب تدويرها حوله،
  • باستخدام Quaternion الذي يمثّل التدوير.

rotateToLookAtUser

تُدوّر أداة التعديل rotateToLookAtUser المحتوى باستمرار بحيث يكون مواجهًا للمستخدم في جميع الأوقات. يمكنك أيضًا استخدام أداة التعديل هذه لتحقيق تأثير "اللوحة الإعلانية" حيث يتم تدوير المحتوى لمواجهة المستخدم على المحور Y مع الحفاظ على وضعه مستقيمًا ومحاذيًا للجاذبية. لإجراء ذلك، ادمِج أداة التعديل rotateToLookAtUser مع أداة التعديل gravityAligned.

نقل العناصر القابلة للإنشاء وتغيير حجمها

يمكنك السماح للمستخدمين بمعالجة موضع الكائنات وحجمها مباشرةً في مساحة ثلاثية الأبعاد. يمكنك إضافة أدوات التعديل هذه إلى المكوّنات الفردية (مثل 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، ما يسمح لأُطر الاختبار بالعثور على العنصر في الاختبارات.