Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)
程序员文章站
2024-02-23 17:57:22
有些时候,我们需要知道当前手机上是否显示了navigationbar,也就是屏幕底部的虚拟按键。
比如截屏的时候,要获取屏幕的高度,必须包括navigationbar的高...
有些时候,我们需要知道当前手机上是否显示了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); }
具体代码可以参考bigbang项目的viewutil中的处理。
以上所述是小编给大家介绍的android判断navigationbar是否显示的方法(获取屏幕真实的高度),希望对大家有所帮助
上一篇: java设计模式笔记之装饰模式
推荐阅读
-
Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)
-
Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)
-
Android获取屏幕或View宽度和高度的方法
-
C#获取真实IP地址(IP转为长整形、判断是否内网IP的方法)
-
C#获取真实IP地址(IP转为长整形、判断是否内网IP的方法)
-
Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法
-
Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法
-
android获取屏幕高度和宽度的实现方法
-
Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法
-
三种方法判断js页面上的元素是否在屏幕显示区域内