android状态栏高度是多少

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android状态栏高度是多少相关的知识,希望对你有一定的参考价值。

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.

参考技术A 这个是可以自定义的,你的需求是什么,一般的是77dp

状态栏、导航栏、PopupWindow的使用

参考技术A

1.1 获取屏幕绝对高度: RealHeight

1.2 获取屏幕高度: Height

1.3 获取状态栏高度: StatusBarHeight

1.4 获取导航栏高度: NavigationbarHeight

假设出现窗口没准确出现在锚点下方,或者半透明背景没占满余下屏幕的情况,看看高度取值是否准确。

以上是关于android状态栏高度是多少的主要内容,如果未能解决你的问题,请参考以下文章

ios 键盘状态栏的高度是多少

如何修改 Android 状态栏高度

Android获取状态栏和标题栏的高度

Android 获取状态栏标题栏导航栏等的高度

获取Android屏幕尺寸控件尺寸状态栏/通知栏高度导航栏高度

状态栏、导航栏、PopupWindow的使用