آشنایی با اصلاح‌کننده‌های زیرفضا

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
هدست‌های واقعیت گسترده
عینک واقعیت گسترده سیمی

SubspaceModifier شبیه به اصلاح‌کننده Compose برای composableها در Subspace است. SubspaceModifier به شما امکان می‌دهد تا ترکیب‌پذیرها را در فضای سه‌بعدی دستکاری کنید و به شما کمک می‌کند تا گره‌های چیدمان سه‌بعدی را موقعیت‌یابی کنید، بچرخانید، و به آن‌ها رفتار اضافه کنید.

چیدمان

به‌طور پیش‌فرض، Subspace به فضای توصیه‌شده برای مشاهده برنامه محدود می‌شود. این مرزها هنگام اندازه‌گیری چیدمان مؤلفه‌های زیرفضای شما استفاده می‌شوند، مشابه مرزها در چیدمان‌های Compose دوبعدی.

پر کردن مرزها

اصلاح‌کننده‌های fillMaxSize، fillMaxWidth، fillMaxHeight، و fillMaxDepth باعث می‌شوند محتوا (تاحدی) مرزهای والد خود را پر کند. استفاده از اصلاح‌کننده‌های پر کردن به برنامه شما کمک می‌کند محتوا را مستقل از ویژگی‌های نمایشگر دستگاه XR چیدمان کند.

تنظیم اندازه و اندازه لازم

اصلاح‌کننده‌های size، width، height، و depth اندازه ترجیحی محتوا را اعلام می‌کنند. برای اعلام اندازه دقیق محتوا، از requiredSize،‏ requiredWidth،‏ requiredHeight، و requiredDepth استفاده کنید. این واحدها باید در dp مشخص شوند؛ برای تبدیل متر به dp، از Meter.toDp() استفاده کنید.

جایگاه composables

offset

اصلاح‌کننده offset ترکیب‌پذیر را در فضای سه‌بعدی در امتداد محورهای x، y، و z حرکت می‌دهد. این واحدها باید در dp مشخص شوند؛ برای تبدیل متر به dp، از Meter.toDp() استفاده کنید.

rotate

اصلاح‌کننده rotate ترکیب‌پذیر داده‌شده را در فضا می‌چرخاند. می‌توانید جهت و مقدار چرخش را به روش‌های مختلفی مشخص کنید:

  • بااستفاده از گام، انحراف، و غلتش که به‌ترتیب چرخش حول محورهای x، y، و z را مشخص می‌کنند،
  • بااستفاده از axisAngle، که Vector3 است و محور چرخش را نشان می‌دهد، و مقدار درجه‌ای که باید حول آن بچرخد،
  • بااستفاده از Quaternion که نشان‌دهنده چرخش است.

rotateToLookAtUser

اصلاح‌کننده rotateToLookAtUser به‌طور مداوم محتوا را می‌چرخاند تا همیشه رو به کاربر باشد. همچنین می‌توانید از این اصلاح‌کننده برای دستیابی به جلوه «بیلبورد» استفاده کنید که در آن محتوا می‌چرخد تا در محور Y رو به کاربر قرار گیرد، درحالی‌که همچنان عمودی و هم‌راستا با جاذبه باقی می‌ماند. برای انجام این کار، تغییردهنده rotateToLookAtUser را با تغییردهنده gravityAligned ترکیب کنید.

جابه‌جا کردن و تغییر اندازه با composables

به کاربران اجازه دهید مستقیماً موقعیت و اندازه اشیا را در فضای سه‌بعدی دستکاری کنند. می‌توانید این اصلاح‌کننده‌ها را به مؤلفه‌های تکی (مثل SpatialPanel)، زیرفضاها، و مؤلفه‌های چیدمان فضایی (مثل SpatialRow یا SpatialColumn) اضافه کنید.

انتقال عناصر

وقتی اصلاح‌کننده movable وجود داشته باشد و فعال باشد، کنترل‌های میانای کاربر کشیدنی نشان داده می‌شود که به کاربر اجازه می‌دهد عنصر را در فضای سه‌بعدی جابه‌جا کند. رفتار خاص این حرکت توسط movePolicy ارائه‌شده تعریف می‌شود:

  • MovePolicy.default: سیستم حرکت را به‌طور کامل مدیریت می‌کند و به‌طور خودکار حالت و مقیاس جدید را براساس ورودی کاربر محاسبه و اعمال می‌کند.
  • MovePolicy.custom: سیستم «ژست» هدف را براساس ورودی محاسبه می‌کند، اما آن را به‌طور خودکار برای عنصر مرتبط اعمال نمی‌کند. این ویژگی برای محدود کردن حرکت یا ایجاد حرکت سفارشی در برنامه شما مفید است.

تغییر اندازه عناصر

وقتی اصلاح‌کننده resizable() وجود داشته باشد و فعال باشد، کنترل‌های میانای کاربر نشان داده خواهد شد که به کاربر اجازه می‌دهد اندازه عنصر را در فضای سه‌بعدی تغییر دهد. رفتار خاص تغییر اندازه با resizePolicy ارائه‌شده تعریف می‌شود:

  • ResizePolicy.default(): سیستم به‌طور خودکار اشاره تغییر اندازه را مدیریت می‌کند و ابعاد جدید را روی محتوا اعمال می‌کند.
  • ResizePolicy.custom(): سیستم SpatialResizeEvent را ارائه می‌دهد و به‌طور خودکار نتیجه تغییر اندازه را در عنصر مربوطه اعمال نمی‌کند.

تغییر ظاهر composableها

alpha

اصلاح‌کننده alpha میزان کدر بودن عنصر و فرزندان آن را تنظیم می‌کند، که در آن 0f نشان‌دهنده کاملاً شفاف و 1.0f نشان‌دهنده کاملاً کدر است.

scale

اصلاح‌کننده scale محتوای ترکیب‌پذیر را در امتداد محورهای افقی، عمودی، و عمق مقیاس‌بندی می‌کند.

آزمایش و دسترس‌پذیری

semantics

اصلاح‌کننده semantics معناشناسی را به گره چیدمان اضافه می‌کند تا در آزمایش و دسترس‌پذیری استفاده شود. معناشناسی در Jetpack Compose و SemanticsModifier را ببینید.

testTag

اصلاح‌کننده testTag مخفف SemanticsPropertyReceiver.testTag است که به چارچوب‌های آزمایشی اجازه می‌دهد عنصر را در آزمایش‌ها پیدا کنند.