欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

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

时间:2021-02-26 10:50:29|栏目:Android代码|点击:

有些时候,我们需要知道当前手机上是否显示了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中的处理。

上一篇:FlowLayout流式布局实现搜索清空历史记录

栏    目:Android代码

下一篇:Android仿直播特效之点赞飘心效果

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

本文地址:http://www.codeinn.net/misctech/70031.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有