대형 화면 최적화에는 스페이스바를 누르는 동작에 반응하여 동영상 및 기타 미디어의 재생을 일시중지하거나 재개하는 등의 외부 키보드 입력을 처리하는 기능이 포함됩니다. 이는 주로 외부 키보드에 연결되는 태블릿과 일반적으로 외부 키보드와 함께 제공되지만 태블릿 모드로 사용할 수 있는 Chromebook에 유용합니다.
미디어가 창의 유일한 요소인 경우 (예: 전체 화면 동영상 재생) Jetpack Compose의 화면 수준에서 키 누름 이벤트에 응답합니다.
권장사항
앱에서 미디어 파일을 재생할 때마다 사용자는 실제 키보드에서 스페이스바를 눌러 재생을 일시중지하거나 재개할 수 있어야 합니다.
재료
KEYCODE_SPACE: 스페이스바의 키 코드 상수입니다.onPreviewKeyEvent: 구성요소 (또는 그 하위 요소 중 하나)에 포커스가 있을 때 구성요소에서 하드웨어 키 이벤트를 가로채도록 하는Modifier입니다.onKeyEvent:onPreviewKeyEvent와 마찬가지로 이Modifier를 사용하면 구성요소 (또는 그 하위 요소 중 하나)에 포커스가 있을 때 구성요소에서 하드웨어 키 이벤트를 가로챌 수 있습니다.
단계
Jetpack Compose에서 키보드 키 누름에 응답하려면 앱이 키 누름 이벤트를 수신 대기하고, 이벤트를 필터링하고, 스페이스바 키 누름과 같은 선택된 키 누름에 응답해야 합니다.
1. 키보드 이벤트 수신 대기
Jetpack Compose를 사용하면 키 입력을 관리하는 구성요소 내에서 onPreviewKeyEvent 또는 onKeyEvent 수정자를 활용할 수 있습니다.
두 수정자의 주요 차이점은 수정자가 사용하지 않는 경우 이벤트가 전달되는 위치입니다.
onPreviewKeyEvent: 이벤트를 첫 번째 하위 요소에 전달합니다.onKeyEvent: 컴포저블의 상위 요소에 이벤트를 전달합니다.
2. 스페이스바 누르기 필터링 및 처리
onPreviewKeyEvent 또는 onKeyEvent 수정자 람다 내에서 키 릴리스 (KeyEventType.KeyUp)가 스페이스바(Key.Spacebar)와 일치하는 키 이벤트를 필터링합니다.
코드에서 이벤트를 처리하고 이벤트가 더 이상 전파되지 않도록 하려면 true을 반환합니다. 다른 구성요소에서 이벤트를 처리하도록 허용하려면 false를 반환합니다.
옵션 A:
onPreviewKeyEvent사용Column( modifier = Modifier.onPreviewKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
옵션 B:
onKeyEvent사용Column( modifier = Modifier.onKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
결과
이제 앱이 스페이스바 키를 누를 때 이에 응답하여 동영상이나 다른 미디어를 일시중지하거나 재개할 수 있습니다.
추가 리소스
키보드 이벤트 및 관리 방법에 관한 자세한 내용은 키보드 입력 처리를 참고하세요.