Activity设置android:windowSoftInputMode="adjustResize"
LinearLayout l = new LinearLayout(this){
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int[] loc = new int[2];
getLocationOnScreen(loc);
Log.e("FullScreen","onMeasure r[0]=" + loc[0] + ";r[1]=" + loc[1]);
}
@Override
protected void onLayout(boolean changed, final int l,final int t,final int r,final int b) {
super.onLayout(changed, l, t, r, b);
mNewLayout = true;
}
boolean mNewLayout = true;
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if(mNewLayout){
mNewLayout = false;
final int[] f_loc = new int[2];
getLocationOnScreen(f_loc);
postDelayed(new Runnable() {
@Override
public void run() {
final int[] loc = new int[2];
getLocationOnScreen(loc);
if(loc[1] > f_loc[1]){
//软键盘缩回
Log.d("yangl","onMeasure 软键盘缩回");
}else if(loc[1] < f_loc[1]){
//软键盘弹起来
Log.d("yangl","onMeasure 软键盘弹起来");
}else{
//无变化
Log.d("yangl","onMeasure 软键盘无变化");
}
}
},10);
}
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
Log.e("FullScreen","onSizeChanged w= " + w+";h="+ h + ";oldw="+oldw + ";oldh="+oldh);
}
};
setContentView(l);