Android获取状态栏高度

方法1: 默认当做20dp计算,这也是大多手机的状态栏高度。

 private void getStateBar1(){
        double statusBarHeight = Math.ceil(20 * this.getResources().getDisplayMetrics().density);
        tv_result1.setText("方法1--------》"+statusBarHeight);
    }

方法2:通过反射获取

private void getStateBar2() {
        Class c = null;
        try {
            c = Class.forName("com.android.internal.R$dimen");
            Object obj = c.newInstance();
            Field field = c.getField("status_bar_height");
            int x = Integer.parseInt(field.get(obj).toString());
            int statusBarHeight = this.getResources().getDimensionPixelSize(x);
            tv_result2.setText("方法2-----》"+statusBarHeight);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

方法3:直接获取属性,通过getResource

 private void getStateBar3(){
        int result = 0;
        int resourceId = this.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = this.getResources().getDimensionPixelSize(resourceId);
        }
        tv_result3.setText("方法3------》"+result);
    }

实际使用的时候,可以通过方法2或者方法3来获取,如果没有获取到,再默认当做20dp计算。个人测试结果,三种方式都返回60px的状态栏高度

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值