通过反射获取
public int getStatusBarHeight(){
if(statusBarHeight==0){
Class<?> c;
try
{
c = Class.forName("com.android.internal.R$dimen");
Object o = c.newInstance();
Field field = c.getField("status_bar_height");
int x = (Integer) field.get(o);
statusBarHeight = getResources().getDimensionPixelSize(x);
}catch(Exception e)
{
e.printStackTrace();
}
}
return statusBarHeight;
}
根据资源ID获取
public int getStatusBarHeight1(){
if(statusBarHeight==0){
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if(resourceId>0){
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}
}
return statusBarHeight;
}
通过当前窗口对象获取,貌似有局限性
public int getStatusBarHeight2(){
if(statusBarHeight==0){
Rect rect = new Rect();
Window window = getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rect);
statusBarHeight = rect.top;
}
return statusBarHeight;
}