Optymalizacja pod kątem dużych ekranów obejmuje możliwość obsługi danych wejściowych z zewnętrznej klawiatury, np. reagowanie na naciśnięcie spacji w celu wstrzymania lub wznowienia odtwarzania filmów i innych multimediów. Jest to szczególnie przydatne w przypadku tabletów, które często łączą się z klawiaturami zewnętrznymi, oraz Chromebooków, które zwykle są wyposażone w klawiatury zewnętrzne, ale mogą być używane w trybie tabletu.
Gdy multimedia są jedynym elementem okna (np. podczas odtwarzania wideo pełnoekranowego), reaguj na zdarzenia naciśnięcia klawiszy na poziomie ekranu w Jetpack Compose.
Sprawdzone metody
Za każdym razem, gdy aplikacja odtwarza plik multimedialny, użytkownicy powinni mieć możliwość wstrzymania i wznowienia odtwarzania przez naciśnięcie spacji na klawiaturze fizycznej.
Składniki
KEYCODE_SPACE: stała kodu klawisza dla spacji.onPreviewKeyEvent:Modifier, który umożliwia komponentowi przechwytywanie zdarzeń klawiszy sprzętowych, gdy on (lub jeden z jego elementów podrzędnych) jest zaznaczony.onKeyEvent: podobnie jakonPreviewKeyEvent, tenModifierumożliwia komponentowi przechwytywanie zdarzeń klawiszy sprzętowych, gdy on (lub jeden z jego elementów podrzędnych) jest zaznaczony.
Kroki
Aby reagować na naciśnięcia klawiszy klawiatury w Jetpack Compose, aplikacja musi nasłuchiwać zdarzeń naciśnięcia klawiszy, filtrować je i reagować na wybrane naciśnięcia, np. naciśnięcie spacji.
1. Nasłuchiwanie zdarzeń klawiatury
W Jetpack Compose możesz użyć modyfikatora onPreviewKeyEvent lub onKeyEvent w komponencie, który zarządza naciśnięciem klawisza.
Główna różnica między tymi 2 modyfikatorami polega na tym, gdzie zdarzenie jest wysyłane, jeśli modyfikator go nie wykorzystuje:
onPreviewKeyEvent– wysyła zdarzenie do pierwszego elementu podrzędnego.onKeyEvent– wysyła zdarzenie do elementu nadrzędnego funkcji kompozycyjnej.
2. Filtrowanie i obsługa naciśnięć spacji
Wewnątrz funkcji lambda modyfikatora onPreviewKeyEvent lub onKeyEvent odfiltruj zdarzenia klawiszy, w których zwolnienie klawisza (KeyEventType.KeyUp) odpowiada spacji (Key.Spacebar).
Zwróć true, jeśli kod obsługuje zdarzenie i nie chcesz, aby było ono dalej propagowane. Zwróć false, aby umożliwić innym komponentom obsługę zdarzenia.
Opcja A. Korzystanie z
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 }
Opcja B: użycie
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 }
Wyniki
Aplikacja może teraz reagować na naciśnięcie spacji, aby wstrzymać i wznowić odtwarzanie filmu lub innych multimediów.
Dodatkowe materiały
Więcej informacji o zdarzeniach klawiatury i sposobach zarządzania nimi znajdziesz w artykule Obsługa danych wejściowych z klawiatury.