Android 软键盘的监听(监听高度,是否显示)
2016-03-10 16:40
477 查看
转自:http://blog.csdn.net/daguaio_o/article/details/47127993
Android官方本身没有提供一共好的方法来对软键盘进行监听,但我们实际应用时,很多地方都需要针对软键盘来对UI进行一些优化。
以下是整理出来的一个不错的方法,大家可以使用。
public class SoftKeyboardUtil {
public static void observeSoftKeyboard(Activity activity, final OnSoftKeyboardChangeListener listener) {
final View decorView = activity.getWindow().getDecorView();
decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
int previousKeyboardHeight = -1;
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
int displayHeight = rect.bottom - rect.top;
int height = decorView.getHeight();
int keyboardHeight = height - displayHeight;
if (previousKeyboardHeight != keyboardHeight) {
boolean hide = (double) displayHeight / height > 0.8;
listener.onSoftKeyBoardChange(keyboardHeight, !hide);
}
previousKeyboardHeight = height;
}
});
}
public interface OnSoftKeyboardChangeListener {
void onSoftKeyBoardChange(int softKeybardHeight, boolean visible);
}
}
Android官方本身没有提供一共好的方法来对软键盘进行监听,但我们实际应用时,很多地方都需要针对软键盘来对UI进行一些优化。
以下是整理出来的一个不错的方法,大家可以使用。
public class SoftKeyboardUtil {
public static void observeSoftKeyboard(Activity activity, final OnSoftKeyboardChangeListener listener) {
final View decorView = activity.getWindow().getDecorView();
decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
int previousKeyboardHeight = -1;
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
int displayHeight = rect.bottom - rect.top;
int height = decorView.getHeight();
int keyboardHeight = height - displayHeight;
if (previousKeyboardHeight != keyboardHeight) {
boolean hide = (double) displayHeight / height > 0.8;
listener.onSoftKeyBoardChange(keyboardHeight, !hide);
}
previousKeyboardHeight = height;
}
});
}
public interface OnSoftKeyboardChangeListener {
void onSoftKeyBoardChange(int softKeybardHeight, boolean visible);
}
}
相关文章推荐
- Android基础之Sqlite数据库
- android MediaScanner 扫出来的ID3 MP3文件演唱者信息 乱码
- Android gradle 批量改包名
- AndroidStudio怎样导入jar包
- Android仿淘宝商品浏览界面图片滚动效果
- Android Studio 打包apk,自动追加版本号和版本名称
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- android studio logcat 包名过滤失效问题
- 用Android studio进行 OpenCV 开发的第一个项目
- 为Android应用添加搜索功能
- 初识Volley框架
- Android Fresco实现图片毛玻璃效果
- FrameLayout组件居中显示
- Android -Intent -ACTION_
- Activity 跳转全解 android-Intent (带参数&不带参数的跳转)
- Android虚拟键遮挡控件
- Android自定义Toast
- MPAndroidChart属性大全
- Android四大组建
- android枚举用法