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