检测软键盘是否弹出

  public static boolean isSoftShowing(Activity activity) {

        //获取当前屏幕内容的高度

        int screenHeight = activity.getWindow().getDecorView().getHeight();

        //获取View可见区域的bottom

        Rect rect = new Rect();

        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);

        return screenHeight - rect.bottom - getSoftButtonsBarHeight(activity) != 0;

    }

    /**

    * 底部虚拟按键栏的高度

    *

    * @return

    */

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)

    private static int getSoftButtonsBarHeight(Activity activity) {

        DisplayMetrics metrics = new DisplayMetrics();

        //这个方法获取可能不是真实屏幕的高度

        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        int usableHeight = metrics.heightPixels;

        //获取当前屏幕的真实高度

        activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);

        int realHeight = metrics.heightPixels;

        if (realHeight > usableHeight) {

            return realHeight - usableHeight;

        } else {

            return 0;

        }

    }

你可能感兴趣的:(检测软键盘是否弹出)