得到Android状态栏高度
2016-03-09 19:07
369 查看
推荐用法:
在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度。状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height。但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件。下边是在Activity中获取的方法:
以下是其它用法:
通过反射获取R类的实例域,代码如下:
不推荐用法:
依赖于WMS(窗口管理服务的回调)。
在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度。状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height。但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件。下边是在Activity中获取的方法:
public int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; }
以下是其它用法:
通过反射获取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(); int height = Integer.parseInt(clazz.getField("status_bar_height") .get(object).toString()); statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; }
不推荐用法:
依赖于WMS(窗口管理服务的回调)。
Rect rectangle= new Rect(); Window window= getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectangle); int statusBarHeight= rectangle.top;
相关文章推荐
- Android沉浸式状态栏
- Android项目使用Ant多渠道打包(最新sdk)
- Android动态加载进阶 代理Activity模式
- Android的按钮单击事件及监听器的实现方式
- Android查看wakelock
- Android版本支付宝集成获取私钥与公钥
- Android自定义内容提供者使用
- 认识 Android 中的 Activity 组件-------活动
- Android 继承SqLiteOpenHelper 实现内部数据库
- Android基础(3)——Android Studio模拟器Genymotion
- facebook android sharesdk 分享清除授权代码
- Android studio中java控制台输出中文乱码
- ubuntu 15.10 上编译 android 4.4 编译环境搭建
- Android调用传感器和震动
- Android Studio中NDK的配置
- Android笔记--对回调函数的理解
- Robotium入门
- Android系统Recovery工作原理之使用update.zip升级过程分析(三)---Android系统的三种启动模式
- TabLayout+Fragment+ViewPager联合使用
- ScaleType简单属性介绍