为什么安卓系统上国内那么多主流软件还是carlife不支持安卓7.0沉浸式

Android三句代码使用沉浸式状态栏
用过android手机的人都知道android使用app的时候屏幕上方的状态栏都是黑色的,就算不是黑色的都与正在打开的app颜色不同。有一种灰常不搭调的感觉。~
今天无意中看了一下关于沉浸式状态栏的资料~~作为强迫症重度患者怎能错过?
下面就开始使用沉浸式状态栏之旅:
代码未上图先行:
非沉浸式:
嗯~虽然第二张图比较模糊,但是也可以想象第一张比较好看(~ ̄▽ ̄)~。
那么接下来要说的就是如何实现第一张图的那样的效果:
首先要说明的是以下方法只适合android4.4或以上的
android4.4也就是api19~所以我们在res文件夹下新建一个values-v19,然后再新建一个style.xml文件。
在style上写以下代码:
指定style为noactionbar而且半透明
然后运行程序可以看到,状态栏与app顶部颜色是一致的,但是如果布局文件的顶部写有其它内容的话会发现布局文件上的内容会与状态栏上的内容重合~~这肯定是不允许的。
有没有方法解决呢?
在使用了沉浸式状态栏的布局文件上写上以下两句话:
然后在要使用沉浸式状态栏的布局文件上写上两句代码:
android:clipToPadding=&true&
android:fitsSystemWindows=&true&
就可以解决这个问题了~
但是在某些情况下会发现写上这两句代码之后,状态栏颜色会是白色或者其它颜色~这是因为写上这两句代码的地方的颜色是与状态栏颜色是一样的。
也就是说如果有一个LinearLayout的背景色是红色,那么使用了沉浸式状态栏的情况下,在这个linearLayout写上以上两句代码之后状态栏也会变成红色。
可以看到实际上就三句代码~自动沉浸式状态栏汉化版 Flat Style Colored Bars v1.0.7
版本:1.0.7.7 &
软件语言:简体中文
更新时间:
软件大小:775M
下载次数:84958
自动沉浸式状态栏汉化版 Flat Style Colored Bars 总体的使用感觉比较好,自适应程度高。
自动沉浸式状态栏汉化版 Flat Style Colored Bars v1.0.7截图
自动沉浸式状态栏汉化版 Flat Style Colored Bars v1.0.7介绍
Flat Style Colored Bars是一款基于xposed的通知栏美化工具,可以实现根据app颜色实现自适应沉浸式通知栏。
可以选择在屏幕左上角随时调整颜色,状态栏的颜色也可以定义与哪个位置颜色一致。
Flat Style Colored Bars总体的使用感觉比较好,自适应程度高。
在悬浮的颜色设置按钮中,S 代表顶部状态栏,N 代表底部按键栏,R 代表重置。点击 S 可以设置在某个应用中显示的状态栏颜色,每次进入时就会显示该颜色。有没有很屌的赶脚!
自动沉浸式状态栏汉化版 Flat Style Colored Bars v1.0.7 更新日志:
— 修复通知图标忽略列表
— 修复通知图标着色
— 修复应用商店着色
— 添加着色近期任务的头/ /棒棒糖
自动沉浸式状态栏汉化版 Flat Style Colored Bars v1.0.7下载地址
高速下载器
安卓版下载
自动沉浸式状态栏汉化版 Flat Style Colored Bars v1.0.7教程
应用名称:系统工具
含有不良插件
无法安装或启动
深圳市艾秀信息技术有限公司
All Rights Reserved
&粤网文[号 &安卓android类似iOS系统沉浸式状态栏
找了好几天,更多人推荐的变色状态栏或重力工具箱似乎对小米等手机支持比较好,但对三星手机支持不好。而且特别是俗称变色龙过于繁琐,比如像淘宝客户端,首页橘黄色,内部列表白色,调起颜色让人抓狂。特别想找一个智能自动识别的,果然还是有这样的达人,不过隐藏的够深的,不仅可以自动调整状态栏颜色,还能自带取色工具栏,方便后期调整。前提当然是ROOT!!!
必须先ROOT,没有ROOT一切免谈
1.准备工作:安装xposed工具-安装Flat-Style-Colored-Bars-0.20汉化版-激活模块-安装更新重启手机即可
2.如果你连状态栏都不想要,那么隐藏,你还得装一个模块app
settings,同样方法激活,然后按以下图操作,进入软件你就能完全沉浸了,不过我个人觉得还是别隐藏的好,方便看时间嘛
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Android 系统状态栏沉浸式/透明化完整解决方案 - 简书
Android 系统状态栏沉浸式/透明化完整解决方案
网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来的相对靠谱的一套解决方案.如果是android大牛可以忽略本文,怕让您贱笑.只面向小白,帮助小白减少摸索的时间.
网上有很多争论:
你这状态栏是变色龙状态栏,不是沉浸式的这应该是沉浸式的状态栏吧,系统栏与actionbar颜色设为一致
我只想说去你妹的,老子只要自己的app的状态栏能和主题颜色一致就行了,定义那么多术语,让我等小白情以何堪?吐槽归吐槽,但还是不得不去试着理解下这些术语怎么来的,引用的一段话:
沉浸式全屏模式隐藏status bar(状态栏)使屏幕全屏,让Activity接收所有的(整个屏幕的)触摸事件。
透明化系统状态栏透明化系统状态栏,使得布局侵入系统栏的后面,必须启用属性来调整布局才不至于被系统栏覆盖。
因此,我就这样理解了:
沉浸式不就是隐藏状态栏嘛,状态栏不见了?这不就是app全屏模式嘛?wtf?
而透明式式状态栏就是让app的内容布局可以扩展到系统状态栏?这里有个问题就是为什么能在系统状态栏还显示的情况下,将内容布局扩展到系统状态栏?恩,这应该很好理解,就是Z坐标系的作用了,系统状态栏是覆盖在内容布局上面的,并且是透明的。
貌似这里所谓透明化系统状态栏才是本菜想要的,不管了,现在开始一一试验,至于这概念理解的对不对,管他呢?那到底应该叫什么,那我就叫自适应状态栏,行不行?
让系统状态栏颜色随app主题颜色变化而变化这一设计,毫无疑问,也是向ios学习的:从android4.4开始引进的,并且在5.0进行了改进。因此,也只能将这一特性应用在android4.4以上的手机,无法做到全部适配。记得(貌似是)曾说过:
作为一个android程序员,还能有什么比做出ios风格的app更感到悲哀的呢?哎...
两种情况下的解决方案:
使用toolbar这种方案相对简单,个人喜欢这种方案,本菜虽菜,但喜欢紧跟潮流。toolbar太好用了,
不使用toolbar
1. 使用toolbar的解决方案
这个方法参照了这里,
其基本原理就是:theme里添加style: &item name="android:windowTranslucentStatus"& true &/item&后,包含toolbar的内容布局就可以扩展至系统状态栏,状态栏会覆盖在toolbar上,如果此时使用android:fitsSystemWindows="true",就可以调整内容布局(估计也是在根布局上加padding)恢复到原来位置.但是,上面的解决方案确是给toolbar加上一个padding-top="25dp",这样就可以做到系统状态栏的颜色和toolbar的颜色保持一致.具体方案可以参照上面的薄荷app的方案链接.
简述下步骤(只是简述,有疑问请参照上面薄荷app的链接即可):
引入v7包,并在布局里添加toolbarcompile ‘com.android.support:appcompat-v7:22.2.1’
在代码中设置透明化:if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
local LayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
当然也可以在theme的样式文件里添加style:&item name="android:windowTranslucentStatus"&true&/item&,效果相同,但是大神们都说样式文件里设置在某些型号里不生效.ok,大家都在代码里设置就好了
给toolbar加上padding-top,toolbar代码如下&android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/toolbar_padding_top"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="#30469b"&
&TextView android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="@string/app_name"/&
&/android.support.v7.widget.Toolbar&
4.其中android:paddingTop="@dimen/toolbar_padding_top"要在values中的styles文件里设为0dp,在values-v19的styles里设为25dp,原因不多说了
这样就可以达成了我们的目标,如果只是这样也就罢了,按照上面做就可以了,关键是本菜是喜欢紧跟潮流的,使用MD风格的DrawerLayout+NavigationView时,在android4.4的手机下,就会变这样了:
android4.4上的效果
很明显,drawerlayout并没用被扩展至系统状态栏,但在android5.0以上效果还是可以的,这让我很奇怪,只能归咎于5.0的优化了
android5.0上的效果
经过各种折腾终于想起来,可以把fitsSystemWindows的特性用在drawerlayout上试试,最后发现居然可以,最终将设置windowTranslucentStatus的代码调整如下:
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
local LayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
if(Build.VERSION.SDK_INT & Build.VERSION_CODES.LOLLIPOP){
//将侧边栏顶部延伸至status bar
mDrawerLayout.setFitsSystemWindows(true);
//将主页面顶部延伸至虽默认为false,但经测试,DrawerLayout需显示设置
mDrawerLayout.setClipToPadding(false);
最终android4.4上也可以显示正常:
android4.4上修正后的效果
2. 不使用toolbar的解决方案
不使用toolbar时,而是actionbar时,因为actionbar不好定制,所以无法采用上面那个方法,只能采用其它方法,这里的方案主要参考这里:这篇简书看的本菜晕乎乎的,仔细看下来,其实都是基于一个原理:不管有没有actionbar,内容布局的背景颜色一律设为主题颜色,然后有actionbar的话,就将actionbar与内容布局的背景颜色同时设为主题颜色,然后,每个内容布局的根布局都要设上fitsSystemWindows="true"进行调整,感觉超麻烦有没有?
不说多少,简述步骤:
在代码中设置透明化,步骤同上
设置内容布局的根布局的背景颜色为主题颜色,同时设置fitsSystemWindows="true"&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:fitsSystemWindows="true"
android:orientation="vertical"&
在内容布局的下面再设置一层内容布局,设背景颜色为白色(或其它颜色):&LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/c_light_white"
android:gravity="center"
android:orientation="vertical"&
至此,这种方案也完成了,看下效果:
android4.4上的效果
可以看出,这种方案一般情况下,还是可行的,但是有三个问题:
如果用上drawerlayout+navigationview,actionbar就会覆盖在侧边栏上(如上图),暂时未找到解决方案,但是我想说你都用drawerlayout+navigationview了,为何不用toolbar,因此这个问题应该不是问题,况且还可以使用其它的侧边栏实现方式,各位道友可以试试
这种方案在每个根布局上都要设fitsSystemWindows="true"进行调整,当然也有优化方案,可仍然觉得很麻烦,
每个根布局里都要多加的一层布局来覆盖根布局的背景主题颜色
因此,这种方案的确不是上上之选.
本文主要在考虑使用标题栏(actionbar/toolbar)的情况下,做出的方案,当然你也可以自定义标题栏,或者不使用标题栏;其实都可以基于上面一样的道理:
在状态栏透明化的前提下,调整顶部view的padding-top,来达到状态栏自适应一体化的目的
网上还有其它蛮多的解决方案,如:
使用开源库,这个库也挺不错的,可以动态改变系统状态栏颜色,但是作者已经2年没有维护了,现在技术更新迭代这么快,鬼知道这个库会不会出现什么问题,因此可以放弃使用了
如果不怕麻烦,还可以new一个高度和状态栏一样高的view,插入到内容布局的上面,但是,想想都觉得麻烦,我也懒得试了
关于本文中的样例代码已上传至,欢迎star,有问题也欢迎各位撸友,道友们来指正.为什么安卓系统上国内那么多主流软件还是不支持沉浸式状态栏? - 知乎2被浏览443分享邀请回答12 条评论分享收藏感谢收起

我要回帖

更多关于 12306不支持安卓7.0 的文章

 

随机推荐