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)
站点信息
- 文章2313
- 用户1336
- 访客11756567
每日一句
Life is short; Live it!
人生苦短,活出精彩。
人生苦短,活出精彩。
信鸽推送报错NSObject checkTargetOtherLinkFlagForObjc
简单利用Clover四叶草安装U盘安装黑苹果
学习使用Java注解
OllyDbg中如何找出B模块中所有调用了A模块的C方法的地方
解决SSH客户端中文乱码
10年后,Android应用程序仍然比iOS应用程序差
C++11特性里面的thread
XPosed微信自动生成二维码
解决android studio "found an invalid color"的问题
T9社区注册方法【勼适様鲃女尔懟死】
Thinkpad x1 Extreme黑苹果10.14.5安装完成
基于大白主题增加图片本地化的功能
Linux系统查看CPU使用率的几个命令
新会员