针对大屏幕的优化包括处理外接键盘输入内容的功能,例如对用户按空格键做出响应,以暂停或继续播放视频和其他媒体。这尤其适用于通常连接到外接键盘的平板电脑,以及通常附带外接键盘但可在平板电脑模式下使用的 Chromebook。
当媒体是窗口中唯一的元素(例如全屏视频播放)时,在 Jetpack Compose 中,在屏幕级别响应按键事件。
最佳做法
每当您的应用播放媒体文件时,用户都应该能够通过按实体键盘上的空格键暂停和继续播放。
所需要素
KEYCODE_SPACE:空格键的关键代码常量。onPreviewKeyEvent:此Modifier让组件可在自身(或其子项之一)获得焦点时拦截硬件按键事件。onKeyEvent:与onPreviewKeyEvent类似,此Modifier让组件可在自身(或其子项之一)获得焦点时拦截硬件按键事件。
步骤
如需在 Jetpack Compose 中响应键盘按键操作,您的应用必须监听按键事件、过滤事件并响应所选的按键操作,例如按下空格键。
1. 监听键盘事件
使用 Jetpack Compose 时,您可以在管理按键操作的组件中使用 onPreviewKeyEvent 或 onKeyEvent 修饰符。
这两个修饰符之间的主要区别在于,相应修饰符会将未使用的事件分派到何处:
onPreviewKeyEvent- 将该事件分派给其第一个子项。onKeyEvent- 将该事件分派给可组合项的父项。
2. 过滤和处理对空格键的按键操作
在 onPreviewKeyEvent 或 onKeyEvent 修饰符 lambda 中,过滤键释放 (KeyEventType.KeyUp) 与空格键 (Key.Spacebar) 匹配的按键事件。
如果您的代码负责处理该事件,并且您不希望该事件进一步传播,则返回 true。返回 false 以允许其他组件处理该事件。
方法 A:使用
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 }
选项 B:使用
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 }
结果
您的应用现在可以响应对空格键的按键操作,以暂停和继续播放视频或其他媒体。
其他资源
如需详细了解键盘事件以及如何管理这些事件,请参阅处理键盘输入。