Android获取设备状态栏高度的正确姿势

正确代码方式:

        int height = 0;        int resourceId = getApplicationContext().getResources().getIdentifier("status_bar_height", "dimen", "android");        if (resourceId > 0) {            height = getApplicationContext().getResources().getDimensionPixelSize(resourceId);        }

所得height即为设备屏幕状态栏高度,单位pix。该方法可以在onCreate里面直接使用,与View的初始化先后顺序无关,此方法稳定可靠,推荐使用上面的代码获取设备状态栏高度。



其他一些方法如果直接先于View初始化完成前计算高度,可能会获得的高度值为0,取不到正确的状态栏高度值。比如,下面这个方法是网上流传很广的方法,虽然在某些时候可以获取,但是在有些时候获取的状态栏高度为0:

        Rect rectangle = new Rect();        Window window = getWindow();        window.getDecorView().getWindowVisibleDisplayFrame(rectangle);        int statusBarHeight = rectangle.top;        int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();        int titleBarHeight = contentViewTop - statusBarHeight;

这个方法获取状态栏高度值,不可靠,若onCreate里面的View未初始化加载完成,取出来的状态栏高度值为0,请小心选择使用。

更多相关文章

  1. 【Android】安卓中常用的图片加载方法
  2. android 申请移动应用的签名生成方法
  3. Android SDK下载和更新失败的解决方法!!!
  4. Android studioError:(13, 0) Gradle DSL method not found: 'an
  5. android字体加粗的方法
  6. android中各种图标尺寸以及多分辨率支持方法
  7. android 7.0 系统关闭彩信过CTA测试的方法

随机推荐

  1. Phoenix实战 | Phoenix ODPSBulkLoadTool
  2. dns查询3:Test
  3. 前端开发零基础好学吗?
  4. 技术分享:Java多线程学习处理高并发问题
  5. Phoenix实践 | Phoenix数据迁移
  6. 关于HashMap的一些思考
  7. SpringBoot+Vue前后端分离项目实战-cms项
  8. 五款Java开发工具,总有你用的上的
  9. HBase分享 | 云HBase之OpenTSDB时序引擎
  10. 技术分享:如何避免ajax重复请求?