Android 如何屏蔽系统下滑显示菜单栏
前言:在日常开发安卓应用的过程中,是不是遇到过这样的需求:禁用系统的下滑菜单栏,下面就来实现下这个需求。
原理分析:创建一个高度和状态栏一样高的透明大小的布局
第一步:获取状态栏的高度
private int getHeight(Context context) {int identifier = context.getResources().getIdentifier("status_bar_height", "dimen", "android");//获取状态栏的的资源IDreturn identifier > 0 ? context.getResources().getDimensionPixelSize(identifier) : 0;//通过资源ID获取状态栏的实际高度}
第二步:创建透明的布局
mLayoutParams = new WindowManager.LayoutParams();mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;mLayoutParams.gravity = Gravity.TOP;//位于顶部mLayoutParams.flags = FLAG_LAYOUT_IN_SCREEN | FLAG_NOT_TOUCH_MODAL |FLAG_NOT_FOCUSABLE;mLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;//屏幕的宽度mLayoutParams.height = getHeight(this);//获取高度mLayoutParams.format = PixelFormat.TRANSPARENT;//系统选择支持透明性的格式
第三步:根据不同的安卓版本做控制:
if (Build.VERSION.SDK_INT >= 23) {if (Settings.canDrawOverlays(this)) {//检查指定的上下文是否可以绘制在其他应用程序之上。API为23以上((WindowManager) getApplicationContext().getSystemService("window")).addView(new View(this), mLayoutParams);} else {startActivityForResult(new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION",Uri.parse("package:" + getPackageName())), 200);}} else {((WindowManager) getApplicationContext().getSystemService("window")).addView(new View(this), mLayoutParams);}@RequiresApi(api = Build.VERSION_CODES.M)@Overrideprotected void onActivityResult(int i, int i2, Intent intent) {if (i != 200) {return;}if (Settings.canDrawOverlays(this)) {((WindowManager) getApplicationContext().getSystemService("window")).addView(new View(this), mLayoutParams);return;}}
需要的权限:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Android 如何屏蔽系统下滑显示菜单栏相关推荐
- 友盟推送android 8.0系统不显示推送消息问题
android各版本对应的api情况,而android8.0以及之后的版本,notifycation为了更安全,又增加了channel的写法,代码如下 if (Build.VERSION.SDK_IN ...
- Android系统默认显示电池电量百分比
Android系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路: 需求:Android 11 让系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路 ...
- android上滑隐藏动画,ListView上滑和下滑,显示和隐藏Toolbar的实现方法
1.准备Toolbar 先隐藏系统自带的actionbar,在AndroidManifest.xml文件标签中: android:theme="@style/Theme.AppCompat. ...
- android 12.0屏蔽系统所有通知
1.概述 在12.0的产品开发中最近公司项目要求 屏蔽系统所有通知 不需要在下拉状态栏显示通知功能实现 要控制系统通知的开关功能,需要屏蔽系统通知,而系统通知都是由NoticationManagerS ...
- android自带中文字体,Android更换系统默认显示的字体使用自定义字体
序言 上一篇Android 自定义字体,更换系统默认显示的字体使用自定义字体有讲到怎样指定控件显示指定字体,怎样整个软件显示指定字体,怎样WebView加载指定字体,但是还留下一个怎样修改整个系统的默 ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- android系统一直显示通知栏_Android通知栏详解
华为P9上的通知栏截图 系统默认的通知风格 可以看到,Android通知栏默认是标题显示一行,内容显示一行,对于一行显示不完的,用省略号代替. private void showNotificatio ...
- Android异种机型系统适配:application定义的app名字和安装到手机后桌面显示app名字不一致
Android异种机型系统适配:application定义的app名字和安装到手机后桌面显示app名字不一致 这种情况在个别国内稀奇古怪定制化的Android机型上会出现.正常情况下,Android的 ...
- Android监听系统输入法键盘弹出显示与隐藏事件
Android监听系统输入法键盘弹出显示与隐藏事件 有时候需要监听Android系统输入法的弹出显示事件,比如:微信聊天时,不管你当前在聊天中的什么位置(上滑查看消息历史),每当你点击输入框时,都会自 ...
最新文章
- 《企业云桌面实施》-小技巧-04-VMWare Workstation-虚拟机强行关机开机
- 框架有几层_如何设计一个自动化框架
- oracle数据库转sqlite,Sqlite导入Oracle软件(SqliteToOracle)
- 詹金斯搭建_詹金斯的Maven报告
- 使用IDEA的Spring Initializr创建SpringBoot工程
- 站在面试官角度,看求职与内卷
- Golang map的底层实现
- 永城职业学院计算机专业分类,计算机专业师资队伍
- linux获取主板温度电压_主板供电
- 转: 从0到1的电商架构应该怎么做?
- UiPath手把手中文教程PDF
- 【论文笔记】Exploring Self-attention for Image Recognition
- postman 测试上传图片
- 计算机与代数---如何计算log---方法推理[1]
- 白纸不够白,签名照片还需要ps去除背景?Python大法半完美解决电子签名背景问题(20行代码去除签名背景)
- 【InSAR 笔记2】哨兵一号精轨数据批量下载【修改0704】
- Linux Windows 的Tensorflow 配置: Nvidia 老显卡运算能力低于3.0
- 桂电计算机系入学怎么分班,桂电研究生-()学期课程总表.doc
- Linux之scp命令的介绍以及命令行输入密码参数执行方法和常见问题解决
- 微信小程序太阳落日效果
热门文章
- nonlocal的使用详解
- 国内常用dns服务器
- 数据库视频sql server概述
- 【Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 )
- Leetcode Nim 游戏
- rsync备份同步(包含群晖NAS与开源同步)
- linux ora 00911,ORA-00911: 无效字符
- python pprint 文件,使用pprint模块格式化数据
- lrz插件压缩系数quality的尝试
- LRZ图片压缩模块的TypeScript定义文件