প্রযোজ্য XR ডিভাইস
এইসব XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে এই নির্দেশিকা আপনাকে সাহায্য করে।
onIndirectPointerGesture মডিফায়ার কম্পোনেন্টকে হাই-লেভেল ইনডাইরেক্ট পয়েন্টার ইভেন্ট গ্রহণ করতে ও তার উত্তর দিতে দেয়, যেমন ডিভাইসের
টাচপ্যাড থেকে আসা ইভেন্ট। টাচপ্যাড বা একই ধরনের সোর্স থেকে আসা জেসচার ক্যাপচার ও প্রসেস করতে এই মডিফায়ার ব্যবহার করুন।
API সারফেস
হ্যান্ডেল করা কন্ট্রোল করতে আপনার অ্যাপ চারটি কলব্যাক ব্যবহার করতে পারে:
onClick: উল্লেখযোগ্য অনুভূমিক মুভমেন্ট ছাড়াই সফল ট্যাপ বা ক্লিক করা হলে ট্রিগার হয়।onSwipeForward: সামনের দিকে অনুভূমিক সোয়াইপ দূরত্ব ও গতি সংক্রান্ত থ্রেশহোল্ড অতিক্রম করলে ট্রিগার হয়।onSwipeBackward: অনুভূমিক সোয়াইপ করার সময় দূরত্ব এবং ভেলোসিটি থ্রেশহোল্ড অতিক্রম করলে এটি ট্রিগার হয়।Enabled:falseহিসেবে সেট করা থাকলে, মডিফায়ার উপেক্ষা করা হয় এবং কোনও কলব্যাক ইনভোক করা হয় না।
সোয়াইপ ও স্ক্রল করার সময় সিস্টেমের আচরণ
সিস্টেম, ক্লিক ও সোয়াইপের মধ্যে পার্থক্য করতে টাচ স্লোপ থ্রেশহোল্ড ব্যবহার করে।
- ডাউন স্টেটে থাকাকালীন পয়েন্টারটি উল্লেখযোগ্যভাবে সরলে,
onClickবাতিল হয়ে যায়। - নড়াচড়া করার সময় পয়েন্টার যদি উল্লেখযোগ্যভাবে ব্যাকট্র্যাক করে, তাহলে সোয়াইপ জেসচার অকার্যকর হয়ে যায়।
উদাহরণ: কোনও কম্পোনেন্টে সোয়াইপ ও ক্লিক করার জন্য হ্যান্ডলিং সেট-আপ করা
নিচের কোডটি ফোকাস করা যায় এমন Box-এ সোয়াইপ ও ক্লিক করার হ্যান্ডেলিং সেট-আপ করে:
@Composable fun OnIndirectPointerGestureSample() { var lastGesture by remember { mutableStateOf("None") } Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { lastGesture = "Forward" }, onSwipeBackward = { lastGesture = "Backward" }, onClick = { lastGesture = "Click" }, ) .focusTarget(), contentAlignment = Alignment.Center, ) { Text("Last Gesture: $lastGesture") } }
কোড সম্পর্কে গুরুত্বপূর্ণ পয়েন্ট
onIndirectPointerGesture-এ ফোকাস করতে হয়, তাইBox-কে ফোকাস করার উপযুক্ত করে তুলতেfocusTarget-ও প্রয়োগ করা হয়। আপনিfocusTargetঅথবা ফোকাস চালু করার অন্য কোনও মডিফায়ার যেমনsurfaceব্যবহার করতে পারেন। ফোকাস না থাকলে, মডিফায়ার পরোক্ষ পয়েন্টার ইভেন্টের উপর কাজ করতে পারে না।- এই উদাহরণে
onSwipeForwardওonClick, দুটি কলব্যাকই প্রয়োগ করা হয়েছে, তাই শনাক্ত করা সোয়াইপ ও ক্লিক জেসচার ইন্টারসেপ্ট ও কনজিউম করা হয়, এবং পেরেন্ট কন্টেনারে পৌঁছায় না। তবে, আপনি কোনও নির্দিষ্ট কলব্যাক নাল রেখেও কোনও জেসচারকে পেরেন্ট কন্টেনারেরonIndirectPointerGestureমডিফায়ারের মধ্যে দিয়ে পাস করতে পারেন।