admin管理员组

文章数量:1570428

有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键。

比如截屏的时候,要获取屏幕的高度,必须包括NavigationBar的高度。

试过网上的多种方法,但是对那种可以通过手势来显示/隐藏的NavigationBar没办法,最后终于找到了一个好办法,看代码:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 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是否显示的方法(获取屏幕真实的高度),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文标签: 屏幕高度真实方法android