一.首先来看一下实现后的效果:
例一:
例二:
二.上干货
为了有些同学需要应急,直接给出使用步骤
-
首先拷贝两个工具类到项目中:
NewStatusBarUtil
OldStatusBarUtil
分别支持4.4和4.4以上版本。
其次在BaseActivity中添加一个方法:protected void process() { // 华为,OPPO机型在StatusBarUtil.setLightStatusBar后布局被顶到状态栏上去了 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { View content = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0); if (content != null) { content.setFitsSystemWindows(true); } } }
-
在Activity中的使用:
setContentView()前调用方法:StatusBarUtil.transparencyBar(this);
在setContentView()后调用方法:
process();
在onStart()方法中调用:
@Override protected void onStart() { super.onStart(); StatusBarUtil.setStatusBarColor(this,R.color.white);//设置状态栏颜色和顶部布局背景色一致 StatusBarUtil.setStatusBarTextColor(this,true); }
在activity中的使用就完成了。
-
在fragment中使用:
首先在所在activity中同样
setContentView()前调用方法:StatusBarUtil.transparencyBar(this);
在setContentView()后调用方法:
process();
在fragment的onCreate中:
StatusBarUtil.setStatusBarColor(getActivity(),R.color.app_base_color); StatusBarUtil.setStatusBarTextColor(getActivity(),false);
在fragment的onHiddenChanged方法中:
@Override public void onHiddenChanged(boolean hidden) {//为了保证切换fragment时重置状态栏颜色 super.onHiddenChanged(hidden); if(!hidden){ StatusBarUtil.setStatusBarColor(getActivity(),R.color.app_base_color); StatusBarUtil.setStatusBarTextColor(getActivity(),false); } }
在fragment中的使用就完成了。
三.分析
待续