Android获取屏幕,状态栏,标题栏的高度

这里写图片描述

绿色区域:屏幕区域
蓝色区域:状态栏区域
红色区域:标题栏区域
黄色区域:view绘制区域

1.Android手机屏幕的高度

整个手机使用发亮,不使用变黑的部分,绿色区域

获取屏幕的高度方法一
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        Log.e("TAG", "屏幕高:" + dm.heightPixels);

获取屏幕的高度方法二
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
        Log.e("TAG","screenHeight"+displayMetrics.heightPixels);

2.Android手机状态栏的高度(蓝色区域)

状态栏指的是,手机最上方显示,系统时间,电量等等区域。

获取状态栏高度方法一
int statusBarHeight1 = -1;  
    //获取status_bar_height资源的ID  
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");  
    if (resourceId > 0) {  
        //根据资源ID获取响应的尺寸值  
        statusBarHeight1 = getResources().getDimensionPixelSize(resourceId);  
    }  
    Log.e("TAG", "方法1:" + statusBarHeight1);  
获取状态栏高度方法二
int statusBarHeight1 = -1;  
    //获取status_bar_height资源的ID  
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");  
    if (resourceId > 0) {  
        //根据资源ID获取响应的尺寸值  
        statusBarHeight1 = getResources().getDimensionPixelSize(resourceId);  
    }  
    Log.e("TAG", "方法1:" + statusBarHeight1);  
获取状态栏高度方法二
  int statusBarHeight2 = -1;  
        try {  
            Class<?> clazz = Class.forName("com.android.internal.R$dimen");  
            Object object = clazz.newInstance();  
            int height = Integer.parseInt(clazz.getField("status_bar_height")  
                    .get(object).toString());  
            statusBarHeight2 = getResources().getDimensionPixelSize(height);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        Log.e("TAG", "方法2:" + statusBarHeight2);  
获取状态栏高度方法三:

状态栏高度 = 屏幕高度 - 应用区高度

//屏幕  
        DisplayMetrics dm = new DisplayMetrics();  
        getWindowManager().getDefaultDisplay().getMetrics(dm);  
        //应用区域  
        Rect outRect1 = new Rect();  
        getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect1);  
        int statusBar = dm.heightPixels - outRect1.height();  //状态栏高度=屏幕高度-应用区域高度  
        Log.e("WangJ", "方法3:" + statusBar);    

3.Android手机应用区域(红+黄区域)

手机应用区域=标题栏+View绘制区域(setcontent()中设置的布局)

获取手机以应用区域

//应用区域
        Rect outRect1 = new Rect();
        getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect1);
         Log.e("TAG", "应用区高" + outRect1.height());

4.Android手机标题高度(红色区域)

int viewTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
    Log.e("TAG", "标题栏:" + viewTop);

5.Android手机绘制区域高度(黄色区域)

Rect outRect2 = new Rect();
      getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect2);
      Log.e("TAG", "View绘制区域高度:" + outRect2.height());
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值