您的位置:首页 > 移动开发 > Android开发

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: