單Activity多Fragment動態修改狀態欄顏色

目錄介紹

  • 1.關於如何集成
  • 2.關於如何使用
  • 3.關於鳴謝
  • 4.關於版本更新說明
  • 5.關於其餘介紹

0.說明

  • 狀態欄工具類,應該能夠知足絕大多數的使用場景。具體能夠參考代碼案例,歡迎star!!

1.關於如何集成

  • 在gradle中添加:compile 'cn.yc:YCStatusBarLib:1.3.1'

2.關於如何使用

  • 2.1.1 DrawerLayout設置狀態欄
//爲DrawerLayout 佈局設置狀態欄顏色,純色
StatusBarUtils.setColorNoTranslucentForDrawerLayout(this, drawerLayout,getResources().getColor(R.color.colorTheme));
//爲DrawerLayout 佈局設置狀態欄變色,也就是加上透明度
StatusBarUtils.setColorForDrawerLayout(this, drawerLayout,getResources().getColor(R.color.colorTheme), 0);
  • 2.1.2 設置狀態欄顏色
YCAppBar.setStatusBarColor(this, ContextCompat.getColor(this, R.color.colorAccent));
  • 2.1.3 設置狀態欄和toolbar顏色
  • 注意,若是是設置白色的話,則須要單獨設置狀態欄字體的顏色,不然看不見
  • 若是要設置狀態欄爲白色:則直接可使用2.7中的方法
YCAppBar.setStatusBarColor(this, ContextCompat.getColor(this, R.color.colorAccent));
  • 2.1.4 設置狀態欄透明
YCAppBar.translucentStatusBar(this, true);
  • 2.1.5 設置狀態欄coordinatorLayout顏色
YCAppBar.setStatusBarColor(this, ContextCompat.getColor(this, R.color.colorPrimary));
  • 2.1.6 設置狀態欄coordinatorLayout顏色透明
YCAppBar.setStatusBarColorForCollapsingToolbar(this, mAppBarLayout, collapsingToolbarLayout, toolbar, ContextCompat.getColor(this, R.color.colorPrimary));
  • 2.1.7 設置狀態欄顏色爲白色
YCAppBar.setStatusBarLightMode(this, Color.WHITE);
  • 2.1.8 設置狀態欄和toolbar顏色爲白色
YCAppBar.setStatusBarLightMode(this, Color.WHITE);
  • 2.1.9 設置狀態欄和coordinatorLayout爲白色
YCAppBar.setStatusBarLightForCollapsingToolbar(this, mAppBarLayout, collapsingToolbarLayout, toolbar, Color.WHITE);
  • 2.2.0 單Activity多Fragment動態修改狀態欄顏色
  • 若是是單Activity多Fragment,由Fragment控制狀態欄顏色的應用,有兩種方案:
  • 1.由Activity控制狀態欄背景顏色和字體顏色,提供方法供Fragment調用便可。
  • 2.首先設置Activity侵入狀態欄,並設置狀態欄爲透明色,至關於隱藏Activity的狀態欄, 而後在BaseFragment中封裝狀態欄,由Fragment控制本身的顏色便可; 可是狀態欄字體顏色仍是須要經過Activity控制。
//例如,ViewPager+TabLayout+Fragment中,很常見

@Override
public void onPageSelected(int position) {
    switch (position){
        case 0:
            //設置狀態欄爲黑色
            YCAppBar.setStatusBarColor(StatusBarFragmentActivity.this,
                    ContextCompat.getColor(StatusBarFragmentActivity.this,
                            R.color.colorTheme));
            break;
        case 1:
            //設置狀態欄爲紅色
            YCAppBar.setStatusBarColor(StatusBarFragmentActivity.this,
                    ContextCompat.getColor(StatusBarFragmentActivity.this,
                            R.color.colorAccent));
            break;
        case 2:
            //設置狀態欄爲藍色
            YCAppBar.setStatusBarColor(StatusBarFragmentActivity.this,
                    ContextCompat.getColor(StatusBarFragmentActivity.this,
                            R.color.colorPrimary));
            break;
        case 3:
            //設置狀態欄爲透明,至關於隱藏狀態欄,也稱之爲沉浸式狀態欄
            YCAppBar.translucentStatusBar(StatusBarFragmentActivity.this,
                    true);
            break;
        case 4:
            //設置狀態欄爲白色
            YCAppBar.setStatusBarColor(StatusBarFragmentActivity.this,
                    ContextCompat.getColor(StatusBarFragmentActivity.this,
                            R.color.white));
            //狀態欄亮色模式,設置狀態欄黑色文字、圖標
            StatusBarUtils.StatusBarLightMode(StatusBarFragmentActivity.this);
            break;
    }
}
  • 2.2.1 能夠自由設置狀態欄中的字體,圖標顏色
  • 支持類型,1:MIUUI 2:Flyme 3:android6.0
//狀態欄亮色模式,設置狀態欄黑色文字、圖標
StatusBarUtils.StatusBarLightMode(StatusBarFragmentActivity.this);

3.關於鳴謝

  • 關於狀態欄,採用的是拿來主義,是通過閱讀一些項目慢慢總結而來的。
  • 很是使用,具體的用法都已經整理成demo,歡迎直接看代碼,若是能夠麻煩star!
  • 感謝開源前輩們的無私奉獻……

4.關於版本更新說明

  • v0.0 更新於2016年3月9日
  • v1.0 更新於2017年9月8日
  • v1.1 更新於2017年12月5日
  • v1.3 更新於2018年3月16日
  • v1.3.1 更新於2018年9月1日
    • 添加了單Activity多Fragment動態修改狀態欄顏色功能

5.關於其餘介紹

關於個人博客

相關文章
相關標籤/搜索