Android监控软键盘变化实例
发布时间:2020-05-24 19:30:00 所属栏目:Java 来源:互联网
导读:Android监控软键盘变化实例
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 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;
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
