最近公司做了个游戏,是用cocos做的,用了安卓的壳子,没啥关于安卓的东西。
有个需求,就是隐藏虚拟按键
隐藏按键很简单

int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE;
window.getDecorView().setSystemUiVisibility(uiOptions); // 使用activity的window是隐藏虚拟按键。
getWindow().setNavigationBarColor(Color.parseColor("#1bb5d7")); //设置虚拟按键的背景颜色

但是这只满足个别需求
比如小米8 全面屏 判断条件不一样
下面展示一些 内联代码片

protected void hideVirtualButton() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {if (checkDeviceHasNavigationBar(this)) {getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE//256| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION//512| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//1024| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar2
//                                | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar4| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY//4096);} else {getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);}}}public static boolean checkDeviceHasNavigationBar(Context context) {boolean hasNavigationBar = false;Resources rs = context.getResources();int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");if (id > 0) {hasNavigationBar = rs.getBoolean(id);}try {if (isMIUI()) {//小米手机在全面屏的情况下,虚拟按键栏不展示,但是判断出来是true ,而且还有高度,就专门换一种方式来判断。if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {hasNavigationBar = Settings.Global.getInt(context.getContentResolver(), "force_fsg_nav_bar", 0) == 0;}} else {Class systemPropertiesClass = Class.forName("android.os.SystemProperties");Method m = systemPropertiesClass.getMethod("get", String.class);String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");//判断是否隐藏了底部虚拟导航int navigationBarIsMin = 0;if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {navigationBarIsMin = Settings.System.getInt(context.getContentResolver(),"navigationbar_is_min", 0);} else {navigationBarIsMin = Settings.Global.getInt(context.getContentResolver(),"navigationbar_is_min", 0);}if ("1".equals(navBarOverride) || 1 == navigationBarIsMin) {hasNavigationBar = false;} else if ("0".equals(navBarOverride)) {hasNavigationBar = true;}}} catch (Exception e) {}return hasNavigationBar;}/*** 判断是不是小米手机** @return*/public static boolean isMIUI() {String manufacturer = Build.MANUFACTURER;// 这个字符串可以自己定义,例如判断华为就填写huawei,魅族就填写meizuif ("xiaomi".equalsIgnoreCase(manufacturer)) {return true;}return false;}

安卓 关于隐藏虚拟按键相关推荐

  1. 安卓平板隐藏虚拟按键_实现安卓设备虚拟按键隐藏和显示的方法和系统的制作方法...

    实现安卓设备虚拟按键隐藏和显示的方法和系统的制作方法 [技术领域] [0001]本发明涉及移动终端显示技术领域,尤其涉及一种方便实现安卓设备虚拟按键隐藏和显示的方法和系统. [背景技术] [0002] ...

  2. 安卓平板隐藏虚拟按键_如何隐藏 Android 下方的三个虚拟按键

    满意答案 RaulEP 2016.05.21 采纳率:54%    等级:5 已帮助:205人 Android 隐藏虚拟按键,可以使用谷歌官方提供的api里的SYSTEM_UI_FLAG_HIDE_N ...

  3. 安卓平板隐藏虚拟按键_Android实现隐藏手机底部虚拟按键

    现在的手机比较流行底部带虚拟按键,比如华为.nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能, 用简单的方法直接获取camera支持的手机屏幕分辨率然后用 ...

  4. 安卓平板隐藏虚拟按键_Android 4.0 虚拟按键、手机模式、平板模式

    关键词:android 4.0 手机模式(phone) 平板模式(table) 虚拟按键 lcd_density 平台信息: 内核:linux2.6/linux3.0 系统:android/andro ...

  5. 安卓 P 动态显示和隐藏虚拟按键

    需求: 系统预制两个launcher,客户launcher要隐藏虚拟按键并全屏,切换原生launcher后,虚拟按键要正常显示. 在安卓 7.1 上主要是实现PHONE_STATUS_BAR_ENAB ...

  6. 安卓9去掉搜索栏_android9.0隐藏虚拟按键跟状态栏,除去google搜索栏.

    1.隐藏虚拟按键跟状态栏 1.修改文件: frameworks/base/packages/SettingsProvider/res/values/defaults.xml cell,bluetoot ...

  7. Android 4.2虚拟按键背景透明,Android 4.0 隐藏虚拟按键(导航栏)的方法

    在Android4.0里,多了一些API,其中包括怎样隐藏虚拟按键(导航栏),这样编写游戏或一个视频播放器时,可以设置隐藏虚拟按键的参数,达到最佳效果,当然前提是使用的手机是有虚拟按键的,例如gala ...

  8. Android 隐藏虚拟按键

    Android 隐藏虚拟按键 领导要求: 横屏播放视频时,不展示虚拟按键: 恢复到竖屏时,展示虚拟按键: /*** NavigationBar 显示与隐藏*/ public class Navigat ...

  9. java游戏管理器虚拟按键_Android实现手机游戏隐藏虚拟按键

    手机游戏实现Android隐藏虚拟按键,供大家参考,具体内容如下 在华为等型号的手机会有虚拟按键,在进入游戏的时候,需要全屏隐藏这个按键,并在下拉状态栏的时候,会重新呼出虚拟按键. 游戏的加载过程中, ...

最新文章

  1. “好像在哪见过你”现在有了科学解释,一群脑细胞帮你回忆那张脸 | Science
  2. Centos下安装apahce的configure: error: APR not found. Please read the documentation解决办法
  3. metadata in OData and png
  4. 部署在SAP ABAP服务器上的SAP UI5应用的JavaScript文件,是如何被SAP UI5 repository handler处理的
  5. STM32F4 串口DMA
  6. Eureka自我保护机制
  7. zplane函数怎么用m文件调用_elastique.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...
  8. 把变量赋值给寄存器_阻塞赋值和非阻塞赋值的区别与记忆
  9. 使用 PHP Curl 做数据中转
  10. 巴西矿坝决堤事故已致58人死亡 多达300人失踪
  11. C语言必背18个经典程序,2022年C语言必背100代码大全
  12. 小米手机测试代码电池测试代码
  13. 6.1 统计学基本原理
  14. 基于推特数据挖掘交通事件的城市交通流深度学习预测模型
  15. 嵇少峰:互联网金融草根时代终结
  16. redis——jedis的使用以及springboot整合redis
  17. 敏感字符的识别+处理
  18. CentOS 6.8 Local time zone must be set--see zic manual page
  19. NVIDIA显卡驱动的安装失败
  20. 周志华 《机器学习初步》 绪论

热门文章

  1. GBK UTF-16 UTF-8 编码表
  2. 将Ubuntu等linux系统安装到移动硬盘--操作系统随身携带
  3. arm 64位 android,一大波64位手机处理器来袭
  4. 【Android小知识点】判断手机是否开启了模拟位置
  5. K12在线教育产品分析:北京四中网校
  6. ueditor编辑器复制粘贴图片上传
  7. 拉格朗日中值定理 积分中值定理 导数定义:
  8. 大学计算机二级考试无故缺考,快来看看2019年起自考学历无故缺考的后果
  9. Vmware Workstation16 安装Vmtools
  10. 高效建设网站管理网站的功能有哪些呢?