文档章节

Android 沉浸式体验

布拉德利_蔡
 布拉德利_蔡
发布于 2015/09/03 23:10
字数 606
阅读 563
收藏 22

沉浸式体验

Android 4.4 Android 5.5

图中所示就是Android 4.4以后被很多人称之为沉浸式体验的典型场景,即状态栏和ActionBar是同一种颜色;一度我以为这是官方支持的,只需要几句简单的设置就可以实现,但是在查阅了许多资料之后,我发现事实上这玩意儿是一个误解,Android原生支持的并不是这样的。

Android原生支持的模式叫Translucent,实际上是一种全屏模式。仔细看下图,状态栏的颜色其实是在Activity的背景色上加了层遮罩,也就是说Activity不像以前那样被限制在导航栏和状态栏之间,而是全屏显示。

想开启Translucent模式很简单,只要在Theme里将android:windowTranslucentStatus属性给设为True即可。 下面是我自定义的Theme:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">#4284F3</item>
        <item name="android:windowTranslucentStatus">true</item>
    </style>

</resources>

效果呢就如图所示了:

看到了吧,状态栏的颜色和Actionbar的颜色并不一样,而是和Activity的背景色一样都是白色的,只不过多了一层渐变的遮罩,而且仔细看的话,状态栏那似乎有点字在后面,那其实是“Hello World”,因为Activity是全屏嘛,所以TextView就不像以前那样在Actionbar下面了,而是在屏幕的最上面,解决这个问题的方法是在Activity的布局文件中加一句android:fitsSystemWindows="true"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:fitsSystemWindows="true">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

这样Hello World就能正常显示了。

设置状态栏颜色

如果想实现文章开头的那种效果,我们需要用到一个开源库SystemBarTint,使用时只要在Activity的onCreate中加入:

SystemBarTintManager tintManager = new SystemBarTintManager(this);
// enable status bar tint
tintManager.setStatusBarTintEnabled(true);
tintManager.setTintColor(Color.parseColor("#4284F3"));

这个库还支持设置导航栏的颜色,非常方便。

这是在Android 4.4里实现的方法,如果在Android 5.0以上的系统中,我们有更方便的方法,因为系统提供的Material主题里提供设状态栏的标签,具体介绍见使用Material的主题

© 著作权归作者所有

布拉德利_蔡

布拉德利_蔡

粉丝 0
博文 5
码字总数 2293
作品 0
南京
程序员
私信 提问
Android状态栏实现沉浸式模式

因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统...

津乐
2018/04/20
82
0
加载loading对话框的功能(不退出沉浸式效果)

上一篇基于修改系统源码的前提下,实现了完全的沉浸式体验效果。可参考这篇 戳这 一、自定义Dialog 在沉浸式效果下,当界面弹出对话框时,对话框将获取到焦点,这将导致界面退出沉浸式效果,...

cczheng
2018/12/08
0
0
android兼容oppo手机刘海屏解决方案

引用自OPPO官方文档,这里缩减了一些内容,选取重要内容,包括oppo沉浸式的兼容。 转载请标明出处: https://blog.csdn.net/DJY1992/article/details/80688802 本文出自:【奥特曼超人的博客】...

奥特曼超人
2018/06/14
0
0
Android沉浸式的两种方法

隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: 而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分。 怎么做呢,郭霖的一个Funct...

天王盖地虎626
06/25
47
0
你应该知道的2016年有关App开发的技术创新

上一篇简述了2016年有关App产品的年中总结,这篇开始历数有关App开发的技术创新!无论你是创业者,还是程序员,无论你是否懂编程、写代码,利用APICloud平台数据撰写的年中总结,集合了移动应...

duduo丶
2016/07/14
289
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 人生,还真是到处是意外

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享lil peep的单曲《High School》 《High School》- lil peep 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
20分钟前
1
0
Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
6
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部