Zur Optimierung für große Bildschirme gehört auch die Möglichkeit, externe Tastatureingaben zu verarbeiten, z. B. die Reaktion auf das Drücken der Leertaste, um die Wiedergabe von Videos und anderen Medien zu pausieren oder fortzusetzen. Das ist besonders nützlich für Tablets, die oft mit externen Tastaturen verbunden werden, und Chromebooks, die normalerweise mit externen Tastaturen geliefert werden, aber im Tablet-Modus verwendet werden können.
Wenn Medien das einzige Element des Fensters sind (z. B. bei der Videovollbildwiedergabe), reagieren Sie in Jetpack Compose auf Tastendruckereignisse auf Bildschirmebene.
Best Practices
Wenn in Ihrer App eine Mediendatei wiedergegeben wird, sollten Nutzer die Wiedergabe durch Drücken der Leertaste auf einer physischen Tastatur pausieren und fortsetzen können.
Zutaten
KEYCODE_SPACE: Tastencode-Konstante für die Leertaste.onPreviewKeyEvent:Modifier, mit dem eine Komponente Hardwaretastenereignisse abfangen kann, wenn sie (oder eines ihrer untergeordneten Elemente) fokussiert ist.onKeyEvent: Ähnlich wieonPreviewKeyEventermöglicht dieserModifiereiner Komponente, Hardwaretastenereignisse abzufangen, wenn sie (oder eines ihrer untergeordneten Elemente) fokussiert ist.
Schritte
Damit Ihre App in Jetpack Compose auf Tastendrücke reagieren kann, muss sie auf Tastendruckereignisse warten, die Ereignisse filtern und auf ausgewählte Tastendrücke reagieren, z. B. auf das Drücken der Leertaste.
1. Auf Tastaturereignisse warten
In Jetpack Compose können Sie entweder den Modifikator onPreviewKeyEvent oder onKeyEvent in der Komponente verwenden, die den Tastendruck verwaltet.
Der Hauptunterschied zwischen den beiden Modifikatoren besteht darin, wohin das Ereignis gesendet wird, wenn es nicht vom Modifikator verarbeitet wird:
onPreviewKeyEvent: Sendet das Ereignis an das erste untergeordnete Element.onKeyEvent: Leitet das Ereignis an das übergeordnete Element des Komponierbaren weiter.
2. Leertastendrücke filtern und verarbeiten
Filtern Sie im Lambda-Modifikator onPreviewKeyEvent oder onKeyEvent nach Tastenereignissen, bei denen das Loslassen der Taste (KeyEventType.KeyUp) der Leertaste (Key.Spacebar) entspricht.
Gib true zurück, wenn dein Code das Ereignis verarbeitet und du nicht möchtest, dass das Ereignis weitergegeben wird. Geben Sie false zurück, damit andere Komponenten das Ereignis verarbeiten können.
Option A:
onPreviewKeyEventverwendenColumn( modifier = Modifier.onPreviewKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
Option B:
onKeyEventverwendenColumn( modifier = Modifier.onKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
Ergebnisse
Ihre App kann jetzt auf das Drücken der Leertaste reagieren, um ein Video oder andere Medien zu pausieren und fortzusetzen.
Zusätzliche Ressourcen
Weitere Informationen zu Tastaturereignissen und ihrer Verwaltung finden Sie unter Tastatureingaben verarbeiten.