Android 监听键盘状态变化,并获取键盘高度

因为是监控键盘状态的改变就不上效果图了

按照规矩先吧传送门搞好GitHub - GitHubToLiao/KeyboardListenerDemo


    在我们平常开发过程中很多地方都需要监控键盘的变化以及获取键盘的高度,谷歌提供的API中并没有提供有关键盘状态变化以及获取键盘高度的相关监听,但是我们可以通过别的方式得到我们想要的东西,API是死的人是活的。

这里我就来说说我实现的思路

    我们都知道在Android我们是可以拿到屏幕中可视高度的,如果我们拿到屏幕的高度然后减去可视区域的高度不就是键盘的高度了。 拿到键盘的高度,下来就是要监控什么时候键盘弹起来,什么时候关闭。这样我们就可一将获取键盘状态变化分解成下面三步了。

一、布局变化监听

OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,在视图树的全局事件改变时得到通知。ViewTreeObserver不能直接实例化,而是通过getViewTreeObserver()获得。

这里需要注意的是当我们不在使用监听的时候需要调用removeOnGlobalLayoutListener对监听进行移除,不然容易发生内存泄露

二、获取可视区域大小,两行代码没什么可说的

Rect rect = new Rect();

contentView.getWindowVisibleDisplayFrame(rect);//获取布局的可视区域

三、计算键盘高度

int keyboardHeight = contentView.getHeight() - (rect.bottom - rect.top);

解释下我们通过屏幕的高度减去可视区域的高度得到的就是键盘的高度,当得到的高度为0时代表键盘关闭,当高度大于0代表键盘打开

四、传送门

GitHub - GitHubToLiao/KeyboardListenerDemo

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容