KeyboardListener
Introduction: :musical_keyboard: 监听 Android 软键盘弹出与收回事件(并回调"键盘是否弹出"、"键盘高度"、"屏幕可用高度"、"屏幕宽度数值")
Tags:

从facebook/react-native源码中抽离出来的用于监听 Android 软键盘弹出与收回事件的相关代码。
关于作者
景三,程序员,主要从事 Android 平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提 issue 或者发邮件至 relish.wang@gmail.com 与我交流。
[TOC]
扫描二维码下载 Demo

一、效果演示

(注意“屏幕可用高度”的数值)

(注意“屏幕可用高度”的数值)
二、使用方法
可以直接把DisplayMetricsHolder、GlobalLayoutListener、OnKeyboardChangedListener)三个文件直接拷贝到你的工程里使用。
rootView.getViewTreeObserver().addOnGlobalLayoutListener(
new GlobalLayoutListener(rootView, new OnKeyboardChangedListener() {
/**
* 键盘事件
*
* @param isShow 键盘是否展示
* @param keyboardHeight 键盘高度(当 isShow 为 false 时,keyboardHeight=0)
* @param screenWidth 屏幕宽度
* @param screenHeight 屏幕可用高度(不包含底部虚拟键盘 NavigationBar), 即屏幕高度-键盘高度(keyboardHeight)
*/
@Override
public void onChange(boolean isShow, int keyboardHeight, int screenWidth, int screenHeight) {
// do sth.
}
}));

三、更新日志
四、致谢
感谢facebook/react-native提供代码解决方案。
本仓库使用的 react-native 相关代码:
ReactRootView.java里的内部类 CustomGlobalLayoutListener
监听键盘事件的监听器。
-
通过反射获取相关尺寸数值。
PixelUtil.java(非必要)
度量单位转换工具。px<->sp/dp 之间的转化。
