zoukankan      html  css  js  c++  java
  • Android-->状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels

    1:DecorView的高度
    DecorView的高度代表的是: 整个装饰窗口的高度, 这个高度包括:状态烂的高度和导航栏的高度.(状态栏和导航栏通常叫做装饰窗口, 而ActionBar不属于装饰窗口)

    这个高度, 可以代表着整个玻璃屏幕的高度.


    2.Window的RootView的高度
    RootView的获取方式:getWindow().findViewById(Window.ID_ANDROID_CONTENT);

    这个View对应的高度, 可以表示当前应用程序的有效高度.
    在没有任何修饰的情况下, 应用程序的高度是去掉状态栏和导航栏后的高度;

    也就是 (DecorView的高度)-(状态栏的高度)-(导航栏的高度);

    但是,如果你使用:
    setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    这个方法, 那么RootView的高度会和DecorView的高度相等;


    3:heightPixels的高度
    heightPixels
    这个高度表示…屏幕有效的高度;;;
    什么意思呢?
    就是:DecorView的高度去掉导航栏的高度.
    这个高度不管你有没有隐藏导航栏, 这个值都不会改变;

    所以:
    番外:如果你想知道你的手机有没有导航栏:
    如果 (DecorView的高度)-(heightPixels) > 0 说明 你的手机有导航栏

    番外:如果你想知道你的程序有没有隐藏导航栏:
    情况1:设置了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN属性:
    如果 (RootView的高度)-(heightPixels) > 0 说明 显示了导航栏

    情况2:没有设置SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN属性:
    如果 (RootView的高度+状态栏的高度)-(heightPixels) > 0 说明 显示了导航栏


    附加1 获取状态栏的高度
    正常情况下: (heightPixels) - (RootView的高度) = 状态栏的高度
    但是如果你设置了View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN或者View.SYSTEM_UI_FLAG_HIDE_NAVIGATION属性的话,,,这种方法就不准确了.

    万能,100%准确的方法:
    getResources().getDimensionPixelSize(getResources().getIdentifier(“status_bar_height”, “dimen”, “android”));

    附加2:获取导航栏的高度
    正常情况下: (DecorView的高度) - (heightPixels) = 导航栏的高度
    但是如果你设置了View.SYSTEM_UI_FLAG_HIDE_NAVIGATION属性的话,,,这种方法就不准确了.

    万能,100%准确的方法:
    getResources().getDimensionPixelSize(getResources().getIdentifier(“navigation_bar_height”, “dimen”, “android”));

  • 相关阅读:
    【技巧总结】公开漏洞学习
    【 Keepalived 】Nginx or Http 主-主模式
    【 Keepalived 】Nginx or Http 主-备模式
    【 转 】Keepalived工作原理
    【 总结 】crontab 使用脚本及直接获取HTTP状态码
    【 总结 】linux中test命令详解
    【 总结 】Tcp Keepalive 和 HTTP Keepalive 详解
    【 Linux 】I/O工作模型及Web服务器原理
    【 Ngnix 】配置路径转发至后端Apache多台虚拟主机
    【 Linux】脚本导入格式
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6671819.html
Copyright © 2011-2022 走看看