تشمل عملية تحسين التطبيقات للشاشات الكبيرة إمكانية التعامل مع الإدخالات من لوحة المفاتيح الخارجية، مثل الاستجابة للضغط على مفتاح المسافة لإيقاف تشغيل الفيديوهات والوسائط الأخرى مؤقتًا أو استئنافه. ويُعدّ ذلك مفيدًا بشكل خاص للأجهزة اللوحية التي غالبًا ما يتم توصيلها بلوحات مفاتيح خارجية، وأجهزة Chromebook التي تأتي عادةً مع لوحات مفاتيح خارجية ولكن يمكن استخدامها في وضع الجهاز اللوحي.
عندما تكون الوسائط هي العنصر الوحيد في النافذة (مثل تشغيل الفيديو في وضع ملء الشاشة)، يمكنك الاستجابة لأحداث الضغط على المفاتيح على مستوى الشاشة في Jetpack Compose.
أفضل الممارسات
عندما يشغّل تطبيقك ملف وسائط، يجب أن يتمكّن المستخدمون من إيقاف التشغيل مؤقتًا واستئنافه بالضغط على مفتاح المسافة في لوحة المفاتيح الفعلية.
المكوّنات
-
KEYCODE_SPACE: ثابت رمز المفتاح لمفتاح المسافة onPreviewKeyEvent:Modifierيتيح لأحد المكوّنات اعتراض أحداث المفاتيح في الأجهزة عندما يتم التركيز عليه (أو على أحد العناصر الفرعية).onKeyEvent: على غرارonPreviewKeyEvent، يتيح هذاModifierللمكوّن اعتراض أحداث مفاتيح الأجهزة عندما يتم التركيز عليه (أو على أحد العناصر الثانوية).
الخطوات
للاستجابة لضغطات مفاتيح لوحة المفاتيح في Jetpack Compose، يجب أن يستمع تطبيقك إلى أحداث الضغط على المفاتيح، وفلترة الأحداث، والاستجابة لضغطات مفاتيح محدّدة، مثل الضغط على مفتاح المسافة.
1. الاستماع إلى أحداث لوحة المفاتيح
باستخدام Jetpack Compose، يمكنك الاستفادة من المُعدِّل onPreviewKeyEvent أو
onKeyEvent ضمن المكوّن الذي يدير ضغطات المفاتيح.
يتمثل الاختلاف الرئيسي بين المُعدِّلَين في مكان إرسال الحدث إذا لم يستهلكه المُعدِّل:
-
onPreviewKeyEvent: لإرسال الحدث إلى العنصر الفرعي الأول -
onKeyEvent: لإرسال الحدث إلى العنصر الرئيسي للدالة المركّبة
2. فلترة الضغطات على مفتاح المسافة والتعامل معها
داخل دالة lambda لمعدِّل onPreviewKeyEvent أو onKeyEvent، يمكنك فلترة أحداث
المفاتيح التي يتطابق فيها تحرير المفتاح (KeyEventType.KeyUp) مع مفتاح المسافة
(Key.Spacebar).
يجب عرض القيمة true إذا كان الرمز يعالج الحدث ولا تريد أن ينتشر الحدث أكثر من ذلك. يجب عرض القيمة false للسماح للمكوّنات الأخرى بمعالجة الحدث.
الخيار "أ": استخدام
onPreviewKeyEventColumn( modifier = Modifier.onPreviewKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
الخيار "ب": استخدام
onKeyEventColumn( modifier = Modifier.onKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
النتائج
يمكن لتطبيقك الآن الاستجابة للضغط على مفتاح المسافة لإيقاف فيديو أو وسائط أخرى مؤقتًا واستئناف تشغيلها.
مراجع إضافية
لمزيد من المعلومات عن أحداث لوحة المفاتيح وكيفية إدارتها، يُرجى الاطّلاع على التعامل مع إدخال لوحة المفاتيح.