Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

来源:互联网 发布:剪辑视频的软件 编辑:程序博客网 时间:2024/06/07 11:12

一般的获取屏幕尺寸,但是不包括虚拟功能高度

/** * 获取屏幕尺寸,但是不包括虚拟功能高度 * * @return */public int getNoHasVirtualKey() {    int height = getWindowManager().getDefaultDisplay().getHeight();    return height;}

但是今天我们测试找我就说你的webview界面有问题呀下面怎么一块空白,我看看就发现空白的手机是华为的有软键盘的那种

我们这个方法获取的高度不包含虚拟键盘的高度

/** * 通过反射,获取包含虚拟键的整体屏幕高度 * * @return */private int getHasVirtualKey() {    int dpi = 0;    Display display = getWindowManager().getDefaultDisplay();    DisplayMetrics dm = new DisplayMetrics();    @SuppressWarnings("rawtypes")    Class c;    try {        c = Class.forName("android.view.Display");        @SuppressWarnings("unchecked")        Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);        method.invoke(display, dm);        dpi = dm.heightPixels;    } catch (Exception e) {        e.printStackTrace();    }    return dpi;}

虚拟键的高度

getHasVirtualKey() - getNoHasVirtualKey()

隐藏虚拟按键

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {    ((Activity) context).getWindow().getDecorView().setSystemUiVisibility(            View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                     | View.SYSTEM_UI_FLAG_FULLSCREEN                     | View.SYSTEM_UI_FLAG_IMMERSIVE);//API19} else {    ((Activity) context).getWindow().getDecorView().setSystemUiVisibility(            View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                     | View.SYSTEM_UI_FLAG_FULLSCREEN     );}复制代码
0 0