android状态栏高度是多少

 我来答
ahcc08
2017-12-03 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51940
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部

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取值为:

  • ldpi (dpi=120,density=0.75)

  • mdpi (dpi=160,density=1)

  • hdpi (dpi=240,density=1.5)

  • xhdpi (dpi=320,density=2)

  • 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.

mr_haoyun
2017-10-30 · TA获得超过258个赞
知道小有建树答主
回答量:117
采纳率:77%
帮助的人:59.8万
展开全部
这个是可以自定义的,你的需求是什么,一般的是77dp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式