永发信息网

android状态栏高度是多少

答案:2  悬赏:80  手机版
解决时间 2021-04-02 05:44
  • 提问者网友:你挡着我发光了
  • 2021-04-01 15:00
android状态栏高度是多少
最佳答案
  • 五星知识达人网友:蓝房子
  • 2021-04-01 16:20
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.
全部回答
  • 1楼网友:执傲
  • 2021-04-01 16:27
这个是可以自定义的,你的需求是什么,一般的是77dp
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯