监测软键盘的弹出和收起

 
 
 boolean isVisiableForLast = false;
    int keyboardHeight = 0;
    public void addOnSoftKeyBoardVisibleListener(Activity activity) {
        final View decorView = activity.getWindow().getDecorView();
        decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect rect = new Rect();
                decorView.getWindowVisibleDisplayFrame(rect);
                //计算出可见屏幕的高度
                int displayHight = rect.bottom - rect.top;
                //获得屏幕整体的高度
                int hight = decorView.getHeight();
                //获得键盘高度
                keyboardHeight = hight-displayHight;
                boolean visible = (double) displayHight / hight < 0.8;
                if(visible != isVisiableForLast){
//                    listener.onSoftKeyBoardVisible(visible,keyboardHeight );
                    if (visible){//软键盘显示
                        
                    }else{ //软键盘隐藏
                      
                    }
                }
                isVisiableForLast = visible;
            }
        });
    }


猜你喜欢

转载自blog.csdn.net/u012760183/article/details/79969701