public class ResizeLayout extends FrameLayout { private OnkeyboardShowListener mChangedListener; private boolean misKeyboardshow = false; private RRSharedPreferences preferences; private int keyboardHeight = DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT); private final int THRESHOLD = 100; /** * @param context * @param attrs */ public ResizeLayout(Context context, AttributeSet attrs) { super(context, attrs); preferences = new RRSharedPreferences(context); } public static interface OnkeyboardShowListener { public void onKeyboardShow(); public void onKeyboardHide(); public void onKeyboardShowOver(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (oldh - h > THRESHOLD) { //键盘弹出了 misKeyboardshow = true; keyboardHeight = oldh - h; preferences.putIntValue(Config.KEYBOARD_HIGHT, keyboardHeight); if (mChangedListener != null) { mChangedListener.onKeyboardShow(); } } else if (h < oldh && misKeyboardshow) { //键盘变高了 if (keyboardHeight == DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT)) { preferences.getIntValue(Config.KEYBOARD_HIGHT, DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT)); } if (keyboardHeight != DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT)) { keyboardHeight += oldh - h; preferences.putIntValue(Config.KEYBOARD_HIGHT, keyboardHeight); } if (mChangedListener != null) { mChangedListener.onKeyboardShow(); } } else if (h - oldh > THRESHOLD) { //键盘隐藏了 misKeyboardshow = false; if (mChangedListener != null) { mChangedListener.onKeyboardHide(); } } else if (h > oldh && misKeyboardshow) { //键盘收缩了 if (keyboardHeight == DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT)) { preferences.getIntValue(Config.KEYBOARD_HIGHT, DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT)); } if (keyboardHeight != DipUtil.calcFromDip(Config.DEFAULT_KEYBOARD_HIGHT)) { keyboardHeight -= h - oldh; preferences.putIntValue(Config.KEYBOARD_HIGHT, keyboardHeight); } if (mChangedListener != null) { mChangedListener.onKeyboardShow(); } } CommonUtil.log("NCS", "keyboard height:"+ keyboardHeight); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); CommonUtil.log("NCS", "top:" + top + "--bottom:" + bottom); if (mChangedListener != null && misKeyboardshow) { mChangedListener.onKeyboardShowOver(); } } public boolean isKeyboardShowing() { return misKeyboardshow; } public void setOnKeyboardShowListener(OnkeyboardShowListener listener) { mChangedListener = listener; } }
收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2285
- 用户1336
- 访客9631367
每日一句
There are only the pursued, the pursuing, the busy and the tired.
世界上只有被追求者和追求者,忙碌者和疲惫者。
世界上只有被追求者和追求者,忙碌者和疲惫者。
- Notepad++ 16进制编辑功能
- Xposed框架的使用
- 快来学习Google出品的序列化神器Protocol Buffer
- C++获取Windows 10的版本号
- 解决安卓运行错误Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug
- Android Studio3.0快速生成JNI头文件
- Android Studio使用DB Browser查看SQLite数据库
- Android工程集成华为扫码SDK
- vs2017编译和使用libcurl库
- C++ 11新语法获取系统盘符
- 快速上手Google VR SDK进行360度全景网络直播
- ConstraintLayout布局初试之环形动画效果
- VMware Workstation安装Centos7及常用命令行
新会员