一、demo效果圖
在android 4.4上 有一個(gè)新的特性可以設(shè)置手機(jī)狀態(tài)欄的背景,讓手機(jī)整個(gè)界面的風(fēng)格保持一致,在今年的google i/o上的android l默認(rèn)就是這種風(fēng)格。來(lái)先看一下demo效果圖:
圖一:透明狀態(tài)欄 圖2:藍(lán)色背景狀態(tài)欄
二、整個(gè)DEMO的工程結(jié)構(gòu)圖如下所示:
三、主要的實(shí)現(xiàn)代碼如下所示:
首先,要記得導(dǎo)入systembartint-1.0.4.jar包
3.1 MainActivity.java中的代碼如下所示:
package com.example.testdemo;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import com.readystatesoftware.systembartint.SystemBarTintManager;
public class MainActivity extends Activity {
private boolean isBarTint = true;
private boolean isTranslucentBarTint = false;
public void setBarTint(boolean isBarTint) {
this.isBarTint = isBarTint;
}
public void setTranslucentBarTint(boolean isTranslucentBarTint) {
this.isTranslucentBarTint = isTranslucentBarTint;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (isBarTint) {
initSystemBar();
}else if (isTranslucentBarTint) {
initTranslucentSystemBar();
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void initSystemBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager tintManager= new SystemBarTintManager(this);
// 激活狀態(tài)欄設(shè)置 tintManager.setStatusBarTintEnabled(true);
// 激活導(dǎo)航欄設(shè)置 tintManager.setNavigationBarTintEnabled(false);
int sbg = getResources().getColor(R.color.titlebar_rl_background);
tintManager.setTintColor(sbg);
tintManager.setStatusBarTintColor(sbg);
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void initTranslucentSystemBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true);
SystemBarTintManager tintManager= new SystemBarTintManager(this);
// 激活狀態(tài)欄設(shè)置 tintManager.setStatusBarTintEnabled(true);
// 激活導(dǎo)航欄設(shè)置 tintManager.setNavigationBarTintEnabled(false);
int sbg = getResources().getColor(R.color.viewfinder_title);
tintManager.setTintColor(sbg);
tintManager.setStatusBarTintColor(sbg);
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void setTranslucentStatus(boolean isOpen) {
Window win= getWindow();
WindowManager.LayoutParams winParams= win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (isOpen) {
winParams.flags|= bits;
}else {
winParams.flags&= ~bits;
}
win.setAttributes(winParams);
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void setTranslucentNavigation(boolean isOpen) {
Window win= getWindow();
WindowManager.LayoutParams winParams= win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
if (isOpen) {
winParams.flags|= bits;
}else {
winParams.flags&= ~bits;
}
win.setAttributes(winParams);
}
}
3.2 colors.xml的顏色值如下所示:
#33b5e6 #80000000
3.3 styles.xml中的代碼如下所示:
true true
3.4 AndroidManifest.xml 中application或?qū)?yīng)的activity設(shè)置主題 android:theme="@style/AppTheme"