博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android-->状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels
阅读量:6173 次
发布时间:2019-06-21

本文共 1363 字,大约阅读时间需要 4 分钟。

1: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的高度

这个高度表示…屏幕有效的高度;;;
什么意思呢?
就是: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”));

转载地址:http://qvtba.baihongyu.com/

你可能感兴趣的文章
zabbix(2)使用自带模板完成基本监控
查看>>
安装rrdtool出现的错误
查看>>
木马隐藏地点全搜查
查看>>
Subversion版本控制
查看>>
奇怪的打印纸盘故障
查看>>
hyperledger v1.0.5 区块链运维入门(一)
查看>>
Mybatis-mapper-xml-基础
查看>>
5. GC 调优(基础篇) - GC参考手册
查看>>
Windows 7 XP 模式颜色质量只有16位的解决
查看>>
SonicWall如何安全模式升级防火墙
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
从Atlas到Microsoft ASP.NET AJAX(6) - Networking, Application Services
查看>>
成长之路---写好一个类
查看>>
读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
查看>>
范围管理和范围蔓延
查看>>
android90 bind方式启动服务service调用service里的方法
查看>>
前端开发薪资之各地区对比(图文分析)(share)
查看>>
对做“互联网产品”的一些想法
查看>>
SPI协议及其工作原理浅析【转】
查看>>
原生js编写的安全色拾色器
查看>>