Android|Android 监听键盘状态变化,并获取键盘高度
因为是监控键盘状态的改变就不上效果图了
按照规矩先吧传送门搞好GitHub - GitHubToLiao/KeyboardListenerDemo
在我们平常开发过程中很多地方都需要监控键盘的变化以及获取键盘的高度,谷歌提供的API中并没有提供有关键盘状态变化以及获取键盘高度的相关监听,但是我们可以通过别的方式得到我们想要的东西,API是死的人是活的。
这里我就来说说我实现的思路
我们都知道在Android我们是可以拿到屏幕中可视高度的,如果我们拿到屏幕的高度然后减去可视区域的高度不就是键盘的高度了。 拿到键盘的高度,下来就是要监控什么时候键盘弹起来,什么时候关闭。这样我们就可一将获取键盘状态变化分解成下面三步了。
一、布局变化监听
OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,在视图树的全局事件改变时得到通知。ViewTreeObserver不能直接实例化,而是通过getViewTreeObserver()获得。
这里需要注意的是当我们不在使用监听的时候需要调用removeOnGlobalLayoutListener对监听进行移除,不然容易发生内存泄露
二、获取可视区域大小,两行代码没什么可说的
Rect rect = new Rect();三、计算键盘高度
contentView.getWindowVisibleDisplayFrame(rect); //获取布局的可视区域
【Android|Android 监听键盘状态变化,并获取键盘高度】int keyboardHeight = contentView.getHeight() - (rect.bottom - rect.top);解释下我们通过屏幕的高度减去可视区域的高度得到的就是键盘的高度,当得到的高度为0时代表键盘关闭,当高度大于0代表键盘打开
四、传送门
GitHub - GitHubToLiao/KeyboardListenerDemo
推荐阅读
- 跨平台Android和IOS百度语音在线识别原生插件
- Android|Android 11源码——预置无源码apk到Android系统(带so文件)
- Android|2022年中高级 Android 大厂面试秘籍,为你保驾护航金九银十,直通大厂
- Android|Android Studio内存性能分析器
- 这款键盘简直就是快乐贩卖机,还是非常适合夏天的西瓜红配色
- Android|Android 一些小技巧
- 自定义TextView适配不同设备下的字体大小(Android)
- android登录注册功能实现MySQL|android登录注册功能实现MySQL,Android Studio连接MySql实现登录注册(附源代码)
- 面试|Android studio连接MySQL并完成简单的登录注册功能
- vue|基于安卓/android/微信小程序的高校党员掌上党支部APP#计算机毕业设计