Android_改变状态栏颜色

Android状态栏颜色控制

像qq之类的应用,在使用时,系统状态栏的颜色也随着activity的头部颜色变动,使得整个屏幕的style看起来是一致的。

android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)

这部分是我偶然间在其他博客看到的
这个特性是andorid4.4支持的,最少要api19才可以使用。下面介绍一下使用的方法,非常得简单:

public class MainActivity extends Activity {  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
          //透明状态栏    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
        //透明导航栏        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  

    }  


}  

此时就可以实现沉浸效果了,但是存在一定的问题:
状态栏不占用位置了–>若布局头部是TextView的话,此时给text赋值,会发现,text与标题栏的位置,及屏幕左上角。很明显,这并不是我们需要的效果。那么如何更改呢?只需要给布局的头View加入如下属性即可

android:fitsSystemWindows="true"  
android:clipToPadding="true"  

在这里解释一下这两个属性的意思:
android:clipToPadding 定义布局间是否有间距
android:fitsSystemWindows=”true”意思就是设置应用布局时是否考虑系统窗口布局;如果为true,将调整系统窗口布局以适应你自定义的布局。比如系统有状态栏,应用也有状态栏时。看你这个布局代码,恰恰是在定义标题栏样式,所以用到这行代码了。

SystemBarTintManager

github https://github.com/hexiaochun/SystemBarTint
下载地址
可以自由控制状态栏的各种效果

使用方法

  1. 下载SystemBarTintManager
  2. 解压,并将解压出的library导入项目中
  3. 在oncreat中调用initSystemBar方法:
public static void initSystemBar(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(activity, true);
}
SystemBarTintManager tintManager = new SystemBarTintManager(activity);
tintManager.setStatusBarTintEnabled(true);
// 使用颜色资源-
tintManager.setStatusBarTintResource(R.color.status_color);
//tintManager.setStatusBarAlpha(0.0f);
//还有很多其他方法
}
@TargetApi(19)

private static void setTranslucentStatus(Activity activity, boolean on) {

Window win = activity.getWindow();

WindowManager.LayoutParams winParams = win.getAttributes();

final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;

if (on) {

winParams.flags |= bits;

} else {

winParams.flags &= ~bits;

}

win.setAttributes(winParams);

}

相关微博:http://blog.csdn.net/jdsjlzx/article/details/41643587

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值