An_android沉浸式透明渐变Demo
2017-11-26 本文已影响17人
android_en
根据android studio 的版本和API的不同,沉浸式的效果可能会显示不出来,下面的例子请进行个参考:
参考博客:http://blog.csdn.net/csdnzouqi/article/details/70210814
首先我们在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"
}
下面我们需要个工具类:
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());