SubspaceModifier مشابه Compose modifier برای Composableها در Subspace است. SubspaceModifier به شما امکان میدهد Composableها را در فضای سهبعدی دستکاری کنید و به شما در موقعیتیابی، چرخش و افزودن رفتارها به گرههای طرحبندی سهبعدی کمک میکند.
طرح بندی
به طور پیشفرض، یک Subspace توسط فضای توصیهشده برای مشاهده یک برنامه محدود میشود. این مرزها هنگام اندازهگیری طرحبندی اجزای Subspace شما، مشابه مرزها در طرحبندیهای Compose دوبعدی ، استفاده میشوند.
مرزها را پر کنید
اصلاحکنندههای fillMaxSize ، fillMaxWidth ، fillMaxHeight و fillMaxDepth باعث میشوند محتوا (تا حدی) مرزهای والد خود را پر کند. استفاده از اصلاحکنندههای fill به برنامه شما کمک میکند تا محتوایی را که مستقل از ویژگیهای نمایشگر دستگاه 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 ترکیب کنید.
جابجایی و تغییر اندازه با composables
به کاربران اجازه دهید موقعیت و اندازه اشیاء را در فضای سهبعدی مستقیماً دستکاری کنند. میتوانید این اصلاحکنندهها را به اجزای منفرد (مانند SpatialPanel )، زیرفضاها و اجزای طرحبندی فضایی (مانند SpatialRow یا SpatialColumn ) اضافه کنید.
عناصر را جابجا کنید
وقتی اصلاحگر movable() وجود داشته باشد و فعال باشد، کنترلهای رابط کاربری قابل جابجایی نمایش داده میشوند که به کاربر اجازه میدهند عنصر را در فضای سهبعدی حرکت دهد. رفتار خاص این حرکت توسط movePolicy ارائه شده تعریف میشود:
-
MovePolicy.default(): سیستم حرکت را به طور کامل مدیریت میکند و به طور خودکار حالت و مقیاس جدید را بر اساس ورودی کاربر محاسبه و اعمال میکند. -
MovePolicy.custom(): سیستم موقعیت هدف را بر اساس ورودی محاسبه میکند، اما به طور خودکار آن را به عنصر مرتبط اعمال نمیکند. این برای محدود کردن حرکت یا ایجاد حرکت سفارشی در برنامه شما مفید است.
تغییر اندازه عناصر
وقتی اصلاحگر resizable() وجود داشته باشد و فعال باشد، کنترلهای رابط کاربری نمایش داده میشوند که به کاربر اجازه میدهند عنصر را در فضای سهبعدی تغییر اندازه دهد. رفتار خاص تغییر اندازه توسط resizePolicy ارائه شده تعریف میشود:
-
ResizePolicy.default(): سیستم به طور خودکار ژست تغییر اندازه را مدیریت میکند و ابعاد جدید را به محتوا اعمال میکند. -
ResizePolicy.custom(): سیستم یکSpatialResizeEventارائه میدهد و به طور خودکار نتیجه تغییر اندازه را به عنصر مرتبط اعمال نمیکند.
ظاهر ترکیبات را تغییر دهید
alpha
اصلاحکننده alpha میزان شفافیت عنصر و فرزندانش را تنظیم میکند، که در آن 0f نشان دهنده شفافیت کامل و 1.0f نشان دهنده مات بودن کامل است.
scale
اصلاحکنندهی scale ، محتوای کامپوننت را در امتداد محورهای افقی، عمودی و عمق مقیاسبندی میکند.
آزمایش و دسترسیپذیری
semantics
اصلاحکنندهی semantics ، برای استفاده در آزمایش و دسترسیپذیری، به گرهی layout، semantics اضافه میکند. به Semantics در Jetpack Compose و SemanticsModifier مراجعه کنید.
testTag
اصلاحکننده testTag مخفف SemanticsPropertyReceiver.testTag است که به چارچوبهای تست اجازه میدهد عنصر را در تستها پیدا کنند.