转载请注明出处: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

更多相关文章

  1. android 流量统计实现思路
  2. android摄像头获取图像——第三弹
  3. Android中的几种网络请求方式详解
  4. android的PowerManager和PowerManager.WakeLock
  5. Android(安卓)DVM
  6. Android的NDK开发
  7. Windows下获取Android系统源码
  8. android 是什么
  9. Android取消Edittext默认获取焦点

随机推荐

  1. AOSP ON MAKO(在NEXUS 4上刷ANDROID 4.4
  2. 下载Android(安卓)源码
  3. Android(安卓)常见问题之 android.conten
  4. 关于ANDROID下载与音乐播放
  5. 关于Android(安卓)traslateAnimation的坐
  6. ubuntu 10.10 编译Android2.2问题解决
  7. Android面试复习资料整理
  8. 定制个性化屏保
  9. 【Android】android的基本UI操作(2)以及小
  10. Android(安卓)RecyclerView最全使用详解