使用Android 7.0系统(1920 x 1080)但是计算出来的高度只有1812,使用Android 6.0系统,同样的代码计算出来的高度就是1920的,那么在7.0系统上面还有108的高度哪里去了?
--------------这样的题目应该附上代码。
这个和屏幕密度有关,代码计算出来的高度是像素,你转成dp看看一样吗?
public int pxToDp(Context context,int px) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
return dp;
}
你先转过去打印下结果看看
/**
* 获取状态栏的高度
*
* @param context
* @return
*/
private static int getStatusHeight(Context context) {
int statusHeight = 0;
Rect localRect = new Rect();
((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect);
statusHeight = localRect.top;
if (0 == statusHeight) {
Class<?> localClass;
try {
localClass = Class.forName("com.android.internal.R$dimen");
Object localObject = localClass.newInstance();
int i5 = Integer.parseInt(localClass.getField("status_bar_height").get(localObject).toString());
statusHeight = context.getResources().getDimensionPixelSize(i5);
} catch (Exception e) {
e.printStackTrace();
}
}
return statusHeight;
}
//你输出状态栏高度,自己算下,其实最直接的方法自定义一个view,在onMeasure()logcat出