Android监控软键盘变化实例
发布时间:2020-12-14 23:37:40 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 public class ResizeLayout extends FrameLayout { private OnkeyboardShowListener mChangedListener; private boolean misKeyboardshow = false; pr
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |