Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
发布日期:2021-11-12 07:57:37 浏览次数:31 分类:技术文章

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

原文地址:http://www.jianshu.com/p/84d951b3f079

有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键。   
比如截屏的时候,要获取屏幕的高度,必须包括NavigationBar的高度。
试过网上的多种方法,但是对那种可以通过手势来显示/隐藏的NavigationBar没办法,最后终于找到了一个好办法,看代码:
public boolean isNavigationBarShow(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); Point realSize = new Point(); display.getSize(size); display.getRealSize(realSize); return realSize.y!=size.y; }else { boolean menu = ViewConfiguration.get(this).hasPermanentMenuKey(); boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); if(menu || back) { return false; }else { return true; } }}public static int getNavigationBarHeight(Activity activity) { if (!isNavigationBarShow(activity)){ return 0; } Resources resources = activity.getResources(); int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); //获取NavigationBar的高度 int height = resources.getDimensionPixelSize(resourceId); return height;}public static int getSceenHeight(Activity activity) { return activity.getWindowManager().getDefaultDisplay().getHeight()+getNavigationBarHeight(activity);}
具体代码可以参考项目的ViewUtil中的处理。

转载地址:https://blog.csdn.net/happy_love1990/article/details/78316568 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android原生AlertDialog修改标题,内容,按钮颜色,字体大小等
下一篇:android 如何动态设置View的margin和padding

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月04日 17时56分30秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Java全栈开发---Java ERP系统开发:商业ERP(十四)ERP系统的权限分配 2021-06-29
Android快速入门-----用户界面(上)UI组件 2021-06-29
Android快速入门-----数据存储(三)Sqlite应用练习:增删查改案例练习,应用的优化(背景显示) 2021-06-29
Android单元的Junit测试(快速入门) 2021-06-29
does not specify a android.test.InstrumentationTestRunner instrumentation or does not 2021-06-29
RuntimeException运行时异常,出现此异常,程序中断(RuntimeException不能捕获,不能抛出,不需要捕获)运行时优先抛出异常 2021-06-29
Java当中equalsIgnoreCase()和equals()的区别,解析+习题 2021-06-29
Java当中特殊情况Boolean通过new创建对象的值为null的时候实际值为false,而直接赋值为null 的值就是null 2021-06-29
Windows10开启电脑卓越性能模式,运行速度提升10%,CUP利用率达到50% 2021-06-29
Java 的Swing 之JFrame快速入门 2021-06-29
Mybatis快速入门(3)resultType(输出类型)一对一关联映射,一对多关联映射 2021-06-29
Android Studio创建shapeDrawable的方法 2021-06-29
Mybatis快速入门(4)Mybatis与Spring整合(增删改查)以及逆向工程 2021-06-29
Java 之 一天快速入门--SpringMVC快速入门(1)SpringMVC介绍、SpringMVC入门创建工程,SpringMVC执行流程 2021-06-29
计算机二级C语言:大题程序修改题 2021-06-29
Android Studio 实现注册信息表单验证的源代码(实现账号,密码,邮箱,手机号验证) 2021-06-29
Android Studio 安卓手机上实现火柴人动画(Java源代码—Python) 2021-06-29
SpringMVC快速入门(2)商品列表的加载 2021-06-29
SpringMVC快速入门(3)默认组件加载 2021-06-29
SpringMVC快速入门(4)SpringMVC整合Mybatis,SpringMVC参数绑定 2021-06-29