android底部滑动出现虚拟按键,Android适配底部虚拟按键的方法详解
Android适配底部虚拟按键的方法详解
发布时间:2020-10-09 05:26:12
来源:脚本之家
阅读:171
作者:yuanzhihui123
最近项目进行适配的时候发现部分(如华为手机)存在底部虚拟按键的手机会因为虚拟按键的存在导致挡住部分界面,因为需要全屏显示,故调用虚拟按键隐藏方法使之隐藏,然而发现出现如下问题:
手动操作隐藏虚拟按键后出现长白条区域
不自动隐藏
滑出状态栏后虚拟按键也出来,状态栏隐藏后虚拟却不跟着隐藏
在没有虚拟按键的设备上影响了SurfaceView全屏显示图传(原本全屏显示的图传在切出去再进来时变成了小屏显示)
通过google了很多方法并尝试终于解决了这个问题,达到如下效果:
每次进入界面时虚拟按键自动隐藏
手动滑出虚拟按键,当不操作屏幕时定时自动隐藏
当滑出状态栏时虚拟按键会跟着出来,也要处理让其和状态栏在不操作时自动隐藏
具体代码如下操作:
public class TestActivity extends AppCompatActivity {
private View decorView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
//获取顶层视图
decorView = getWindow().getDecorView();
}
@Override
protected void onStart() {
//调用配置
init();
super.onStart();
}
private void init(){
int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
//判断当前版本在4.0以上并且存在虚拟按键,否则不做操作
if (Build.VERSION.SDK_INT < 19 || !checkDeviceHasNavigationBar()) {
//一定要判断是否存在按键,否则在没有按键的手机调用会影响别的功能。如之前没有考虑到,导致图传全屏变成小屏显示。
return;
} else {
// 获取属性
decorView.setSystemUiVisibility(flag);
}
}
/**
* 判断是否存在虚拟按键
* @return
*/
public boolean checkDeviceHasNavigationBar() {
boolean hasNavigationBar = false;
Resources rs = getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class> systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
hasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
hasNavigationBar = true;
}
} catch (Exception e) {
}
return hasNavigationBar;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
注:有些时候要手动去调用上述代码中init()配置方法隐藏按键。如弹出dialog时虚拟按键会出来,此时要手动调用隐藏,还有弹出键盘等等。
记录一下,以后遇到此类问题可供参考。
以上这篇Android适配底部虚拟按键的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持亿速云。
android底部滑动出现虚拟按键,Android适配底部虚拟按键的方法详解相关推荐
- 三星 android miracast,三星S7 edge连接电视、显示器、投影仪的方法详解
说到安卓手机接电视,大多数人会想到MHL功能,但经过楼主实测,S7EDGE并不具备MHL功能: 楼主通过三星 S2用的绿联MHL转hdmi线连接s7edge与电视没有任何显示, 实际上还是有多种方法( ...
- 青花瓷抓包工具如何对Android手机https请求抓包及华为手机安装Charles证书方法详解!
网上搜索了很多文档,这两篇是写的比较全面的,整个流程看完,你就会安装使用了! 参考:windows下使用Charles工具如何对android手机https请求进行抓包 参考:Android安装Cha ...
- 电脑上怎么清空我的android手机,缓存数据可以清除吗?手机与电脑清除方法详解...
我们在使用手机和电脑的时候,如果遇到空间内存不足的话,总会选择清理垃圾,从而释放空间,以保证它们的运行速度以及使用的效果,有一些人疑惑缓存数据可以清除吗?其实有的是可以进行清除的,而有的是不可以进行清 ...
- tlwdr6300虚拟服务器,TL-WDR6300怎么设置?TP-Link TL-WDR6300设置方法详解
大家都知道,作为国内最大的路由器厂商,TP-Link路由器相信很多朋友都不会陌生,最近家中刚好换了一台新款TP-Link TL-WDR6300无线路由器,配备2.4Ghz和5Ghz双频WiFi,下面小 ...
- Android初级,实现网易云音乐歌曲列表界面效果,播放界面效果,ListView,ViewPager方法详解
初学Android初级,第一篇博客文章,如有错误,还望批评指正! 本文主要内容以网易云音乐歌曲列表界面效果代码,播放音乐界面效果代码为主,并将ListView和ViewPager作为实现界面滑动功能的 ...
- android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)
ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...
- android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解
相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】
本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...
最新文章
- linux 调优系列
- Mongodb定时备份脚本和清除脚本
- mysql hy000 2013_MySQLERROR2013(HY000)错误解决方法
- 表单html遇到的问题及处理,Web前端开发中常见问题及解决方案
- Windows server 2003 ××× 配置实例(Site to Site)
- Atitit 常用数据类型有哪些 目录 1.1. 数值类型 整数 小数 自增整数	1 1.2. 货币类型	1 1.3. 字符类型 字符串	2 1.4. 日期/时间类型 时间戳	2 1.5. Ur
- python爬虫电影资源_python爬虫批量获取最新电影资源
- 啊哈C语言 第四章 【代码】【习题答案】
- 利用matlab实现卷积实验报告,matlab卷积实验报告(共8篇).doc
- 手机远程锁定计算机,手机怎么控制电脑 手机远程控制电脑关机方法
- 项目管理十大过程思维导图
- seo网站优化,SEO优化费用
- OVM Manager
- 清华大学计算机系张昕,程序设计语言的研究与发展——如何推进国内程序设计语言的教育和研究?丨CNCC技术论坛...
- Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
- DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器
- APP消息推送测试点
- 20170425めも
- 【ADB】设置adb输入法
- 解决浏览器下用Debug Flash Player 访问游戏崩溃问题(2012-2-19)
热门文章
- android 程序数据目录,Android APP 数据存放目录
- Fragstats景观分析研究
- paypal创始人_艾问PayPal创始人彼得·蒂尔(无删减)
- 缺陷报告.定义,报告,核心要素
- 2021年机修钳工(中级)考试题库及机修钳工(中级)试题解析
- 基于 SIP 的会议系统框架(草稿)
- ElasticSearch索引模块
- 输入两个数求之间的平方数
- Jungle Scout中国市场首发亚马逊FBA卖家百万美金案例中文版详解
- java清空购物车方法_Javaweb网上商城项目实战(21)删除和清空购物车