之前在获取android状态栏的时候,一直用如下方法获取的

protected int getStatusBarHeight(){        Rect frame=new Rect();        getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);        return frame.top;}

经过多次测试后,有些机型获取的时候,得到的高度总是0,可能是该getWindowVisibleDisplayFrame(Rect rect)方法,获取不到通知栏的窗体吧。

下面该方法通过反射的方法,获取类的属性来达到的:

protected int getStatusBarHeight(){      Class<?> c = null;    Object obj = null;    Field field = null;    int x = 0, sbar = 38;//默认为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;}

更多相关文章

  1. Android(安卓)Okhttp + Android提交post表单乱码问题
  2. Android(安卓)Toast cancel问题、源码分析和解决方案
  3. [Android(安卓)相机]Android(安卓)相机开发的基本流程
  4. Android(安卓)知识点积累(一)
  5. android判断是否联网
  6. Java/Android(安卓)Annotation processor实践:greendaoannotation
  7. android 在listview上的 gallery 禁止上下滑动
  8. Android中更详细的log获取方法
  9. RatingBar的使用方法

随机推荐

  1. android 硬件加速后webview闪烁问题
  2. Android(安卓)recovery 模式
  3. android语音识别和合成第三方
  4. 【Android】自定义dialog的布局样式
  5. android项目结构
  6. 导入android工程出现:unable to get syste
  7. Android(安卓)Intents
  8. Android版本和兼容情况
  9. android -------- 流式布局,支持单选、多
  10. android中ADT和SDK的关系