全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中获取状态栏高度的两种方法分享

前言

最近在做一个关于FAB的功能的时候需要获取状态栏的高度,在网上查了很多种方法,下面是选出的比较合理的两个方法。主要参考stackoverflow的这篇问答:http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android

方法一:

private double getStatusBarHeight(Context context){
  double statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density);
  return statusBarHeight;
 }

这种方法很简单,只有一行代码,查过参考手册后可以翻译一下:

状态栏高度=取大于其的最小整数(25*上下文_获取应用包的资源实例_获取当前屏幕尺寸_屏幕密度比例)

其中density并不是真实的屏幕密度,而是一个相对密度,基准密度为160dpi,比如我测试的手机为HTC one m8,查的屏幕密度为441dpi,相对160为2.75,density就取为3。各分辨率的density取值为:

  1. ldpi (dpi=120,density=0.75)
  2. mdpi (dpi=160,density=1)
  3. hdpi (dpi=240,density=1.5)
  4. xhdpi (dpi=320,density=2)
  5. xxhdpi (dpi=480,density=3)

所以得到的状态栏高度为25*3=75

由这种方法得到的状态栏高度具有较大局限性,比如因为某种需要去掉状态栏或本身没有状态栏,此时状态栏高度应为0,但是该方法依然能够得到一个非零的状态栏高度。

方法二:

private int getStatusBarHeight(Context context) {
  int result = 0;
  int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
  if (resourceId > 0) {
   result = context.getResources().getDimensionPixelSize(resourceId);
  }
  return result;
 }

这里我们用到了getIdentifier()的方法来获取资源的ID,其中第一个参数是要获取资源对象的名称,比如我们要获取状态栏的相关内容,这里填入"status_bar_height";第二个参数是我们要获取什么属性,我们要获取高度内容,所以填入"dimen";第三个是包名,状态栏是系统内容,故填入“android”。

另外一个用到的办法是getDimensionPixelSize() ,由函数名就能知道是根据资源ID获得资源像素尺寸,这里就直接获得状态栏的高度。

这种方法在状态栏不存在的时候就会获得其高度为0.

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能带来一定的帮助,如果有疑问大家可以留言交流。


# Android获取状态栏高度  # android  # 取状态栏高度  # 安卓状态栏高度  # Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法  # Android 获取屏幕高度  # 标题高度  # 状态栏高度(实例代码)  # Android 取得状态栏、任务栏高度的小例子  # Android有效获取状态栏(StatusBar)高度的方法  # Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法  # Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例  # Android如何获取屏幕、状态栏及标题栏的高度详解  # 状态栏  # 填入  # 这种方法  # 就会  # 相关内容  # 第一个  # 就能  # 第二个  # 很简单  # 不存在  # 做一个  # 种方法  # 另外一个  # 这篇文章  # 这篇  # 第三个  # 于其  # 方法来  # 值为  # 各分 


相关文章: 兔展官网 在线制作,怎样制作微信请帖?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何通过虚拟主机快速搭建个人网站?  如何续费美橙建站之星域名及服务?  建站主机选择指南:服务器配置与SEO优化实战技巧  如何确保西部建站助手FTP传输的安全性?  济南企业网站制作公司,济南社保单位网上缴费步骤?  电商平台网站制作流程,电商网站如何制作?  建站之星如何一键生成手机站?  如何使用Golang安装API文档生成工具_快速生成接口文档  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  广州建站公司哪家好?十大优质服务商推荐  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何用腾讯建站主机快速创建免费网站?  网站制作壁纸教程视频,电脑壁纸网站?  建站主机SSH密钥生成步骤及常见问题解答?  如何高效配置IIS服务器搭建网站?  如何快速完成中国万网建站详细流程?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  免费视频制作网站,更新又快又好的免费电影网站?  建站之星代理商如何保障技术支持与售后服务?  建站主机解析:虚拟主机配置与服务器选择指南  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  宿州网站制作公司兴策,安徽省低保查询网站?  如何用PHP快速搭建高效网站?分步指南  香港服务器网站推广:SEO优化与外贸独立站搭建策略  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  代刷网站制作软件,别人代刷火车票靠谱吗?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何实现建站之星域名转发设置?  如何获取上海专业网站定制建站电话?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  大同网页,大同瑞慈医院官网?  nginx修改上传文件大小限制的方法  如何快速生成高效建站系统源代码?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  建站之星如何修改网站生成路径?  创业网站制作流程,创业网站可靠吗?  简单实现Android验证码  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  微课制作网站有哪些,微课网怎么进?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何快速上传自定义模板至建站之星?  如何用PHP快速搭建CMS系统? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。