Gdy aplikacja odtwarza plik multimedialny, użytkownicy powinni mieć możliwość wstrzymywania i wznawiania odtwarzania przez naciśnięcie klawisza spacji na klawiaturze fizycznej.
reagować na zdarzenia naciśnięcia klawisza,
Aplikacje oparte na Jetpack Compose lub widokach reagują na naciśnięcia klawiszy w podobny sposób: aplikacja nasłuchuje zdarzeń naciśnięcia klawisza, filtruje je i reaguje na naciśnięcia klawiszy, np. spacji.
1. Nasłuchiwanie zdarzeń klawiatury
Nowy post
W Jetpack Compose użyj modyfikatora onPreviewKeyEvent
lub onKeyEvent
w układzie, który zarządza kombinacją klawiszy:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
lub
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Widoki
W aktywności w aplikacji zastąpij metodę onKeyUp()
:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
Metoda jest wywoływana przy każdym naciśnięciu i odpuszczeniu klawisza, więc jest wykonywana dokładnie raz na każde naciśnięcie klawisza.
2. Filtrowanie naciśnięć spacji
W metodach modyfikatora Compose onPreviewKeyEvent
i onKeyEvent
lub metodzie widoków onKeyUp()
odfiltruj KeyEvent.KEYCODE_SPACE
, aby wysłać odpowiednie zdarzenie do komponentu multimediów:
Nowy post
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
lub
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Widoki
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Najważniejsze punkty
KEYCODE_SPACE
: kod klawisza spacja.
Nowy post
onPreviewKeyEvent
: modyfikator, który umożliwia komponentowi przechwytywanie zdarzeń związanych z klawiszami sprzętowymi, gdy on sam (lub jeden z jego elementów podrzędnych) ma fokus.onKeyEvent
: podobnie jakonPreviewKeyEvent
, modyfikator, który umożliwia komponentowi przechwytywanie zdarzeń związanych z klawiszami sprzętowymi, gdy komponent (lub jeden z jego elementów podrzędnych) ma fokus.
Widoki
onKeyUp()
: moduł obsługi zdarzeń wywoływany, gdy klucz zostanie zwolniony i nie zostanie obsłużony przez widok (np.TextView
) w ramach aktywności.
Wyniki
Aplikacja może teraz reagować na naciśnięcie klawisza spacji, aby wstrzymywać i wznawiać odtwarzanie filmu lub innych multimediów.