Android QMUI实战:沉浸式/适配状态栏

近期研究QMUI换肤的实现,顺便分析了下QMUI的沉浸式。
网上已有很多关于QMUI实现页面沉浸式的文章,简而言之:复杂了。
本期,我们仅通过几行代码,即可完美实现页面沉浸式效果,并轻松匹配换肤的色彩。
1、工程
为了节省时间,我们就不再单独新建工程了。直接基于上期QMUI换肤的工程代码,进行开发。
demo源码下载在该文章中:《Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式》
https://www.cnblogs.com/qixingchao/p/15417834.html
注意事项:在工程的gradle中有依赖QMUI,如果想以自己的工程进行沉浸式开发实验,请先在gradle中配置QMUI依赖:
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
2、实现页面沉浸式的代码
仅1行即可:QMUIStatusBarHelper.translucent(this);

分析源码,不难看出,QMUI已对不同版本的设备进行了适配,沉浸式配置管理主要包括:
1、FLAG_TRANSLUCENT_STATUS:状态栏透明,并且变为全屏模式
2、FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS:Window负责系统bar的background 绘制,绘制透明背景的系统bar(状态栏和导航栏),然后用getStatusBarColor()和getNavigationBarColor()的颜色填充相应的区域
3、setStatusBarColor(Color.TRANSPARENT):设置状态栏颜色透明(直接透视,并可见到父容器的颜色)
)
设置后的效果图:

3、预留出状态栏的空间:
上图中,状态栏与页面的Topbar重合了,我们需要为页面预留出状态栏的空间。
实现方式很简单,也是一行代码:android:fitsSystemWindows="true"

设置后的效果图:

3、设置状态栏与页面Topbar一样的颜色:
上图中,状态栏的空间虽然预留出来了,但是状态栏颜色与页面Topbar不一致,不美观。
我们可以调整下布局文件,将父容器背景色调整为与Topbar一样的色彩即可。
这样调整后,父容器颜色变成深色了,但是常规设计中,页面背景色都是浅色,那么我们可以再为页面内容套一层,并设置浅色,如自定义的:?attr/colorPrimary

设置后的效果图:

4、匹配换肤的色彩
我们只需要在布局文件中设置颜色时,使用QMUI的Skin属性即可,例如:app:qmui_skin_background。
5、总结
至此,QMUI实现页面沉浸式效果演示结束。
我们不需要关心各种Android版本、各种机型的适配,只需要简单的调用即可,代码也简洁易维护。
了解了QMUI的沉浸式过程,我们也可实现更复杂的沉浸式效果,例如容器背景是图片、是渐变色等等,
因为布局文件完全由我们自主管控,想怎么写就怎么写,吼吼!!!
demo源码:
链接: https://pan.baidu.com/s/1NAuVowHuXMBeQNWX82mZkQ
提取码: b5x3
Android QMUI实战:沉浸式/适配状态栏的更多相关文章
- Android一体式(沉浸式)状态栏的实现
注:公司开发任务适配是在4.4版本之上进行,所以此适配仅在4.4之上进行测试. 1.主要使用了第三方的开源项目SystemBarTint,github:https://github.com/jgilf ...
- Android 4.4 沉浸式透明状态栏与导航栏
Android 系统自4.2 開始 UI 上就没多大改变,4.4 也仅仅是添加了透明状态栏与导航栏的功能,如图 那么如今我就来给大家解说下怎样使用这个新特性,让你的 app 尾随潮流,当然假设你不在乎 ...
- Android 4.4 沉浸式透明状态栏
原文链接:http://www.bkjia.com/Androidjc/913061.html 第一种方法 这里写代码片第一种方法,在代码设置: if(VERSION.SDK_INT >= VE ...
- Android UI体验之全屏沉浸式透明状态栏效果
前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...
- Android中的沉浸式状态栏效果
无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定 ...
- Android 4.4沉浸式状态栏的实现
要实现Android 4.4上面的沉浸式状态栏要用到开源项目SystemBarTint(https://github.com/hexiaochun/SystemBarTint) public clas ...
- delphi 10.3.1 android沉浸式透明状态栏
从10.2升级上来, 之前的沉浸状态栏在android手机上不透明了, 添加二个发布文件,remote path分别设为 res\values-v21和 res\values-v19 style.xm ...
- Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式
Android换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案. 之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因: 1.换肤功能的实现过程较简单.容易理解: 2.能轻松适配 ...
- Android Studio 关于沉浸式状态栏
values-v19/style.xml <style name="AppTheme" parent="Theme.AppCompat.Light.NoAction ...
随机推荐
- 修改anaconda3 jupyter notebook 默认路径
本文参考了: https://blog.csdn.net/u014552678/article/details/62046638 https://blog.csdn.net/qigenhuochai/ ...
- Linux常用命令(一)之文件处理命令
分时的多用户.多任务的操作系统 多数的网络协议的支持(unix和tcp/ip协议是同时发展起来的),方便的远程管理(可以通过图形.命令行) 强大的内存管理和文件管理系统 大量的可用软件和免费软件(游戏 ...
- Python中的socket编程
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序 ...
- thymeleaf+layui加载页面渲染时报错
将freemaker替换成thymeleaf时出现以下问题: org.thymeleaf.exceptions.TemplateProcessingException: Could not parse ...
- Gitlab - 安装的社区版 Gitlab-ce,解决访问网页报502-Whoops, GitLab is taking too much time to respond的问题
问题背景 在自己虚拟机(centos7)上装了 Gitlab-ce,就是社区版的 Gitlab,版本是 13.0+ 问题描述 浏览器访问 Gitlab 网站,报 502 问题翻译 502-Whoops ...
- NLP与深度学习(四)Transformer模型
1. Transformer模型 在Attention机制被提出后的第3年,2017年又有一篇影响力巨大的论文由Google提出,它就是著名的Attention Is All You Need[1]. ...
- Cobar源码分析之AST
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 背景 Cobar Cobar是阿里开源的数据库中间件,关于它的介绍这里不再赘述,可以参考之前的 ...
- Spring5(五)——AOP
一.AOP 1.介绍 AOP(Aspect Oriented Programming),面向切面编程.它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共 ...
- PHP的加密伪随机数生成器的使用
今天我们来介绍的是 PHP 中的加密伪随机数生成器(CSPRNG 扩展).随机数的生成其实非常简单,使用 rand() 或者 mt_rand() 函数就可以了,但是我们今天说的这个则是使用了更复杂算法 ...
- PHP设计模式之访问者模式
访问者,就像我们去别人家访问,或者别人来我们家看望我们一样.我们每个人都像是一个实体,而来访的人都会一一的和我们打招呼.毕竟,我们中华民族是非常讲究礼数和好客的民族.访问者是GoF23个设计模式中最复 ...