近期研究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实战:沉浸式/适配状态栏的更多相关文章

  1. Android一体式(沉浸式)状态栏的实现

    注:公司开发任务适配是在4.4版本之上进行,所以此适配仅在4.4之上进行测试. 1.主要使用了第三方的开源项目SystemBarTint,github:https://github.com/jgilf ...

  2. Android 4.4 沉浸式透明状态栏与导航栏

    Android 系统自4.2 開始 UI 上就没多大改变,4.4 也仅仅是添加了透明状态栏与导航栏的功能,如图 那么如今我就来给大家解说下怎样使用这个新特性,让你的 app 尾随潮流,当然假设你不在乎 ...

  3. Android 4.4 沉浸式透明状态栏

    原文链接:http://www.bkjia.com/Androidjc/913061.html 第一种方法 这里写代码片第一种方法,在代码设置: if(VERSION.SDK_INT >= VE ...

  4. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  5. Android中的沉浸式状态栏效果

    无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定 ...

  6. Android 4.4沉浸式状态栏的实现

    要实现Android 4.4上面的沉浸式状态栏要用到开源项目SystemBarTint(https://github.com/hexiaochun/SystemBarTint) public clas ...

  7. delphi 10.3.1 android沉浸式透明状态栏

    从10.2升级上来, 之前的沉浸状态栏在android手机上不透明了, 添加二个发布文件,remote path分别设为 res\values-v21和 res\values-v19 style.xm ...

  8. Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式

    Android换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案. 之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因: 1.换肤功能的实现过程较简单.容易理解: 2.能轻松适配 ...

  9. Android Studio 关于沉浸式状态栏

    values-v19/style.xml <style name="AppTheme" parent="Theme.AppCompat.Light.NoAction ...

随机推荐

  1. 八款优秀Linux浏览器推荐

    #1.Firefox:互联网革命的新典范   众所周知,Firefox最大的优点就是拥有数以千计的插件,能够使得用户个性化自己的浏览器.与此同时,Firefox还是一款时尚.快捷.创新.高效的浏览器, ...

  2. sublime text 的 Ctrl + P「模糊搜索算法」

    Reverse Engineering Sublime Text's Fuzzy Match 这是我能 google 到的最早的一篇关于 Sublime Text 的模糊搜索的文章. https:// ...

  3. 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下工程链接文件配置管理与自动生成机制. 痞子衡在 2018 年初写过一个专题 <嵌入式开发文件系列&g ...

  4. VS dll 引用依赖

    在公司实习过程中,经常遇到三个问题: 开发环境 dll引用依赖 dll版本控制 一般公司都会配置开发/测试/Lab/线上四个环境,之后不管时开发什么项目,都与环境分不开边.这个和dll版本控制暂且记下 ...

  5. P1721 [NOI2016] 国王饮水记 题解

    蒟蒻的第一篇黑题题解,求过. 题目链接 题意描述 这道题用简洁的话来说,就是: 给你 \(n\) 个数字,你可以让取其中任意若干个数字,每次操作,都会使所有取的数字变为取的数字的平均数,并且你最多只能 ...

  6. k8s garbage collector分析(1)-启动分析

    k8s garbage collector分析(1)-启动分析 garbage collector介绍 Kubernetes garbage collector即垃圾收集器,存在于kube-contr ...

  7. Identity角色管理三(创建角色)

    首先创建视图模型 using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace Shop.Vi ...

  8. python模块--calendar

    方法 返回值类型 说明 .calendar(theyear, w=2, l=1, c=6, m=3) str 返回指定年份的年历, w: 每个日期的宽度, l: 每一行的纵向宽度, c: 月与月之间的 ...

  9. Java基础之代理模式

    代理模式是常见的设计模式之一,意图在为指定对象提供一种代理以控制对这个对象的访问.Java中的代理分为动态代理和静态代理,动态代理在Java中的应用比较广泛,比如Spring的AOP实现.远程RPC调 ...

  10. RocketMQ详解(二)安装使用详解

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...