【2017年整理】刨根问底-论Android“沉浸式”.docx

【2017年整理】刨根问底-论Android“沉浸式”.docx

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【2017年整理】刨根问底-论Android“沉浸式”

刨根问底-论Android“沉浸式”  网上谈论“沉浸式”的文章多的不可胜数,有人把“沉浸式”叫做“沉浸式状态栏”,还有人称作为“透明状态栏”、“变色状态栏”等。  这里我们先给出“沉浸式”的直观感受,引用“知乎”网友的答案  使用带虚拟键的手机才能明显感觉到沉浸式所带来的变化:状态栏、导航栏隐藏。  而对于使用实体按键的手机的用户来说,“沉浸式”所带来的变化仅仅是状态栏隐藏,事实上,状态栏隐藏在之前也很常见,各种国产应用启动时都会隐藏状态栏。  出处来自:为什么在国内会有很多用户把 ?透明栏?(Translucent Bars)称作 ?沉浸式顶栏??感兴趣的朋友可以去阅读下。  把上面的文字翻译成图片的话,标准的“沉浸式”大致是这个效果。  标准沉浸式.gif  App默认是全屏的,用户可以从顶部或者底部“滑出”状态栏和导航栏,一段时间后状态栏和导航栏会自动消失。  嗯,没错,这个才是标准的“沉浸式”。有了以上的定义,下面这两种常见的效果,只能说改变了状态栏的“样式”(Translucent Bar倒是比较贴近)。但是,他们不是“沉浸式”。  非沉浸式.png  接下来,将进入本篇文章的主题,我们会从两个方面去“论沉浸式”。  4.4之前,谷歌是如何提供类似“沉浸式”的体验的  如何以最简单的方式实现“状态栏”与App“合二为一”的效果(真个真的不叫沉浸式啦~)  setSystemUiVisibility4.0之后(3.0也支持,这里暂时只讨论手机平台),官方提供了这个方法,可以改变系统UI的可见性,使用方法如下:int flag = View.SYSTEM_UI_FLAG_FULLSCREEN;getWindow().getDecorView().setSystemUiVisibility(flag);多个值可使用“|”操作符,比如:int flag = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;getWindow().getDecorView().setSystemUiVisibility(flag);  系统提供了很多类似View.SYSTEM_UI_FLAG_xxx的常量,具体有下面几种:  SYSTEM_UI_FLAG_FULLSCREEN(4.1+):隐藏状态栏,手指在屏幕顶部往下拖动,状态栏会再次出现且不会消失,另外activity界面会重新调整大小,直观感觉就是activity高度有个变小的过程。  SYSTEM_UI_FLAG_FULLSCREEN.gif  SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN(4.1+):配合SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN一起使用,效果使得状态栏出现的时候不会挤压activity高度,状态栏会覆盖在activity之上。  SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.gif  SYSTEM_UI_FLAG_HIDE_NAVIGATION(4.0+)  :会使得虚拟导航栏隐藏,但同样用户可以从屏幕下边缘“拖出”且不会再次消失,同时activity界面会被挤压。  SYSTEM_UI_FLAG_HIDE_NAVIGATION.gif  SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION(4.1+):配合 SYSTEM_UI_FLAG_HIDE_NAVIGATION 一起使用,效果使得导航栏出现的时候不会挤压activity高度,导航栏会覆盖在activity之上。   SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION.gif  SYSTEM_UI_FLAG_LAYOUT_STABLE(4.1+):使用以上四个属性,可以达到activity占据屏幕所有空间,同时状态栏和导航栏可以悬浮在activity之上的效果。但是此时activity的内容也会(比如顶部和底部各有一个TextView)状态栏和导航栏之下,当状态栏和导航栏出现的时候,看起来会这样:  显然,文字被遮盖了我们是不能接受的,此时我们需要另外一个属性,android:fitsSystemWindows=“true”,这个属性表示系统UI(状态栏、导航栏)可见的时候,会给我们的布局加上padding(paddingTop、paddingBottom)属性,这样内容就不会被盖住了。我们在activity的根布局加上这个属性,效果如下  我们发现,当状态栏和导航栏出现的时候,内容会被挤压一下,这个体验也不是很理想,那么怎么解决这个问题呢?  其实,我们的内容本就不该占据状态栏和导航栏的

您可能关注的文档

文档评论(0)

love87421 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档