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

来源:互联网 发布:八维研修学院java课程 编辑:程序博客网 时间:2024/05/17 08:26

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/52993128 【DylanAndroid的csdn博客】


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

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

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

通过反射,获取包含虚拟键的整体屏幕高度

    /**     * 通过反射,获取包含虚拟键的整体屏幕高度     *     * @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()

看打印结果,测试机为HTC M8d

  • 打印代码
 /**     * 获取虚拟键的高度     */    private void getVirtuakeyHight() {        Logger.d("不包含虚拟键的高度=" + getNoHasVirtualKey());        Logger.d("包含虚拟键的高度=" + getHasVirtualKey());        Logger.d("虚拟键的高度=" + (getHasVirtualKey() - getNoHasVirtualKey()));    }
  • 打印结果

    不包含虚拟键的高度=1776包含虚拟键的高度=1920虚拟键的高度=144
0 0
原创粉丝点击