Jetpack Compose Glimmer-এ পরোক্ষ পয়েন্টার ইনপুট ম্যানেজ করা

প্রযোজ্য 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 মডিফায়ারে পাস করা যায়।