欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)

程序员文章站 2024-02-20 19:45:16
有些时候,我们需要知道当前手机上是否显示了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是否显示的方法(获取屏幕真实的高度),希望对大家有所帮助