监听软键盘的显示

/**监听软键盘状态
     * @param activity
     * @param listener
     */
    public static void addOnSoftKeyBoardVisibleListener(Activity activity, final OnSoftKeyBoardVisibleListener listener) {
        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();
                boolean visible = (double) displayHight / hight < 0.8;
                
                Log.d(TAG, "DecorView display hight = " + displayHight);
                Log.d(TAG, "DecorView hight = " + hight);
                Log.d(TAG, "softkeyboard visible = " + visible);

                if(visible != sLastVisiable){
                    listener.onSoftKeyBoardVisible(visible);
                }
                sLastVisiable = visible; 
            }
        });
    }

  

原文地址:https://www.cnblogs.com/lipeil/p/3757588.html