android获取虚拟功能键高度
2016-08-05 13:34
267 查看
问题由来:
android 5.0 后,系统提供了虚拟功能键的功能,这使得我们在做一些UI特效操作时,会因为虚拟键的干扰而遭受定位不准的问题。所以,怎么获得虚拟功能键高度,就成了解决这个问题的关键了。我的思路:
因为有了虚拟功能键后,WindowManager的.getDefaultDisplay().getHeight();方法获取的是标准高度。想要获得完整的高度的话,就得通过反射调用。
先通过反射获得整个屏幕的完整高度,再用此减去标准高度,那么得到的就是虚拟键Bar的高度了。
具体代码:
/**获取虚拟功能键高度 */ public int getVirtualBarHeigh() { int vh = 0; WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); try { @SuppressWarnings("rawtypes") Class c = Class.forName("android.view.Display"); @SuppressWarnings("unchecked") Method method = c.getMethod("getRealMetrics", DisplayMetrics.class); method.invoke(display, dm); vh = dm.heightPixels - windowManager.getDefaultDisplay().getHeight(); } catch (Exception e) { e.printStackTrace(); } return vh; }
相关文章推荐
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- Android开发之如何获取屏幕、状态栏、导航栏和虚拟功能键的高度
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
- android开发判断虚拟菜单是否开启及获取虚拟菜单高度
- Android获取虚拟导航键的高度
- Android笔记(九):获取屏幕高度,状态栏高度,虚拟导航栏高度
- Android手机获取屏幕分辨率高度因虚拟导航栏带来的问题
- Android 状态栏(StatusBar)和虚拟键(NavigationBar)的高度获取
- android中监听软键盘的弹出与隐藏,并获取软键盘的高度
- Android 获取屏幕信息(状态栏、标题栏高度,屏幕宽高)
- Android利用反射获取状态栏(StatusBar)高度
- android 系统版本信息工具类 获取设备型号 设置屏幕亮度 软键盘 获取屏幕高度宽度
- Android 动态获取ListView的高度
- Android获取软键盘的高度
- Android在OnCreate中获取控件的宽度和高度
- Android获取字体高度和设置行高
- 获取虚拟键高度