之前在獲取android狀態(tài)欄的時(shí)候弧烤,一直用如下方法獲取的
protected int getStatusBarHeight(){
Rect frame=new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
return frame.top;
}
經(jīng)過多次測(cè)試后忱屑,有些機(jī)型獲取的時(shí)候,得到的高度總是0暇昂,可能是該getWindowVisibleDisplayFrame(Rect rect)
方法莺戒,獲取不到通知欄的窗體吧。
下面該方法通過反射的方法急波,獲取類的屬性來(lái)達(dá)到的:
protected int getStatusBarHeight(){
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0, sbar = 38;//默認(rèn)為38从铲,貌似大部分是這樣的
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
sbar = getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
}
return sbar;
}