三步實現(xiàn)沉浸式狀態(tài)欄

沉浸式是android 4.4之后推出的新型手機屏幕顯示效果,沉浸式可以將手機狀態(tài)欄和導(dǎo)航欄顏色調(diào)整為與應(yīng)用顏色一樣或者一致,讓應(yīng)用更加美觀。

網(wǎng)上看了很多例子,有的要判斷機型,有的需要另外設(shè)置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);
            // 透明導(dǎo)航欄
            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();



    /**
     * [設(shè)置狀態(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);
            //是否設(shè)置狀態(tài)欄顏色
            tintManager.setStatusBarTintEnabled(true);
            //這里調(diào)用需要的通知欄顏色
            tintManager.setStatusBarTintResource(R.color.primary);
            
        }else{
            //("不可設(shè)置狀態(tài)欄");
        }
    }
參考文章

Android沉浸式UI實現(xiàn)及原理
白底黑字!Android淺色狀態(tài)欄黑色字體模式
Android 6.0狀態(tài)欄使用灰色文字和圖標(biāo)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容