关于如何获取android状态栏高度
16lz
2021-01-25
之前在获取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;}
更多相关文章
- Android(安卓)Okhttp + Android提交post表单乱码问题
- Android(安卓)Toast cancel问题、源码分析和解决方案
- [Android(安卓)相机]Android(安卓)相机开发的基本流程
- Android(安卓)知识点积累(一)
- android判断是否联网
- Java/Android(安卓)Annotation processor实践:greendaoannotation
- android 在listview上的 gallery 禁止上下滑动
- Android中更详细的log获取方法
- RatingBar的使用方法