Pengoptimalan layar besar mencakup kemampuan untuk menangani input keyboard eksternal, seperti menanggapi saat Spacebar ditekan untuk menjeda atau melanjutkan pemutaran video dan media lainnya. Fitur ini sangat berguna untuk tablet, yang sering terhubung ke keyboard eksternal, dan Chromebook, yang biasanya dilengkapi dengan keyboard eksternal tetapi dapat digunakan dalam mode tablet.
Jika media adalah satu-satunya elemen jendela (seperti pemutaran video layar penuh), tanggapi peristiwa penekanan tombol di tingkat layar di Jetpack Compose.
Praktik terbaik
Setiap kali aplikasi Anda memutar file media, pengguna harus dapat menjeda dan melanjutkan pemutaran dengan menekan Spasi pada keyboard fisik.
Bahan
KEYCODE_SPACE: Konstanta kode tombol untuk Spasi.onPreviewKeyEvent:Modifieryang memungkinkan komponen menangkap peristiwa tombol hardware saat komponen tersebut (atau salah satu turunannya) difokuskan.onKeyEvent: Serupa denganonPreviewKeyEvent,Modifierini memungkinkan komponen untuk menangkap peristiwa tombol hardware saat komponen tersebut (atau salah satu turunannya) difokuskan.
Langkah
Untuk merespons penekanan tombol keyboard di Jetpack Compose, aplikasi Anda harus memproses peristiwa penekanan tombol, memfilter peristiwa, dan merespons penekanan tombol yang dipilih, seperti penekanan tombol Spasi.
1. Memproses peristiwa keyboard
Dengan Jetpack Compose, Anda dapat memanfaatkan pengubah onPreviewKeyEvent atau onKeyEvent dalam komponen yang mengelola penekanan tombol.
Perbedaan utama antara kedua pengubah adalah tempat peristiwa dikirim jika pengubah tidak menggunakannya:
onPreviewKeyEvent— Mengirimkan peristiwa ke turunan pertamanya.onKeyEvent— Mengirimkan peristiwa ke induk composable.
2. Memfilter dan menangani penekanan tombol Spasi
Di dalam lambda pengubah onPreviewKeyEvent atau onKeyEvent, filter peristiwa tombol tempat rilis tombol (KeyEventType.KeyUp) cocok dengan Spasi (Key.Spacebar).
Tampilkan true jika kode Anda menangani peristiwa tersebut dan Anda tidak ingin peristiwa tersebut disebarkan lebih lanjut. Tampilkan false untuk mengizinkan komponen lain menangani peristiwa tersebut.
Opsi A: Menggunakan
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 }
Opsi B: Menggunakan
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 }
Hasil
Aplikasi Anda kini dapat merespons penekanan tombol Spasi untuk menjeda dan melanjutkan video atau media lainnya.
Referensi lainnya
Untuk mempelajari peristiwa keyboard lebih lanjut dan cara mengelolanya, lihat Menangani input keyboard.