يتيح المعدِّل onIndirectPointerGesture للمكوّن تلقّي أحداث المؤشر غير المباشرة ذات المستوى العالي والاستجابة لها، مثل تلك التي تنشأ من لوحة اللمس في الجهاز. استخدِم هذا المعدِّل لتسجيل ومعالجة الإيماءات الواردة من لوحة اللمس أو مصدر مشابه.
مساحة عرض واجهة برمجة التطبيقات
هناك أربع دوال ردّ يمكن أن يستخدمها تطبيقك للتحكّم في المعالجة:
onClick: يتم تشغيل هذا الحدث عند النقر أو الضغط بنجاح بدون تحريك الإصبع بشكل كبير أفقيًا.-
onSwipeForward: يتم تشغيله عندما يتجاوز التمرير السريع أفقيًا الحد الأدنى للمسافة والسرعة في الاتجاه الأمامي. -
onSwipeBackward: يتم تشغيل هذا الإجراء عندما يتجاوز التمرير السريع أفقيًا الحد الأدنى للمسافة والسرعة في الاتجاه الخلفي. Enabled: عند ضبط القيمة علىfalse، يتم تجاهل المعدِّل ولا يتم استدعاء أي عمليات إعادة استدعاء.
سلوك النظام عند التمرير سريعًا والتنقّل في الشاشة
يستخدم النظام حدًا أدنى للمسافة التي يجب أن تقطعها إصبعك على الشاشة للتمييز بين النقرة والتمرير السريع.
- إذا تحرّك المؤشر بشكل كبير أثناء حالة الضغط، سيتم إلغاء
onClick. - إذا تراجع المؤشر بشكل كبير أثناء الحركة، سيتم إبطال إيماءة التمرير السريع.
مثال: إعداد معالجة عمليات التمرير السريع والنقرات على أحد المكوّنات
يُعدِّل الرمز التالي إعدادات التعامل مع التمريرات السريعة والنقرات على عنصر Box قابل للتركيز:
@Composable @Sampled fun OnIndirectPointerGestureSample() { Box( modifier = Modifier.fillMaxSize() .onIndirectPointerGesture( enabled = true, onSwipeForward = { /* onSwipeForward */ }, onSwipeBackward = { /* onSwipeBackward */ }, onClick = { /* onClick */ }, ) .focusTarget() ) { // App() } }
النقاط الرئيسية حول الرمز
- يتطلّب العنصر
onIndirectPointerGestureالتركيز، لذا يتم تطبيقfocusTargetأيضًا لجعل العنصرBoxقابلاً للتركيز. يمكنك استخدامfocusTargetأو معدِّل آخر يتيح التركيز، مثلsurface. بدون التركيز، لا يمكن للمعدِّل التأثير في أحداث المؤشر غير المباشرة. - يُنفِّذ هذا المثال كلّاً من معاودة الاتصال
onSwipeForwardوonClick، وبالتالي يتم اعتراض الإيماءات التي يتم رصدها، مثل التمرير السريع والنقر، واستهلاكها، ولا تصل إلى الحاويات الرئيسية. ومع ذلك، يمكنك أيضًا ترك دالة ردّ نداء معيّنة فارغة لتمرير إيماءة إلى أداة تعديلonIndirectPointerGestureفي حاوية رئيسية. -