如何获取底部虚拟按键栏的高度
API 17之后使用,获取的像素宽高包含虚拟键所占空间,在API 17之前通过反射获取
context.getWindowManager().getDefaultDisplay().getRealMetrics(metric); 获取的像素宽高不包含虚拟键所占空间
DisplayMetrics metric = new DisplayMetrics();
//context.getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 宽度(像素)
int height = metric.heightPixels; // 高度(像素)
float density = metric.density; // dp缩放因子
int densityDpi = metric.densityDpi; // 广义密度
float xdpi = metric.xdpi;//x轴方向的真实密度
float ydpi = metric.ydpi;//y轴方向的真实密度
//具体的方法:
private int getSoftButtonsBarHeight() {
DisplayMetrics metrics = new DisplayMetrics();
//这个方法获取可能不是真实屏幕的高度
mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
//获取当前屏幕的真实高度
mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
if (realHeight > usableHeight) {
return realHeight - usableHeight;
} else {
return 0;
}
}