效果如图:
代码实现:
工具类:
package com.lantu.tuhuadmin.statuebar;
import android.app.Activity;
import android.os.Build;
import android.view.WindowManager;
/**
* Created on 2016/7/12.
* Author:crs
* Description:状态栏工具类
*/
public class StatusBarUtil {
public static final int DEFAULT_STATUS_BAR_ALPHA = 0;
/**
* 设置状态栏颜色
*
* @param activity 需要状态栏颜色的activity
* @param color 状态栏颜色值
*/
public static void setColor(Activity activity, int color) {
setColor(activity, color, DEFAULT_STATUS_BAR_ALPHA);
}
/**
* 设置状态栏颜色
*
* @param activity 需要设置的activity
* @param color 状态栏颜色值
* @param statusBarAlpha 状态栏透明度
*/
public static void setColor(Activity activity, int color, int statusBarAlpha) {
//操作系统的api版本大于21,才能改变状态栏的颜色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//设置状态栏的颜色
activity.getWindow().setStatusBarColor(color);
}
}
}
只要是继承自BaseActivity的子类都会实现这种效果! onCreate首先调用父类的构造函数!
package com.lantu.tuhuadmin.statuebar;
import android.app.Activity;
import android.os.Bundle;
/**
* Created on 2016/7/12.
* Author:XXX
* Description:XXX
*/
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStatusBar();
}
public void setStatusBar() {
StatusBarUtil.setColor(this, getResources().getColor(R.color.head_colors));
}
}
[ˈsteɪtəs]
千万别忘了=、具体的业务逻辑都在方法里面
android.os.Build
类概述:从系统属性中提取设备硬件和版本信息(硬件、cpu、版本、手机制造商等)。
内部类:
1、Build.VERSION 各种版本字符串 (VERSION类)
2、Build.VERSION_CODES 目前已知的版本代码的枚举类(VERSION_CODES类)
// 版本号
Build.VERSION.SDK_INT
1、隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
requestWindowFeature()要在setContentView()之前调用;
Window类除去一大堆FEATURE_属性之外,剩下的内容无外乎两大部分:
一、定义Callback接口,它包含一系列dispatchXxxx函数和一系列onXxxx函数,用于处理UI事件;
二、定义了自己的WindowManager.
WindowManager干什么?它并不是什么“窗口管理器”,WindowManagerService才是窗口管理器。名字叫的玄乎,而实际上WindowManager主要管理一堆状态字,而这些状态字里,最常用的就是LayoutParams。