版权声明:本文出自wdmzszly的博客,转载必须注明出处。 https://blog.csdn.net/wdmzszly/article/details/82111164
状态栏高度
反射获取
public static int getStatusbarHeight(Context context) {
try {
Class<?> c = Class.forName("com.android.internal.R$dimen");
Object obj = c.newInstance();
Field field = c.getField("status_bar_height");
int x = Integer.parseInt(field.get(obj).toString());
int height = context.getResources().getDimensionPixelSize(x);
return height;
} catch(Exception e1) {
e1.printStackTrace();
}
return 0;
}
资源获取
public static int getStatusbarHeight(Context context){
int result = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = context.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
这个方法推荐在回调方法onWindowFocusChanged()中执行。
通过DecorView获取
public static int getStatusbarHeight(Activity activity){
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
return rect.top;
}
Activity初始化时执行此方法得到的高度是0,推荐在onWindowFocusChanged使用。
标题栏高度
public static int getTitleHeight(Activity activity){
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int contentTop = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
return contentTop - rect.top;
}
屏幕宽高度
public static int getScreenHeight(Context context){
int height = context.getResources().getDisplayMetrics().heightPixels;
return height;
}
public static int getScreenHeight(Activity activity){
DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics.heightPixels;
}