有些时候,我们需要知道当前手机上是否显示了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是否显示的方法(获取屏幕真实的高度),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-01-03

android 获取navigationbar 高度,Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)...相关推荐

  1. 三星手机判断输入法是否显示的方法

    我们都知道InputMethodManager是没有api,能够让第三方应用获取输入法是否显示的. 三星Note 最近使用了下三星S8自带的Note应用,发现它能够实时知道输入法是否显示.碰巧三星的N ...

  2. 获取cookie_抢券第一课:三种方法获取Cookie

    现在分享京东抢券是不是不合适?毕竟还没有到双十一或者其他京东大促的时间. 记得以往京东还有那种神券299减200,399减300.基本上都是到点进行抢购,而且还不一定能抢到.不过今天先来分享获取Coo ...

  3. js快捷获取超链接参数和修改超链接(新增URLSearchParams方法获取参数)

    //https://www.baidu.com?sjry=111function GetRequest() {var url = location.search;var theRequest = ne ...

  4. android 添加广告用proguard混淆后不显示问题解决方法

    android 添加有米广告,打开proguard混淆后,广告不显示了,解决方法是keep所有引用的jar package 1 -keep public class net.youmi.android ...

  5. 微信小程序(十一)实战——时间的获取,比较,判断(微信小程序 如何获取时间)

    1.获取当前系统日期和时间 在小程序中,新建项目时,就会有一个utils.js文件,就是获取日期和时间的,代码如下: utils.js: const formatTime = date => { ...

  6. Android中TextView中string的特殊符号显示的方法

    ⇠  箭头类 符号 UNICODE 符号 UNICODE HTML JS CSS HTML JS CSS ⇠ &;#8672 /u21E0 /21E0 ⇢ &;#8674 /u21E2 ...

  7. php获取post表单数据_PHP get和post方法获取form表单数据

    在 PHP 中使用 get 和 post 两种方法接收来自 form 表单的值,在 form 表单中可以定义 PHP 的接收方式和接收地址. get 和 post 方法主要有以下几点区别. get 是 ...

  8. html 获取p 属性值,js使用html()或text()方法获取设置p标签的显示的值

    html()方法可以用来读取或者设置某个元素中的HTML内容,text()方法可以用来读取或者没置某个元素中的文本内容 html()方法 此方法类似于JavaScript中的innerHTML属性,可 ...

  9. this ts 方法获取_vue+typescript项目中用this.$refs和原生方法获取的dom有什么区别

    项目中使用vue+typescript 使用this.$refs.refsName和document.querySelector打印出来的结果是一样的 但是当使用API是.$refs获得的DOM就报错 ...

最新文章

  1. php ip地址地区,PHP查询ip所在地(省份,市)
  2. python 多进程_说说Python多线程与多进程的区别?
  3. vmware网络模式设置(说的最简单的一篇文章)
  4. live555 源码分析: DESCRIBE 的处理
  5. c语言铁路托运行李费用图,3.为铁路部门编写计算运费的程序。假设铁路托运行李,规定每张客票托运费计算方法是:行李重量不超过50kg...
  6. 对于linux socket与epoll配合相关的一些心得记录
  7. 西门子em235模块的功能_图文讲解PLC模拟量模块与传感器接线方法和注意事项
  8. Dubbo与Zookeeper伪集群部署
  9. 木马的隐藏及其启动方式 (转)
  10. 国外统计学课程主页Statistical Books, Manuals and Journals
  11. 怎么制作简单地图,怎样画简单的地图?
  12. 宝塔面板安装MySQL数据库
  13. 2019半年总结——学习与成长
  14. Windows下批量删除空文件夹
  15. php 处理png图片白色背景色改为透明色
  16. WPF中的StackPanel、WrapPanel、DockPanel
  17. Zigbee3.0 协议特性
  18. 免费的python编辑器_免的解释|免的意思|汉典“免”字的基本解释
  19. 简单粗暴地理解动态规划
  20. 深度:保健产品市场正在经历深度震荡与变革转型,新时代环境下孕育哪些创新发展机会?

热门文章

  1. c语言模仿自动析构,C语言实现析构器
  2. 2019工作总结报告
  3. 使用级联有序调度窗口生成无序调度
  4. HaProxy+Keepalived+Mycat高可用群集配置 - pursuer.chen - 博客园
  5. js 伪造referer_javascript操作referer方法探讨
  6. 巧用邮件营销技巧获客
  7. Springer的Latex投稿错误记录
  8. array.groupBy,对数组进行分类
  9. 多项式除法Java实现
  10. 【STM32】HAL库学习 3—hal_time