沉浸式透明渐变

来源:互联网 发布:思迅会计软件 编辑:程序博客网 时间:2024/05/19 19:42

首先我们在values里面的styles添加一行代码:

<item name="android:windowTranslucentStatus">true</item>

build.gradle 里面的API改为19:

defaultConfig {        applicationId "com.example.liuentong20171123"        minSdkVersion 19        targetSdkVersion 26        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }

下面我们需要个工具类:

package com.example.liuentong20171123.Utils;import android.app.ActionBar;import android.graphics.Color;import android.os.Build;import android.view.View;import android.view.Window;/** * 作者:author * 时间 :2017/11/24:15:17 * 说明: */public class ImmersiveStatusbar {    private static ImmersiveStatusbar immersiveStatusbar;    // 构造函数私有化    private ImmersiveStatusbar() {    }    // TODO: 2017/4/17 单例模式    public static ImmersiveStatusbar getInstance() {        if (immersiveStatusbar == null) {            // 加锁提高使用效率            synchronized (ImmersiveStatusbar.class) {                if (immersiveStatusbar == null) {                    immersiveStatusbar = new ImmersiveStatusbar();                }            }        }        return immersiveStatusbar;    }    /***     * 状态栏透明化     * @param window    Window对象     * @param actionBar ActionBar对象     */    public void Immersive(Window window, ActionBar actionBar) {        if (Build.VERSION.SDK_INT >= 21) {            View view = window.getDecorView();            // TODO: 2017/4/13 两个FLAG一起使用表示会让应用的主体内容占用系统状态栏的时空间            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;            view.setSystemUiVisibility(option);            // 将状态栏设置成透明色            window.setStatusBarColor(Color.TRANSPARENT);        }    }}

接下来我们设置在MainActivity:

 ImmersiveStatusbar.getInstance().Immersive(getWindow(),getActionBar());