准确获取系统顶部状态栏,顶部导航栏的高度

news/2024/12/22 10:54:45/

看到许多文章通过获取 decorView 的 top 或者 getWindowManager().getDefaultDisplay() 的方法来获取状态栏的高度,在转屏或者切换的时候会比较容易出错,这里推荐一种更加准确的方法:

在Frameworks目录下,状态栏的高度和导航栏的高度/宽度均已经有了定义, 我们所要做的只是把他们读取出来
android 4.2.2\frameworks\base\core\res\res\value

这里写图片描述

所以通过如下方式

  private static int sNaviBarHeight = -1;public static int getNaviBarHeight(Context context) {if (sNaviBarHeight > 0) {//获取一次高度后就记录下来,不必每次都去反射return sNaviBarHeight;}try {Class<?> c = Class.forName("com.android.internal.R$dimen");Object o = c.newInstance();Field field = c.getField("navigation_bar_height");int x = (Integer) field.get(o);sNaviBarHeight = context.getResources().getDimensionPixelSize(x);} catch (Exception e) {//对于某些奇葩机器防止高度不能正确获取,留一个默认的hardcode值final int dp = 48;float density = context.getResources().getDisplayMetrics().density;sNaviBarHeight = Math.round(density * dp);ExceptionHandler.processFatalException(e);}return sNaviBarHeight;}

http://www.ppmy.cn/news/804564.html

相关文章

仿iphone顶部状态栏_无需第三方APP,苹果iPhone手机屏幕录制的方法

有些小伙伴在使用iPhone手机玩游戏的时候&#xff0c;很想把自己玩的游戏录个高清视频&#xff0c;再添加自己的原声解说&#xff0c;做个教程&#xff0c;分享到网上或发送给朋友&#xff0c;或者看到喜欢的直播需要录制下来&#xff0c;以后欣赏或分享给他人&#xff0c;但不…

移动端:js如何获取当前手机的状态栏高度

废话不多说&#xff0c;直接直接上代码&#xff1a; //获取当前手机状态栏高度 let immersed 0; let ms (/Html5Plus\/.\s\(.*(Immersed\/(\d\.?\d*).*)\)/gi).exec(navigator.userAgent); if(ms&&ms.length>3) { // 当前环境为沉浸式状态栏模式immersed parseF…

iOS--状态栏的调整控制方法

在不同的需求场景中&#xff0c;我们会遇到把状态栏字体颜色显示为深色或者浅色&#xff0c;也可能会遇到需要隐藏状态栏的情况&#xff0c;下面就是对状态栏的一些基本操作&#xff0c;注意&#xff0c;代码是写到Viewcontroller中哦&#xff0c;直接写就是了&#xff0c;系统…

ios底部栏设计规范_iOS平台的移动UI设计规范

一、状态栏和导航栏 1、状态栏(Status Bars)就是iPhone最上方用来显示时间、运营商信息、电池电量的那个很窄的区域。 2、导航栏(Navigation Bars)就是状态栏之下的区域,一般来说导航栏中间是页面标题,左右是放置功能图标的区域。 在iPhone6/7/8设计中,状态栏的高度为20pt(4…

如果ios头部状态栏挡住了导航栏,能看到内容从下面穿过的解决方法。

如上图&#xff0c;内容从导航栏头顶穿过会显示出来(ios系统)。解决方法&#xff1a; https://jingyan.baidu.com/article/0964eca26d9cbd8285f5369f.html html5移动端Meta设置 听语音 |浏览&#xff1a;1262|更新&#xff1a;2016-05-26 19:08 html5移动端Meta设置 工具/原料…

uniapp实现自适应手机状态栏高度的顶部导航栏

<!-- 顶部导航栏 --> <template><view><block v-if"!onlyShowStatusBar"><image :src"imgSrc" v-if"imgSrc" class"bg-img" mode"widthFix"></image><view class"title-bar-ap…

android 状态栏wifi,【技术贴】教你修改状态栏里的wifi、信号、电量图标(转自论坛)...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 原帖地址:http://www.miui.com/forum.php?mod=viewthread&tid=1745173 素材地址:http://pan.baidu.com/share/link?shareid=2354935872&uk=1009070904 首先,你要有一个主题包(这儿就拿个例子。比如,我要替换xxx.mtz…

android 状态栏显示流程,基于Android系统的跨屏状态栏实现方法与流程

本发明属于车机应用技术领域,具体涉及一种基于Android系统的跨屏状态栏实现方法。 背景技术: 目前,燃油车、新能源车等各类型车辆迅速发展。同时,与手持移动终端的发展趋势相似——从以黑莓品牌为代表的全键盘手机演进至以苹果品牌的全触控手机——车机系统同样在发生明显变…