跟女孩子聊天话题家聊天时老发嗯是不是嫌我烦啊

48738人阅读
Android疑难解析(34)
转载请注明出处:
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。
记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。
其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统提供的状态栏操作就是沉浸式的,并且还起了一个沉浸式状态栏的名字。
比如之前就有一个QQ群友问过我,像饿了么这样的沉浸式状态栏效果该如何实现?
这个效果其实就是让背景图片可以利用系统状态栏的空间,从而能够让背景图和状态栏融为一体。
本篇文章当中我会教大家如何实现这样的效果,但这个真的不叫沉浸式状态栏。因此,这算是一篇技术+普及的文章吧,讲技术的同时也纠正一下大家之前错误的叫法。
什么是沉浸式?
先来分析一下叫错的原因吧,之所以很多人会叫错,是因为根本就不了解沉浸式是什么意思,然后就人云亦云跟着叫了。那么沉浸式到底是什么意思呢?
根据百度百科上的定义,沉浸式就是要给用户提供完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉。
比如说现在大热的VR就是主打的沉浸式体验。
那么对应到Android操作系统上面,怎样才算是沉浸式体验呢?这个可能在大多数情况下都是用不到的,不过在玩游戏或者看电影的时候就非常重要了。因为游戏或者影视类的应用都希望能让用户完全沉浸在其中,享受它们提供的娱乐内容,但如果这个时候在屏幕的上方还显示一个系统状态栏的话,可能就会让用户分分钟产生跳戏的感觉。
那么我们来看一下比较好的游戏都是怎么实现的,比如说海岛奇兵:
海岛奇兵的这种模式就是典型的沉浸式模式,它的整个屏幕中显示都是游戏的内容,没有状态栏也没有导航栏,用户玩游戏的时候就可以完全沉浸在游戏当中,而不会被一些系统的界面元素所打扰。
然后我们再来看一下爱奇艺的实现:
同样也是类似的,爱奇艺将整个屏幕作为影视的展示区,用户在看电影的时候眼中就只会有电影的内容,这样就不会被其他一些无关的东西所分心。
这才是沉浸式模式的真正含义,而所谓的什么沉浸式状态栏纯粹就是在瞎叫,完全都没搞懂“沉浸式” 这三个字是什么意思。
不过虽然听上去好像是很高大上的沉浸式效果,实际看上去貌似就是将内容全屏化了而已嘛。没错,Android沉浸式模式的本质就是全屏化,不过我们今天的内容并不仅限于此,因为还要实现饿了么那样的状态栏效果。那么下面我们就开始来一步步学习吧。
隐藏状态栏
一个Android应用程序的界面上其实是有很多系统元素的,观察下图:
可以看到,有状态栏、ActionBar、导航栏等。而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分。
比如说我现在新建了一个空项目,然后修改布局文件中的代码,在里面加入一个ImageView,如下所示:
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"&
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bg"
android:scaleType="centerCrop" /&
这里将ImageView的宽和高都设置成match_parent,让图片充满屏幕。现在运行一下程序,效果如下图所示。
如果你将图片理解成游戏或者电影界面的话,那这个体验离沉浸式就差得太远了,至少状态栏和ActionBar得要隐藏起来了吧?没关系,我们一步步进行优化,并且在优化中学习。
隐藏状态栏和ActionBar的方式在4.1系统之上和4.1系统之下还是不一样的,这里我就不准备考虑4.1系统之下的兼容性了,因为过于老的系统根本就没有提供沉浸式体验的支持。
修改MainActivity中的代码,如下所示:
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
这里先调用getWindow().getDecorView()方法获取到了当前界面的DecorView,然后调用它的setSystemUiVisibility()方法来设置系统UI元素的可见性。其中,SYSTEM_UI_FLAG_FULLSCREEN表示全屏的意思,也就是会将状态栏隐藏。另外,根据Android的设计建议,ActionBar是不应该独立于状态栏而单独显示的,因此状态栏如果隐藏了,我们同时也需要调用ActionBar的hide()方法将ActionBar也进行隐藏。
现在重新运行一下程序,效果如下图所示。
这样看上去就有点沉浸式效果的模样了。
虽说这才是正统的沉浸式含义,但有些朋友可能想实现的就是饿了么那样的状态栏效果,而不是直接把整个系统状态栏给隐藏掉,那么又该如何实现呢?
其实也很简单,只需要借助另外一种UI Flag就可以了,如下所示:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT &= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
首先需要注意,饿了么这样的效果是只有5.0及以上系统才支持,因此这里先进行了一层if判断,只有系统版本大于或等于5.0的时候才会执行下面的代码。
接下来我们使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE,注意两个Flag必须要结合在一起使用,表示会让应用的主体内容占用系统状态栏的空间,最后再调用Window的setStatusBarColor()方法将状态栏设置成透明色就可以了。
现在重新运行一下代码,效果如下图所示。
可以看到,类似于饿了么的状态栏效果就成功实现了。
再声明一次,这种效果不叫沉浸式状态栏,也完全没有沉浸式状态栏这种说法,我们估且可以把它叫做透明状态栏效果吧。
隐藏导航栏
现在我们已经成功实现隐藏状态栏的效果了,不过屏幕下方的导航栏还比较刺眼,接下来我们就学习一下如何将导航栏也进行隐藏。
其实实现的原理都是一样的,隐藏导航栏也就是使用了不同的UI Flag而已,修改MainActivity中的代码,如下所示:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
这里我们同时使用了SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN,这样就可以将状态栏和导航栏同时隐藏了。现在重新运行一下程序,效果如图所示。
这次看上去好像终于是完全全屏化了,但其实上这离真正的沉浸式模式还差得比较远,因为在这种模式下,我们触摸屏幕的任意位置都会退出全屏。
这显然不是我们想要的效果,因此这种模式的使用场景比较有限。
除了隐藏导航栏之外,我们同样也可以实现和刚才透明状态栏类似的效果,制作一个透明导航栏:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT &= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
getWindow().setStatusBarColor(Color.TRANSPARENT);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
这里使用了SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION,表示会让应用的主体内容占用系统导航栏的空间,然后又调用了setNavigationBarColor()方法将导航栏设置成透明色。现在重新运行一下程序,效果如下图所示。
真正的沉浸式模式
虽说沉浸式导航栏这个东西是被很多人误叫的一种称呼,但沉浸式模式的确是存在的。那么我们如何才能实现像海岛奇兵以及爱奇艺那样的沉浸式模式呢?
首先你应该确定自己是否真的需要这个功能,因为除了像游戏或者视频软件这类特殊的应用,大多数的应用程序都是用不到沉浸式模式的。
当你确定要使用沉浸式模式,那么只需要重写Activity的onWindowFocusChanged()方法,然后加入如下逻辑即可:
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT &= 19) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
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
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
沉浸式模式的UI Flag就这些,也没什么好解释的,如果你需要实现沉浸式模式,直接将上面的代码复制过去就行了。需要注意的是,只有在Android 4.4及以上系统才支持沉浸式模式,因此这里也是加入了if判断。
另外,为了让我们的界面看上去更像是游戏,这里我将MainActivity设置成了横屏模式:
android:name=".MainActivity"
android:screenOrientation="landscape"&
这样我们就实现类似于海岛奇兵和爱奇艺的沉浸式模式效果了,如下图所示。
可以看到,界面默认情况下是全屏的,状态栏和导航栏都不会显示。而当我们需要用到状态栏或导航栏时,只需要在屏幕顶部向下拉,或者在屏幕右侧向左拉,状态栏和导航栏就会显示出来,此时界面上任何元素的显示或大小都不会受影响。过一段时间后如果没有任何操作,状态栏和导航栏又会自动隐藏起来,重新回到全屏状态。
这就是最标准的沉浸式模式。
关注我的技术公众号,每天都有优质技术文章推送。关注我的娱乐公众号,工作、学习累了的时候放松一下自己。
微信扫一扫下方二维码即可关注:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5373091次
积分:35829
积分:35829
排名:第96名
原创:92篇
评论:11698条
《第二行代码》已出版新书基于Android 7.0系统全面升级全书使用Android Studio 2.2进行开发更加入了许多振奋人心的新技术
网上购买:
关注我的技术公众号,每天都有优质技术文章推送。
关注我的娱乐公众号,工作、学习累了的时候放松一下自己。
微信扫一扫上方二维码即可关注
感兴趣的朋友可以加入我的QQ群,一起讨论学习,共同进步。
阅读:371248
(1)(1)(1)(1)(1)(2)(1)(1)(2)(1)(1)(2)(1)(1)(1)(1)(1)(1)(1)(2)(2)(3)(1)(2)(5)(3)(3)(2)(1)(3)(1)(2)(5)(4)(4)(4)(4)(5)(5)(5)(6)(4)看来论坛里很多人搞不清楚沉浸式和透明状态栏的区别
请大家搞清楚安卓里沉浸式状态栏和透明状态栏的区别好嘛?uc最新公测版是透明状态栏不是沉浸式
该帖共收到 16 条回复!
发表于 日 00:02
来自HTC 802d B
miui6是沉浸式
发表于 日 00:06
来自HTC 802d B
所以uc没有用什么伪沉浸式的说法
发表于 日 00:14
来自HTC 802d B
好吧,我错了miui6那也不是沉浸
发表于 日 00:17
来自HTC 802d B
我发这个贴只是不想再看到有人说uc用的是伪沉浸状态栏而已。
发表于 日 00:48
UC这个就是的,魅族的flyme4.0就是这样的
发表于 日 02:14
来自 C6802 Build
提示: 作者被禁止或删除 内容自动屏蔽
发表于 日 10:57
状态栏变色≠沉浸式状态栏,所谓现在说的沉浸式状态栏是Android 4.4后加入的新api接口,需要软件商在制作软件的时候使用该接口,方可实现状态栏变色。而现在的应用比较杂乱,厂商做法也不规范,导致很好的一个接口不能被完美的使用。对此我们特制作了fantastic bar(奇幻状态栏),奇幻状态栏是强行根据程序改变状态栏颜色,会根据颜色色值差异自动改变图标及文字颜色,同时在支持沉浸式状态栏的应用中优先使用沉浸式状态栏。真正做到了完美统一风格的Android 4.4。
发表于 日 11:13
多看阅读那种是沉浸吗?
发表于 日 11:20
来自Nexus 5
好得闲 发表于 日 10:57
状态栏变色≠沉浸式状态栏,所谓现在说的沉浸式状态栏是Android 4.4后加入的新api接口,需要软件商在制作软 ...
fiui的简介啊
发表于 日 11:25
看看& && && && &&&
发表于 日 11:37
来自华为G750
snoopy0314 发表于 日 02:14
习惯性看到一大批人说什么沉浸式,都没搞懂什么是沉浸式就在这里大说特说,已无力回答了,现在这种透明通知 ...
不不不、只有安卓4.4之后的系统可以变色(或者叫透明)、我想说的是安卓4.4官方介绍并没有介绍变色这一点、那么开发的一个功能属于官方公布的哪一类?除了沉浸还能归到别的吗?4.4是虽然也是4.*但却是一个大版本的更新、官方不可能每个功能细节都介绍到、所以是不是沉浸只有软件开发者(或能看懂系统源码)才有发言权、不能因为没提到就认为不是沉浸
发表于 日 11:45
来自华为G750
是用的沉浸接口、不用怀疑、国内软件目前都是屏蔽了自动全屏、安卓原版的沉浸把状态栏拉出来就是现在我们见到的样子、我们只是屏蔽了状态栏自动收起
发表于 日 13:08
沉浸不好吗?出来了又吐槽 不出来的时候 又叫支持 这是闹哪样
发表于 日 13:23
来自不明物体
楼主说对了。魅族怎么设置沉浸式状态栏
魅族沉浸式状态栏设置方法
时间: 10:06:04来源:作者:HH(0)
魅族是一款很受大众欢迎的手机。我们在使用魅族的时候很多的朋友想要将魅族的状态栏设置为沉浸式。这样会让手机显示的更加美观,下面小编就为大家分享一下魅族怎么设置沉浸式状态栏注意事项:手机必须ROOT才能做接下来的步骤。系统必须是Flyme4.0以上的1、需要下载下面这两个App2、打开后你会发现魅族工具箱是红色的,这表明是不能设置沉浸栏。然后你打开Xposed,然后点击激活应用模块,勾选魅族工具箱,然后点击激活。3、点击激活后会出现安装更新,直接点击安装更新。它会提示你重启你直接重启就行了。重启后你在打开魅族工具箱你会发现变蓝色了,这说明你可以设置沉浸式状态栏了。4、打开魅族工具箱打开状态栏,前三个都打开就行了,这样沉浸式状态栏就OK啦。看看效果吧!何为沉浸模式,沉浸式顶栏,变色龙状态栏?
沉浸模式是Android 4.4的特性&br&&img src=&/7eca52f179cb7f9ed9cf_b.jpg& data-rawwidth=&500& data-rawheight=&317& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/7eca52f179cb7f9ed9cf_r.jpg&&当启用该模式,应用程序的界面将占据整个屏幕,系统自动将隐藏系统的状态栏和&a href=&///?target=http%3A///GPS/00000_1.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&导航&i class=&icon-external&&&/i&&/a&栏,让应用程序内容可以在最大显示范围呈现,增加大屏体验,而当需要查看通知的时候只需要从顶部向下滑动就能呼出通知栏。&br&这是谷歌对于自己的沉浸模式的解释,说白了就是全屏扩展呗。&br&但是总有人说下面这样就是沉浸式顶栏,我总觉得他们说的不对,那不就是状态栏的颜色自适应么,叫彩色状态栏,变色龙状态栏都行,沉浸不是这个意思啊。&br&&img src=&/f34ceb933e01a602f9ba5ead650efa6c_b.jpg& data-rawwidth=&1080& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/f34ceb933e01a602f9ba5ead650efa6c_r.jpg&&&img src=&/9bbb89a8b22b26e81bec_b.jpg& data-rawwidth=&1080& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/9bbb89a8b22b26e81bec_r.jpg&&&img src=&/3c93a3f74e5fdafbd78f86e_b.jpg& data-rawwidth=&1080& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/3c93a3f74e5fdafbd78f86e_r.jpg&&
沉浸模式是Android 4.4的特性当启用该模式,应用程序的界面将占据整个屏幕,系统自动将隐藏系统的状态栏和栏,让应用程序内容可以在最大显示范围呈现,增加大屏体验,而当需要查看通知的时候只需要从顶部向下滑动就能呼出通知栏。这是谷歌对于自己的沉浸模式的解释,说白了就是全屏扩展呗。但是总有人说下面这样就是沉浸式顶栏,我总觉得他们说的不对,那不就是状态栏的颜色自适应么,叫彩色状态栏,变色龙状态栏都行,沉浸不是这个意思啊。…
沉浸模式对应的是 Immersive Mode, 呈现的形式是全屏状态, 隐藏状态栏与导航栏. 关于沉浸式的更多描述参见:
(Android Design).所谓的沉浸式顶栏, 更多是国内对 Translucent Bar 的误传: Translucent Bar, 中文译名: 透明栏. 一般呈现的是状态栏和/或导航栏透明或半透明. 最极端的例子是在 Muzei 这样的应用上: 关于透明栏的更多描述参见:
(Material Design).变色龙状态栏那, 是国内一些用户对变色状态栏的称呼. 来源于某个 Xposed 插件.
沉浸和变色,一个很古老的话题了,因为近期在学习Android,外加我个人对UI体验的偏执,把这部分代码也都学习并测试过,纠正了以往错误的观点,也希望能纠正至今为止依旧很多人错误的观点。。首先,我用中文列出几个概念;“沉浸”(Immersive),“透明”(Translucent),“变色”,“状态栏”(StatusBar),“导航栏”(NavigationBar)。。另外最后还会提到“全屏”之类的。。简单来说,“沉浸”和“透明”都是Android4.4加入的新特性,也就是判断VERSION.SDK必须大于或等于API 19,调用才会生效,这一点4.4和5.0包括6.0在使用方法及具体实现代码上都没有区别(但显示效果略有区别,原因其一是Android4.4存在上下阴影的影响)。。设置“透明”主要有两个方法,在xml主题文件里面设置和在源代码里面调用setFlags()方法(这个方法一直都有,只不过“透明”这个flag是4.4才加入进去的),效果一样,代码也很简单,包括“状态栏”和“导航栏”都可以选择透明化。设置“沉浸”则可以在源代码里面调用setSystemUiVisibility()方法(这个方法也是一直都有,只不过4.4加入了两个新的flag用来获得“沉浸”效果),代码量比设置“透明”略多,但也不过十几行而已。而“变色”在Android上是从来就不存在的一个概念!!只是大家根据app显示效果自己YY出来的一个词。在API 19(Android4.4)里面,Google仅仅提供了“透明”这个方法,但是很多开发者发现,在开发过程中如果使用的是带有深色ActionBar的主题,这时对“状态栏”的透明会带来极其丑陋不协调的显示效果,像这个样子(图片来源网络,黑色的那一栏就是ActionBar):于是大家借鉴iOS7的灵感,可否将“状态栏”颜色设置和ActionBar一样呢?很遗憾,API 19没有提供单独设置“状态栏”颜色的方法(这句话很重要)。。那么问题又来了,我们平时使用的那些在Android4.4上依旧能“变色”的app是怎样实现的呢?那就得感谢程序猿的小聪明了,比如:于是大家借鉴iOS7的灵感,可否将“状态栏”颜色设置和ActionBar一样呢?很遗憾,API 19没有提供单独设置“状态栏”颜色的方法(这句话很重要)。。那么问题又来了,我们平时使用的那些在Android4.4上依旧能“变色”的app是怎样实现的呢?那就得感谢程序猿的小聪明了,比如: “我如果可以把View的最上端设置出一定高度的颜色(或者图案),具体高度只要大于等于“状态栏”高度即可,那么已经“透明”了的“状态栏”自然而然就会变成这个颜色(或者图案),而我只需要从一开始就把那种颜色设置为和ActionBar一样就可以了。”这就好比官方只给了我面粉和肉,程序猿可以想办法做出饺子。。。由于这种变色龙式的显示需求太普遍,我们也不想每次都机械地写同样的这几十行代码,因此有大牛就写了一个开源库,只要用几行代码简单地调用这个库就够了,目前,Github上就有这样一个jar开源库:SystemBarTint,国内很多开发者就可以简单地使用并达到“变色”效果了,当然了,还有其他很多的方法也能达到这个效果(好比你做饺子,我做包子),这就是写代码的灵活。。“变色”讲完了,在Android4.4中,我们看似简单的变色,其实实现起来并没有“透明”那么简单。有些人所说的“彩色状态栏”和“单色状态栏”,在4.4中实现原理都是“透明”!!而不是你们自己理解的一个是“透明”,一个是“变色”。。Google似乎也意识到了这一点,于是在Android5.0(API 21)中,加入了一个新的特性;单独设置“状态栏”颜色!!(即colorPrimaryDark),与此同时,ActionBar升级成了ToolBar,其颜色标签为colorPrimary。。从字面区别Dark上看,Google似乎推荐我们把“状态栏”的颜色设置地比ToolBar更深一点,当然,决定权在程序猿手里,你甚至能设置成两个风马牛不相及的颜色,结果显然会很丑喽,哈哈。另外,有人自造了两个词“沉浸式状态栏”和“变色龙式状态栏”,自以为是地说前者是“状态栏”和ToolBar颜色一模一样,后者则是一深一浅。。纯属无稽之谈。。根本没这两个概念。。那只不过是设置的16进制颜色RGB值一样和不一样的区别而已。。。当然,Google推荐我们把颜色值设置成“一深一浅”,而不是一模一样。。这也是为什么很多Google官方应用在5.0及更高版本的设备上显示效果“两栏分明,一深一浅”,如图:这时候,“变色”的原理变成了单独设置其颜色,比4.4方便很多。。扯了这么多,我概括一下就是:官方只有“沉浸”和“透明”这两个概念,且只支持Android4.4及以上。“变色”是非官方说法,是基于“透明”演化而来,并且从实现原理上看,不论是4.4还是5.0,“变色”这种叫法都很不恰当。。最后,Android5.0引入了单独设置状态栏颜色的方法。。并且,“沉浸”和“变色”,“沉浸”和“透明”根本半毛钱关系都没有。。在官方文档中,“沉浸”和“全屏”是绑定的。。很多人的误传也就来源于这里。。接下来说到“全屏”,于是又来了一个争议点,“全屏”到底是Android4.X哪个版本引入的,有人说4.0,有人说4.1,有人斩钉截铁的说是4.4。官方叫法中,“全屏”(FULLSCREEN)从1.X时代过来一直都有,只不过4.0之前只能隐藏“状态栏”(那是因为4.0之前没有“导航栏”,哈哈哈哈哈哈),4.0开始出现“导航栏”,很多人认为,Google这个时候还没有允许用户隐藏它,直到4.4时代,Google才开放了这个接口,实际不然: Google在4.0时(亦或是4.1)已经可以隐藏“导航栏”(即虚拟按键)进入完全全屏模式了,只不过这种全屏无法实现再次隐藏,如果不小心把“导航栏”滑出来,需要退出该Activity重新进入才能再次全屏。。举例:某云直播app在2014年的某版本没有root权限即可实现“全屏”。其中一种实现代码是:int x = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;decorView.setSystemUiVisibility(x);当然,这种方法在4.4得到了加强,也就是更强大的全屏方案---“沉浸”!!具体是在setSystemUiVisibility()方法里面加入了两个新的flag: View.SYSTEM_UI_FLAG_IMMERSIVE和View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY结论:“全屏”并非4.4才引入的,4.0即可实现!但是真正稳定的“全屏”模式是“沉浸”!!只有这个模式才是完美全屏(支持手动和自动隐藏,而不用退出重进),且必须Android4.4及以上版本。这就是争议点的来源,(“沉浸”具体分两种,一般我们遇到的属于自动隐藏型,即带有Sticky粘性标签的“沉浸”,就不展开了。)。“沉浸”的特点是一定是在第一次进入会有两个蓝色提示气泡。至此为止,应该没人搞混“沉浸”和“变色”了吧。“沉浸”是属于“全屏”的,是一种相对来说更加完美的“全屏”模式,和“透明”没有关系,唯一一样的是都需要Android4.4及更高版本。。
(更新 个人理解,和谷歌的官方文档有点不符合)原生沉浸式状态栏是安卓5.0后引入的一个新API(应用程序接口),它能够让应用对状态栏区域的颜色进行设置,令状态栏颜色和应用的颜色达到一体化的效果,增加视觉体验。状态栏变色龙是一款以Xposed为框架的插件,它可以将状态栏的颜色和正在运行的应用程序的颜色调整为一体,实现更好的视觉效果。沉浸式:全屏模式,通知栏隐藏,即全屏,部分应用打开时会出现沉浸式状态栏变色龙式状态栏:将状态栏本身的背景全透明化,同时改变应用窗口顶部的颜色。这样能在切换应用窗口时,完成同步变色,并且将色彩一体感做得比原生系统更彻底。既保证顶栏应用图标和文字清晰显示,又将顶栏的颜色与下部的颜色无缝连接起来。将动静态之间的效果调整恰当,让整体的视觉显得流畅。透明通知栏:MIUI V5这类的老系统,虽然是Android4.2,但是桌面还是能透明的。在动态切换上,原生沉浸式优于变色龙。变色龙改变的是状态栏本身的背景颜色,而Android的状态栏是一个单独的窗口,无法和应用窗口的动画做到完全同步,因此变色龙状态栏本身背景颜色变化的时候,无法做到整块颜色的同步切换,会出现和应用窗口内颜色衔接不连贯的情况。在静态画面展示上,变色龙却优于原生沉浸式。变色龙在静态画面中的颜色是一体化的,而原生沉浸式的顶栏的会增加一层阴影,用来突出状态栏处白色的文字和图标,但这使得原生沉浸式在静态画面中呈现出割裂感,带来的视觉体验不是很好。沉浸式状态栏示例:变色龙通知栏示例:透明状态栏示例:沉浸模式: Google在安卓4.0发布的同时,提出了Android Design设计规范。Holo风的出现,让当时乱得像鸡窝一样的安卓换了血,重获新生的安卓饱受好评——但作为Android Design重要因素的Navigation Bar也就是屏幕虚拟键除外。人们觉得,安卓4.0以来引进的屏幕虚拟键占用了屏幕空间,反正怎么看怎么碍眼。屏幕虚拟键到底好不好,现在仍有争议,不过Google已经在安卓4.4中着重减少争议度了。安卓4.4引入了“沉浸模式”(Immersive Mode),解决了Navigation Bar占用屏幕空间的问题。在,无论您是要读书、玩游戏还是看电影,全新的沉浸模式都可以让您全身心沉浸其中。只需滑动屏幕边缘,即可重新显示状态栏和导航按钮。目前还有很多第三方App未沉浸式,例如知乎,希望未来的系统能一统规范。
翻到了知乎上的另一个问题 从中看到的欧阳希先生的回答觉得长知识了。以下:沉浸→沉浸式体验→沉浸式设计?Andriod4.4沉浸模式沉浸就是让人专注在当前的目标(由设计者营造)情境下感到愉悦和满足,而忘记真实世界的情境。沉浸式体验的内容:沉浸式体验往往即包括人的感官体验,又包括人的认知体验。感官体验:例如游乐场,迪斯尼主题乐园,很多活动对人有一定挑战,但是主要是利用人的感官体验,让人从而感觉到爽或者刺激。但是利用感官刺激达到心流状态,很难维持长久。认知体验:例如下棋,扫雷等等策略游戏,又如教学这些活动对人的技能与挑战匹配主要利用人的认知经验。而事实证明,即包含丰富的感官经验,又包含丰富的认知体验的活动才能创造最令人投入的心流。何为沉浸式设计?依据之前的叙述,那么我们可以将为了沉浸式(心流)而进行的设计可以称之为沉浸式设计(为心流而设计)。而沉浸式设计的例子通常就是隐藏状态栏以及导航栏等元素,将用户所关注的内容最大程度的呈现于屏幕之上。另外还有如豌豆荚手机版上的主界面,在向下滑动进入应用的浏览时,上方的搜索框与按钮就随动画进入了沉浸。沉浸模式就是突出内容,排除干扰,对界面除内容以外的东西尽可能的进行圆润的简化,从而让用户沉浸在其中吧。这就是看了他们讲解之后的我的理解。
沉浸式是为了专注于用户使用的功能,隐藏一些不必要的view,透明状态栏只是好看,变色龙就是一个插件。
先占个坑沉浸式设计是一种通过简化界面元素来平衡用户体验和内容的一种设计走向核心的设计思想有「内容为王」 「Do Not Disturb」这种约束下的设计就是沉浸式。谷歌的解释太坑
看了题主的描述貌似WP的状态栏比较符合条件
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 和女孩子聊天内容 的文章

 

随机推荐