تشمل ميزة التحسين للشاشات الكبيرة إمكانية التعامل مع عمليات الإدخال باستخدام لوحة مفاتيح خارجية، مثل الاستجابة للضغط على مفتاح المسافة لإيقاف الفيديوهات والوسائط الأخرى مؤقتًا أو استئناف تشغيلها. ويكون ذلك مفيدًا بشكل خاص للأجهزة اللوحية التي يتم توصيلها غالبًا بلوحات مفاتيح خارجية، وأجهزة 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 }
النتائج
يمكن لتطبيقك الآن الاستجابة لضغطات مفتاح المسافة لإيقاف فيديو أو وسائط أخرى مؤقتًا واستئناف تشغيلها.
مراجع إضافية
لمزيد من المعلومات عن أحداث لوحة المفاتيح وكيفية إدارتها، يمكنك الاطّلاع على التعامل مع إدخال لوحة المفاتيح.