package sj.keyboard.widget;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.ViewTreeObserver;
import android.widget.RelativeLayout;
import java.util.ArrayList;
import java.util.List;
public class SoftKeyboardSizeWatchLayout extends RelativeLayout {
private Context mContext;
private int mOldh = -1;
private int mNowh = -1;
protected int mScreenHeight = 0;
protected boolean mIsSoftKeyboardPop = false;
public SoftKeyboardSizeWatchLayout(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
((Activity) mContext).getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
if (mScreenHeight == 0) {
mScreenHeight = r.bottom;
}
mNowh = mScreenHeight - r.bottom;
if (mOldh != -1 && mNowh != mOldh) {
if (mNowh > 0) {
mIsSoftKeyboardPop = true;
if (mListenerList != null) {
for (OnResizeListener l : mListenerList) {
l.OnSoftPop(mNowh);
}
}
} else {
mIsSoftKeyboardPop = false;
if (mListenerList != null) {
for (OnResizeListener l : mListenerList) {
l.OnSoftClose();
}
}
}
}
mOldh = mNowh;
}
});
}
public boolean isSoftKeyboardPop() {
return mIsSoftKeyboardPop;
}
private List<OnResizeListener> mListenerList;
public void addOnResizeListener(OnResizeListener l) {
if (mListenerList == null) {
mListenerList = new ArrayList<>();
}
mListenerList.add(l);
}
public interface OnResizeListener {
/**
* 软键盘弹起
*/
void OnSoftPop(int height);
/**
* 软键盘关闭
*/
void OnSoftClose();
}
}