[快速搞定]android 狀態列一體化 沉浸式狀態列

大力-哥發表於2016-08-06

[快速搞定]android 狀態列一體化 沉浸式狀態列

一、前言

最近負責的幾個專案都被要求將系統狀態列的顏色設定與app主題色一致,網上找到許多資料都沒有一下解決我的問題,最終結合幾個解決方案總結出一個最簡單、最快的狀態列一體化方案,只要三步你的app就將有更好的使用者體驗了。

注意:由於Google只在Android4.4之後可以修改狀態列顏色,所以本方案只有在4.4以上才有效果(PS:國內大部分手機都已經使用4.4以上系統,5.0、5.1、6.0等也在逐漸增加,特別是Android6.0 是目前新出的手機的標配,4.4以下都可以不用考慮了)

二、先看效果

先來看看使用前後的效果對比吧:(第一張是使用前,第二張是使用後)
使用前 使用後

三、使用方法

不多說,只要三步即可:

  • 1、拷貝狀態列管理類SystemStatusManager到你的專案中(下載地址在最後);

  • 2、在你的BaseActivity中的onCreate方法中呼叫一下程式碼(如果只要某個頁面一體化,可以在需要一體化的頁面加入改語句):

new SystemStatusManager(this).setTranslucentStatus(R.color.colorPrimary);//設定狀態列透明,引數為你要設定的顏色
  • 3、將你專案中的所有頁面的根佈局載入一個屬性:(只在activity中加即可.不要在fragment裡面加) android:fitsSystemWindows=”true”

注意:如果狀態列與標題欄中間有一條線導致有過渡感,那麼在你專案的主題(style檔案)中加入去掉線條的語句即可:

<item name="android:windowContentOverlay">@null</item>

四、舉例

1、在BaseActivity中使用:

/**
 * Created by HDL on 2016/7/22.
 */
public class BaseActivity extends Activity {
    public Activity mActivity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = this;
        new SystemStatusManager(this).setTranslucentStatus(R.color.colorPrimary);//設定狀態列透明
    }
}

2、根佈局加入屬性

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    tools:context="com.hdl.newkjdemo.newkjdemo.ui.main.MainActivity">

    <include layout="@layout/custom_actionbar" />

五、下載地址

這裡是下載地址

相關文章