Android 之低版本高版本實現沉浸式狀態列

切切歆語發表於2017-02-26

沉浸式狀態列確切的說應該叫做透明狀態列。一般情況下,狀態列的底色都為黑色,而沉浸式狀態列則是把狀態列設定為透明或者半透明。

沉浸式狀態列是從android Kitkat(Android 4.4)開始出現的,它可以被設定成與APP頂部相同的顏色,這就使得切換APP時,整個介面就好似切換到了與APP相同的風格樣式一樣。在內容展示上會顯得更加美觀。

功能:自行控制狀態列顏色,可以調節狀態列的亮度,還可以把背景圖片作為導航欄

本部落格主要說的是低版本Android4.4以下或者高版本Android4.4以上都可實現來實現狀態列,效果如圖:

             

測試時,低版本高版本都是可行的。

程式碼:

父類Activity

 

/**
 * Created by zq on 16/12/16.
 *
 * 此類便於其他Activity一同實現狀態列,只要整合此類就OK了
 *
 */

public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setMainLayout();
        setStatusBar();
    }

    /**
     * 初始化佈局
     */
    protected abstract void setMainLayout();


    /***
     *狀態列 (自己選顏色即可)
     */
    protected void setStatusBar() {
        StatusBarUtil.setColor(this, getResources().getColor(R.color.colorAccent));
    }
}

 

 

MainActivity.java

 


 
public class MainActivity extends BaseActivity { @Override protected void setMainLayout() { setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,BackImaActivity.class)); } }); } }

 

 

 

 

 

 

 

圖片背景狀態列

 

/**
 * Created by zq on 16/12/16.
 *
 */

public class BackImaActivity extends BaseActivity {

    @Override
    protected void setMainLayout() {
        setContentView(R.layout.back_activity);
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StatusBarUtil.setTranslucent(BackImaActivity.this,111);
            }
        });
    }
    /****
     * 重寫父類方法,覆蓋的作用,可以實現狀態列的不同顏色或背景
     */
    protected void setStatusBar() {

        /**
         * 引數
         * 第一個:當前上下文
         * 第二個:狀態列透明程度,值越大就越暗 0表示完全安背景顯示  之範圍(0-->255)
         */

        StatusBarUtil.setTranslucent(this,0);
    }
}

 

 

style.xml

 

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>


不需要其他配置,只需要在style.xml檔案中新增這兩行程式碼即可:

 

 

<item name="windowNoTitle">true</item>
 <item name="windowActionBar">false</item>

 

原始碼下載:https://github.com/DickyQie/android-layout-controls/tree/android-status-bar

 

 

 

 

 

 

相關文章