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的状态栏高度

你可能感兴趣的:(android,状态栏,安卓)