android 状态栏一体化实现

在android4.4以后,增加了状态栏和应用一体化的功能。

效果:

android 状态栏一体化实现_第1张图片

具体的实现思路:

一.设置状态栏背景透明。

 1)代码设置(推荐)
  2)style主题中设置(这里设置,最小的sdk必须是19以上)

二.引入SystemBarTintManager类,即开源库SystemBarTint  地址:https://github.com/jgilfelt/SystemBarTint
  必须nineoldandroids.jar包

三.设置颜色


实现:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setTranslucentStatus();
		setContentView(R.layout.activity_main);
	}
	
	/**
	 * 设置状态栏背景状态
	 */
	private void setTranslucentStatus() {
		setStatusBarTranslucent(true);
//		setNavigationBarTranslucent(true);
		SystemBarTintManager tintManager = new SystemBarTintManager(this);
		tintManager.setStatusBarTintEnabled(true);
		tintManager.setStatusBarTintResource(R.color.title_bar_bg);// 状态栏的背景颜色(0表示无背景)
//		tintManager.setNavigationBarTintEnabled(true);
//		tintManager.setNavigationBarTintResource(R.color.title_bar_bg);//导航栏背景颜色(0表示无背景)
	}

	/**
	 * 设置状态栏是否透明
	 * 
	 * @param isTransparent
	 */
	private void setStatusBarTranslucent(boolean isTransparent) {
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
				&& isTransparent) {
			Window win = getWindow();
			WindowManager.LayoutParams winParams = win.getAttributes();
			// 状态栏透明
			final int sBits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
			winParams.flags |= sBits;
			win.setAttributes(winParams);
		}
	}

	/**
	 * 设置导航栏是否透明
	 * 
	 * @param isTransparent
	 */
	private void setNavigationBarTranslucent(boolean isTransparent) {
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
				&& isTransparent) {
			Window win = getWindow();
			WindowManager.LayoutParams winParams = win.getAttributes();
			// 导航栏透明
			final int nBits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
			winParams.flags |= nBits;
			win.setAttributes(winParams);
		}
	}

值得注意的是:当我们设置了状态栏透明后,布局默认会顶到状态栏上。如下图所示:

android 状态栏一体化实现_第2张图片

可以在style中设置true

    

点击下载下载


你可能感兴趣的:(android)