实际项目中有时会碰到技术状态栏高度的情况。有两种方法可以做到:
第一种:
通过获取到 status_bar_height的资源id,在计算其高度。
public int getStatusBarHeight(){
int height=0;
int resouceId=getResources().getIdentifier("status_bar_height", "dimen", "android");
if(resouceId>0){
height=getResources().getDimensionPixelSize(resouceId);
}
return height;
}
第二种方法,需要用到反射
/**
* 获得状态栏的高度
*
* @param context
* @return
*/
public static int getStatusHeight(Context context) {
int statusHeight = -1;
try {
Class<?> clazz = Class.forName("com.android.internal.R$dimen");
Object object = clazz.newInstance();
int height = Integer.parseInt(clazz.getField("status_bar_height")
.get(object).toString());
statusHeight = context.getResources().getDimensionPixelSize(height);
} catch (Exception e) {
e.printStackTrace();
}
return statusHeight;
}