修改状态栏的颜色功能

效果如图:

代码实现:

工具类:


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。


你可能感兴趣的:(修改状态栏的颜色功能)