android获取状态栏高度
2016-07-23 23:56
447 查看
转载请注明出处:http://blog.csdn.net/jerrywu145/article/details/52008526
在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度。状态栏高度定义在系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height。但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件。下边是在Activity中获取的方法
这里还有另外一种方法,大家都知道Android的所有资源都会有惟一标识在R类中作为引用。我们也可以通过反射获取R类的实例域,代码如下
![](http://www.2cto.com/uploadfile/Collfiles/20150130/2015013008372884.png)
我们可以看到得到的结果是一样的。当然,获取状态栏的高度方法是不是就只有以上两种呢,当然不是,下边再介绍一种获取状态栏高度的方法,不过不推荐使用,因为这个方法依赖于WMS(窗口管理服务的回调)。
?
在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度。状态栏高度定义在系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height。但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件。下边是在Activity中获取的方法
<span style="font-family: Arial, Helvetica, sans-serif;">public int getStatusBarHeight() {</span>
int result = 0; int resourceId = getResources().getIdentifier("status_bar_height","dimen","android"); if(resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; }
这里还有另外一种方法,大家都知道Android的所有资源都会有惟一标识在R类中作为引用。我们也可以通过反射获取R类的实例域,代码如下
/** * 获得状态栏的高度 * * @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(); intheight = Integer.parseInt(clazz.getField("status_bar_height") .get(object).toString()); statusHeight = context.getResources().getDimensionPixelSize(height); }catch(Exception e) { e.printStackTrace(); } return statusHeight; }
![](http://www.2cto.com/uploadfile/Collfiles/20150130/2015013008372884.png)
我们可以看到得到的结果是一样的。当然,获取状态栏的高度方法是不是就只有以上两种呢,当然不是,下边再介绍一种获取状态栏高度的方法,不过不推荐使用,因为这个方法依赖于WMS(窗口管理服务的回调)。
Rect rectangle= newRect(); Window window= getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectangle); int statusBarHeight= rectangle.top;
?
相关文章推荐
- 获取屏幕标题栏和状态栏的高度和实现图片的拖拽效果,图片的缩放效果
- android自定义控件-AutoScrollViewpager(无限滚动轮播控件)
- Android基础知识(简单实例计算器)
- Android基础知识总结---四大组件之一ContentProvider(一)
- 最简单也最难——如何获取到Android控件的高度
- Android 系统上实现APK插件机制——360手机助手
- Android Hot patch 技术:Dexposed-来自阿里手机淘宝部门的开源项目
- 实现Android插件化的核心技术简介(三):Android dynamic register activities
- 实现Android插件化的核心技术简介(二):Android dynamic load resources
- 实现Android插件化的核心技术简介(一):Android dynamic load classes
- 深入Android MediaPlayer的使用方法详解
- Android插件化(使用Small框架)
- Android 圆形ImageView
- Android广播
- Android应用程序内部切换语言及自定义语言
- Android ListView几种Adapter用法简介
- 四大组件之Activity
- Android Notification 的总结分析
- 利用Netbean开发Android应用程序注意事项
- 【Java源码分析】Android-SparseArray源码分析