现在的手机比较流行底部带虚拟按键,比如华为、nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能,

用简单的方法直接获取camera支持的手机屏幕分辨率然后用SurfaceView全屏渲染出来,这时由于底部虚拟按键占用了一定的高度的屏幕空间,这时图像会被压缩,

特别是拍头像时会很明显,如图:

接下来加上几个方法就OK 了,代码如下

/**

* 隐藏虚拟按键,并且全屏

*/

protected void hideBottomUIMenu(){

//隐藏虚拟按键,并且全屏

if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api

View v = this.getWindow().getDecorView();

v.setSystemUiVisibility(View.GONE);

} else if (Build.VERSION.SDK_INT >= 19) {

//for new api versions.

View decorView = getWindow().getDecorView();

int uiOptions = 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 nav bar

// | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar

| View.SYSTEM_UI_FLAG_IMMERSIVE;

decorView.setSystemUiVisibility(uiOptions);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

}

}

检查是否存在虚拟按键栏

/**

* 检查是否存在虚拟按键栏

* @param context

* @return

*/

public static boolean hasNavBar(Context context) {

Resources res = context.getResources();

int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");

if (resourceId != 0) {

boolean hasNav = res.getBoolean(resourceId);

// check override flag

String sNavBarOverride = getNavBarOverride();

if ("1".equals(sNavBarOverride)) {

hasNav = false;

} else if ("0".equals(sNavBarOverride)) {

hasNav = true;

}

return hasNav;

} else { // fallback

return !ViewConfiguration.get(context).hasPermanentMenuKey();

}

}

/**

* 判断虚拟按键栏是否重写

* @return

*/

private static String getNavBarOverride() {

String sNavBarOverride = null;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

try {

Class c = Class.forName("android.os.SystemProperties");

Method m = c.getDeclaredMethod("get", String.class);

m.setAccessible(true);

sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");

} catch (Throwable e) {

}

}

return sNavBarOverride;

}

hideBottomUIMenu()在onCreate()里面调用就可以了,之后的效果,底部虚拟按键也成为了SurfaceView的一部分,不仅仅只是透明了哦,如图:

当然以上代码不一定只能用于录像,相关功能需求都可以使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

安卓平板隐藏虚拟按键_Android实现隐藏手机底部虚拟按键相关推荐

  1. android 隐藏手机底部虚拟按键

    今天,简单讲讲android如何隐藏手机下面的虚拟按键. 其实,自己在做界面适配时,老是发现了华为手机存在适配的问题,主要就是华为手机有一个底部的虚拟按键占用了界面的部分空间,所以在网上搜索了如何隐藏 ...

  2. Android实现隐藏手机底部虚拟按键

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

  3. android 虚拟按键自定义,如何适配Android底部虚拟按键

    前言 本文章只做一个记录,一个备忘,也为了更好的帮助他人,文章参考地址:Android适配底部虚拟按键的方法 问题说明 项目进行中需要透明渐变的状态栏,全屏显示,当然透明渐变好弄,方法有很多,但是如果 ...

  4. android 华为底部虚拟键盘隐藏,Android隐藏手机底部虚拟按键的方法

    现在的Android手机有好多底部带虚拟按键,比如华为.nexus.魅族等等,一般情况下对APP没啥影响,但是有时候就必须要强制隐藏. 例如:游戏的时候,拍照的时候. 接下来加上几个方法就OK 了,代 ...

  5. android dialog隐藏虚拟按键,关于此框架在BottomSheetDialogFragment使用时,华为手机底部虚拟按键弹出与隐藏时输入框位置不贴键盘...

    我这边试过还是不行,而且我们ui是要dialog不全屏的,下面附上代码 public void onStart() { super.onStart(); Dialog dialog = getDial ...

  6. 解决输入法遮挡布局和华为手机底部虚拟按键遮挡底部界面的方法

    先上最终的代码: public class AndroidWorkaround {public static void assistActivity(View content) {new Androi ...

  7. h5+、mui创建手机APP,华为等手机底部虚拟按键问题

    网址:http://ask.dcloud.net.cn/question/56517 2019年7月15日03:07:38更新,此解决方式会导致文件上传功能炸掉,可以去我7.15的博客查看解决方式 转 ...

  8. android平板哪个好用吗,明明知道iPad更实用,却坚持买安卓平板,是一种什么心态?...

    众所周知,苹果为平板电脑专门推出了iPad OS独立系统,并且APP Store入驻了大量优质的横屏生产力工具,平板生态之完善,几乎让安卓厂商望尘莫及.这就是为什么大家发布平板电脑的时候,基本上都不敢 ...

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

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

最新文章

  1. 马化腾曾遭多年“威胁”:饱受烟害十年的“大兵”,终于戒烟了
  2. 卷积转换为矩阵运算中填充数的计算-GEMM
  3. Java经典面试题(N人循环报M个数出列)实现
  4. SilverFoxServer出炉!!
  5. Linux与Windows文件查找命令
  6. 工业交换机的单模和多模能否互相替代?
  7. 在idea上配置hadoop开发环境,使用maven配置hadoop的依赖,自动管理相关jar包
  8. B 站神曲 damedane:精髓在于换脸,五分钟就能学会
  9. Python错误重试逼疯多少人?解决办法来了
  10. 二叉树的遍历_递归实现
  11. 全国哀悼日网站都成黑白色实现
  12. Android P cdd(Android 兼容性定义文档)
  13. 【SQLserver】使用openrowset方法导入EXCEL表格数据
  14. Openpose Windows10环境并且是3系显卡+ Unity 环境部署
  15. 微信蓝牙设备开发--添加设备以及获取微信为设备生成的二维码
  16. 测试用的美国信用卡账号
  17. 大数据技术之 Flume
  18. 【javaScript 的 proxy】
  19. 《痞子衡嵌入式半月刊》 第 50 期
  20. 用 ECharts 做出漂亮的数据统计图

热门文章

  1. putextra 传递对象_intent.putextra用法 使用Intent传递对象的两种方式 - 电脑常识 - 服务器之家...
  2. C#.Net中操作XML方法一
  3. 红星美凯龙CEO车建新的圆融和霸气
  4. 2016湘潭大学“长城信息杯”程序设计邀请赛总结
  5. 个性化是web2.0的核心前途
  6. AI算法实现武侠小说中的“绝世武功”——动作残影特效!
  7. 2021-2027全球及中国潮牌鞋行业研究及十四五规划分析报告
  8. Win系统 - 一键秒关所有程序,霸气侧漏!
  9. [Android问答] px、dp和sp,这些单位有什么区别?
  10. iOS 中的 CFBundleShortVersionString 与 CFBundleVersion