An_android沉浸式透明渐变Demo

根据android studio 的版本和API的不同,沉浸式的效果可能会显示不出来,下面的例子请进行个参考:
参考博客:http://blog.csdn.net/csdnzouqi/article/details/70210814
首先我们在values里面的styles添加一行代码:

 true

build.gradle 里面的API改为19:

defaultConfig {
        applicationId "com.example.liuentong20171123"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

下面我们需要个工具类:
ImmersiveStatusbar

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());

你可能感兴趣的:(An_android沉浸式透明渐变Demo)