沉浸式是android 4.4之后推出的新型手機屏幕顯示效果吧寺,沉浸式可以將手機狀態(tài)欄和導航欄顏色調(diào)整為與應用顏色一樣或者一致矩肩,讓應用更加美觀铡原。
網(wǎng)上看了很多例子纱新,有的要判斷機型,有的需要另外設置bar的高度捆愁,其實不需要(因為有第三方),三步實現(xiàn)沉浸式狀態(tài)欄窟却。淺色狀態(tài)欄黑色字體模式的話看下面的參考昼丑。
原理:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 透明狀態(tài)欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明導航欄
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
看效果
小米安卓6.0系統(tǒng)
華為安卓4.4系統(tǒng)
第一步:
添加依賴,這里我用SystemBarTint
另外一個庫也可以 https://github.com/laobie/StatusBarUtil
dependencies {
/*狀態(tài)欄著色 https://github.com/jgilfelt/SystemBarTint*/
compile 'com.readystatesoftware.systembartint:systembartint:1.0.4'
}
第二步:
xml根布局添加
android:fitsSystemWindows="true"
第三步:
在BaseActivity編寫公共方法
/**
* @創(chuàng)建 HaiJia
* @時間 2017/4/18 9:47
* @描述 BaseActivity
*/
public abstract class BaseActivity extends AppCompatActivity {
private View mContextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContextView = LayoutInflater.from(this)
.inflate(bindLayout(), null);
setContentView(mContextView);
overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
initSystemBarTint();
initData();
initView(mContextView);
initAction();
}
/**
* [綁定布局]
*
* @return
*/
public abstract int bindLayout();
/**
* [初始化控件]
*
* @param view
*/
public abstract void initView(final View view);
/**
* [初始化數(shù)據(jù)]
*
* 獲取頁面?zhèn)鬟^來的值以及初始化一些數(shù)據(jù)
*/
public abstract void initData();
/**
* [初始化數(shù)據(jù)]
*
* 初始化View之后的一些操作
*/
public abstract void initAction();
/**
* [設置狀態(tài)欄顏色]
*
* 初始化狀態(tài)欄
*/
protected void initSystemBarTint() {
// 沉浸式狀態(tài)欄
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ) {//大于4.4版本
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
//主題顏色
SystemBarTintManager tintManager = new SystemBarTintManager(this);
//是否設置狀態(tài)欄顏色
tintManager.setStatusBarTintEnabled(true);
//這里調(diào)用需要的通知欄顏色
tintManager.setStatusBarTintResource(R.color.primary);
}else{
//("不可設置狀態(tài)欄");
}
}
參考文章
Android沉浸式UI實現(xiàn)及原理
白底黑字夸赫!Android淺色狀態(tài)欄黑色字體模式
Android 6.0狀態(tài)欄使用灰色文字和圖標