Android全沉浸式的方式

来源:互联网 发布:php数组最大长度限制 编辑:程序博客网 时间:2024/06/05 21:56

一、关于Android沉浸式 大家应该都比较了解首先要在4.4及以上才可以实现,并且实现相对简单直接在theme中的style中设置

<item name="android:windowTranslucentStatus">true</item>
或者代码中设置

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
然后布局中设置

android:fitsSystemWindows="true"
便可以实现沉浸式状态栏,但是在4.4上是渐变效果 而在5.0上是一层阴影比如QQ这种


 但是比4.4好看的多。那么如果想去掉这层阴影 个人研究后发现只能在5.0上面才能实现(当然各位朋友有好的办法也可以告诉我)。

现在说下全沉浸(也就是去掉阴影)5.0上面最简单的方法就是

<item name="android:windowDrawsSystemBarBackgrounds">true</item><item name="android:statusBarColor">@android:color/transparent</item>
在style中设置这两句话然后将下面一句的颜色设置为自己想要的值然后去掉
<item name="android:statusBarColor">@android:color/transparent</item>
这句话即可,但是这样其实只是改变了状态栏颜色,而非“沉浸”,并且这样还有一个不好的地方就是如果有侧滑菜单那么侧滑菜单并不会沉浸。


有没觉得很难看,那要解决这个问题首先要把上面的

<item name="android:statusBarColor">@android:color/transparent</item>

这句话加上设置为透明,然后此处分两种情况一种是toolbar的情况:先把toolbar设置

android:fitsSystemWindows="true"

然后将toolbar高度设置为wrap_content而不是?attr:android/style:actionBarSize,然后给当前布局每一个加上

android:fitsSystemWindows="true"

我的代码是用AndroidStudio建的带侧滑的界面,然后xml代码如下:

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:fitsSystemWindows="true"    tools:context="com.example.administrator.immersionstatusbar.MainActivity">    <!--<include layout="@layout/without_toolbar"/>-->    <android.support.design.widget.AppBarLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:fitsSystemWindows="true"        android:theme="@style/AppTheme.AppBarOverlay">        <android.support.v7.widget.Toolbar            android:id="@+id/toolbar"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="#f0f"            android:fitsSystemWindows="true"            app:popupTheme="@style/AppTheme.PopupOverlay" />    </android.support.design.widget.AppBarLayout>    <include layout="@layout/content_main" />    <android.support.design.widget.FloatingActionButton        android:id="@+id/fab"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="bottom|end"        android:layout_margin="@dimen/fab_margin"        app:srcCompat="@android:drawable/ic_dialog_email" /></android.support.design.widget.CoordinatorLayout>
这样便可以设置好


但现在还有个问题就是侧滑还是有阴影

要去掉这层阴影其实也很简单将箭头处的这句话去掉即可

以上是有侧滑菜单的情况,如果没有可以向上面所说5.0上直接设置状态栏的颜色。但如果还是想没有阴影的全沉浸可以用

android.support.design.widget.CoordinatorLayout
这个控件作为跟布局实现。