最简单的实现类似IOS的沉浸式状态栏效果的方法就是使用开源库SystemBarTint
第一步:当然是添加gradle依赖或者把这个库拷到自己项目中,其实就是一个类
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
第二步:在项目的每个Activity界面的布局文件的根目录中添加以下两行代码:
android:clipToPadding="true"
android:fitsSystemWindows="true"
第三步:写一个工具类,如下:
import android.app.Activity;
import android.os.Build;
import android.view.Window;
import android.view.WindowManager;
/**
* Created by diyangxia on 2015/10/11.
*/
public class CommonTools {
/**
* 为界面设置沉浸式状态栏效果
* activity 当前Activity
* res 颜色id或者图片资源id
*/
public static void initSystemBar(Activity activity,int res) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window win = activity.getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
winParams.flags |= bits;
win.setAttributes(winParams);
}
SystemBarTintManager tintManager = new SystemBarTintManager(activity);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(res);
}
}
第四步:在Activity中调用方法,如果设置的是图片,其实一般很少设置图片,不过像QQ那样侧滑出来的背景全屏效果还是不错的,用这里的方法貌似实现不了;如果设置的是颜色,建议和每个界面顶部标题栏的背景色一致:
CommonTools.initSystemBar(MainActivity.this,android.R.color.holo_red_dark);
备注:这种情况只适合那种统一主题以及背景色的应用,要是像用FragmentTabhost实现的这种tab布局菜单的话,还是放弃使用吧,因为我简单尝试了一下,发现根本无法实现不同tab状态栏不同的功能。