修改状态栏的颜色功能

效果如图:

代码实现:

工具类:


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。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值