屏幕的一些高度值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/miao9999/article/details/84644177
  1. 屏幕的高度(1920px)

    //屏幕
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    Log.e("MainActivity", "屏幕高:" + dm.heightPixels);
    
  2. 顶部状态栏的高度(66px)

    // 状态栏的高度
    int statusBarHeight1 = -1;
    //获取status_bar_height资源的ID
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        //根据资源ID获取响应的尺寸值
        statusBarHeight1 = getResources().getDimensionPixelSize(resourceId);
    }
    
  3. 应用区域的高度(屏幕的高度-状态栏的高度)(1854px)

    //应用区域
    Rect outRect1 = new Rect();
    // outRect1 被处理成应用的显示区域(除状态栏之外的所有可视区域)
    getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect1);
    

    通过 getWindowVisibleDisplayFrame(outRect1) 方法获取到应用区域的高度

  4. public void getWindowVisibleDisplayFrame(Rect outRect) {
      ...
          // 通过下面几行获取到应用区域的高度
            final Rect insets = mAttachInfo.mVisibleInsets;
            outRect.left += insets.left;
            outRect.top += insets.top;
            outRect.right -= insets.right;
            outRect.bottom -= insets.bottom;
            return;
        }
        // The view is not attached to a display so we don't have a context.
        // Make a best guess about the display size.
        Display d = DisplayManagerGlobal.getInstance().getRealDisplay(Display.DEFAULT_DISPLAY);
        d.getRectSize(outRect);
    }
    
  5. 标题栏的高度(168px)

    // 标题栏的高度
    int viewTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
    
  6. 具体实例

    在这里插入图片描述

    整个屏幕的高度是 1920px,最上面红色的部分为状态栏高度是 66px,拉下来蓝色的部分是标题栏高度是 168px,剩余部分为 content 的内容,setContentView() 时设置的根布局的高度。如果 theme 的主题设置为 NoActionBar 的话,标题栏的高度为 0 ,content 的高度为屏幕的高度-状态栏的高度。

猜你喜欢

转载自blog.csdn.net/miao9999/article/details/84644177