Jetpack Compose Glimmer-এ পরোক্ষ পয়েন্টার ইনপুট পরিচালনা করুন

প্রযোজ্য এক্সআর ডিভাইস
এই নির্দেশিকা আপনাকে এই ধরনের এক্সআর ডিভাইসগুলির জন্য অভিজ্ঞতা তৈরি করতে সাহায্য করে।
অডিও এবং
ডিসপ্লে গ্লাস

onIndirectPointerGesture মডিফায়ারটি কম্পোনেন্টকে উচ্চ-স্তরের পরোক্ষ পয়েন্টার ইভেন্ট গ্রহণ ও তাতে সাড়া দিতে সাহায্য করে, যেমন ডিভাইসের টাচপ্যাড থেকে আসা ইভেন্ট। টাচপ্যাড বা অনুরূপ উৎস থেকে আসা জেসচার ক্যাপচার ও প্রসেস করতে এই মডিফায়ারটি ব্যবহার করুন।

এপিআই পৃষ্ঠ

হ্যান্ডলিং নিয়ন্ত্রণের জন্য আপনার অ্যাপ চারটি কলব্যাক ব্যবহার করতে পারে:

  • 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 উভয় কলব্যাকই প্রয়োগ করে, ফলে শনাক্ত হওয়া সোয়াইপ এবং ক্লিক জেসচারগুলো ইন্টারসেপ্ট ও কনজিউম করা হয় এবং সেগুলো প্যারেন্ট কন্টেইনারে পৌঁছায় না। তবে, আপনি কোনো নির্দিষ্ট কলব্যাককে null রেখেও একটি জেসচারকে প্যারেন্ট কন্টেইনারের onIndirectPointerGesture মডিফায়ারে পাস করে দিতে পারেন।