Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)
有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键。
比如截屏的时候,要获取屏幕的高度,必须包括NavigationBar的高度。
试过网上的多种方法,但是对那种可以通过手势来显示/隐藏的NavigationBar没办法,最后终于找到了一个好办法,看代码:
publicbooleanisNavigationBarShow(){ if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR1){ Displaydisplay=getWindowManager().getDefaultDisplay(); Pointsize=newPoint(); PointrealSize=newPoint(); display.getSize(size); display.getRealSize(realSize); returnrealSize.y!=size.y; }else{ booleanmenu=ViewConfiguration.get(this).hasPermanentMenuKey(); booleanback=KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); if(menu||back){ returnfalse; }else{ returntrue; } } } publicstaticintgetNavigationBarHeight(Activityactivity){ if(!isNavigationBarShow(activity)){ return0; } Resourcesresources=activity.getResources(); intresourceId=resources.getIdentifier("navigation_bar_height", "dimen","android"); //获取NavigationBar的高度 intheight=resources.getDimensionPixelSize(resourceId); returnheight; } publicstaticintgetSceenHeight(Activityactivity){ returnactivity.getWindowManager().getDefaultDisplay().getHeight()+getNavigationBarHeight(activity); }
具体代码可以参考Bigbang项目的ViewUtil中的处理。
以上所述是小编给大家介绍的Android判断NavigationBar是否显示的方法(获取屏幕真实的高度),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!