การเพิ่มประสิทธิภาพสำหรับหน้าจอขนาดใหญ่รวมถึงความสามารถในการจัดการอินพุตจากแป้นพิมพ์ภายนอก เช่น การตอบสนองต่อการกด Spacebar เพื่อหยุดชั่วคราวหรือ เล่นวิดีโอและสื่ออื่นๆ ต่อ ซึ่งมีประโยชน์อย่างยิ่งสำหรับแท็บเล็ตที่มักจะเชื่อมต่อกับแป้นพิมพ์ภายนอก และ Chromebook ที่มักจะมาพร้อมกับแป้นพิมพ์ภายนอก แต่สามารถใช้ในโหมดแท็บเล็ตได้
เมื่อสื่อเป็นองค์ประกอบเดียวของหน้าต่าง (เช่น การเล่นวิดีโอแบบเต็มหน้าจอ) ให้ตอบสนองต่อเหตุการณ์การกดแป้นที่ระดับหน้าจอใน Jetpack Compose
แนวทางปฏิบัติแนะนำ
เมื่อใดก็ตามที่แอปเล่นไฟล์สื่อ ผู้ใช้ควรจะหยุดชั่วคราวและเล่นต่อได้โดยการกด Spacebar บนแป้นพิมพ์จริง
ส่วนผสม
KEYCODE_SPACE: ค่าคงที่ของรหัสแป้นสำหรับ SpacebaronPreviewKeyEvent:Modifierที่ช่วยให้คอมโพเนนต์ดักจับเหตุการณ์แป้นฮาร์ดแวร์ได้เมื่อคอมโพเนนต์ (หรือคอมโพเนนต์ย่อยรายการใดรายการหนึ่ง) อยู่ในโฟกัสonKeyEvent:Modifierนี้คล้ายกับonPreviewKeyEventโดยช่วยให้คอมโพเนนต์ดักจับเหตุการณ์แป้นฮาร์ดแวร์ได้เมื่อคอมโพเนนต์ (หรือคอมโพเนนต์ย่อยรายการใดรายการหนึ่ง) อยู่ในโฟกัส
ขั้นตอน
หากต้องการตอบสนองต่อการกดแป้นบนแป้นพิมพ์ใน Jetpack Compose แอปจะต้องรอรับเหตุการณ์การกดแป้น กรองเหตุการณ์ และตอบสนองต่อการกดแป้นที่เลือก เช่น การกดแป้น Spacebar
1. รอรับเหตุการณ์แป้นพิมพ์
เมื่อใช้ Jetpack Compose คุณสามารถใช้ประโยชน์จากตัวแก้ไข onPreviewKeyEvent หรือ onKeyEvent ภายในคอมโพเนนต์ที่จัดการการกดแป้น
ความแตกต่างหลักระหว่างตัวแก้ไขทั้งสองคือตำแหน่งที่จะส่งเหตุการณ์หากตัวแก้ไขไม่ใช้เหตุการณ์นั้น
onPreviewKeyEvent\- ส่งเหตุการณ์ไปยังคอมโพเนนต์ย่อยรายการแรกonKeyEvent\- ส่งเหตุการณ์ไปยังคอมโพเนนต์หลักของคอมโพสได้
2. กรองและจัดการการกด Spacebar
ภายในแลมบ์ดาของตัวแก้ไข onPreviewKeyEvent หรือ onKeyEvent ให้กรองเหตุการณ์แป้นที่การปล่อยแป้น (KeyEventType.KeyUp) ตรงกับ Spacebar (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 }
ผลลัพธ์
ตอนนี้แอปสามารถตอบสนองต่อการกดแป้น Spacebar เพื่อหยุดชั่วคราวและเล่นวิดีโอหรือสื่ออื่นๆ ต่อได้แล้ว
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับเหตุการณ์แป้นพิมพ์และวิธีจัดการได้ที่หัวข้อ จัดการอินพุตจากแป้นพิมพ์