একটি SubspaceModifier হলো একটি Subspace কম্পোজেবল উপাদানগুলোর জন্য ব্যবহৃত কম্পোজ মডিফায়ারের অনুরূপ। একটি SubspaceModifier আপনাকে ত্রিমাত্রিক স্থানে কম্পোজেবল উপাদানগুলো পরিচালনা করতে দেয়, যা আপনাকে ত্রিমাত্রিক লেআউট নোডগুলোর অবস্থান নির্ধারণ, ঘূর্ণন এবং সেগুলোতে বিভিন্ন আচরণ যোগ করতে সাহায্য করে।
লেআউট
ডিফল্টরূপে, একটি Subspace কোনো অ্যাপ দেখার জন্য প্রস্তাবিত স্থান দ্বারা সীমাবদ্ধ থাকে। আপনার সাবস্পেস কম্পোনেন্টগুলোর লেআউট পরিমাপ করার সময় এই সীমানাগুলো ব্যবহৃত হয়, যা 2D কম্পোজ লেআউটের সীমানার মতোই।
সীমানা পূরণ করুন
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 এর একটি সংক্ষিপ্ত রূপ, যা টেস্ট ফ্রেমওয়ার্কগুলোকে টেস্টের মধ্যে এলিমেন্টটি খুঁজে পেতে সাহায্য করে।