Android 状态栏小总结


关于状态栏,github上也有很多的开源框架,虽然不是每个都特别好使吧,但是也差不多

https://github.com/gyf-dev/ImmersionBar

这个星多

1.StatuBarUtil

https://github.com/laobie/StatusBarUtil

compile 'com.jaeger.statusbarutil:library:1.5.1'

如果当前页面不做别的特殊处理的话,那么一般也就够用了.

StatusBarUtil.setColor(this,getResources().getColor(R.color.colorAccent ),0 );
StatusBarUtil.setDarkMode(this);

2.Sofia

https://github.com/yanzhenjie/Sofia

implementation 'com.yanzhenjie:sofia:1.0.5'

Sofia.with().().()建造者模式一套完成


但是吧,总有意外,这时候也是想到了官方API的好处

1.不灵活,设置直接就是全局了,当然你也可以在别的页面重新调用上面那俩个框架


    

    
    
        
        
        
        
    

当然也可以每个Activity都去单独设置 那样这个Activity里的属性,颜色等都可以单独设置

2.对DrawerLayout进行特殊处理

如果不需要超出状态栏,那最好了,如果要超出需要在Style里做修改


    

这样的话确实超出了,也没有黑色遮罩

提供一个方法来设置状态栏

让整体内容去超出

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

写一个View顶上去

 findViewById(R.id.statubar).getLayoutParams().height=BarUtils.getStatusBarHeight();

重新设置它的高度.


StatusBarUtil.setTranslucent(this);

用来加上黑色遮盖 .

 

总的来说 就俩种办法 如果是DrawerLayout的话 那么就在Activtiy对应的Style里直接修改状态栏颜色

@color/colorPrimary
        @color/colorPrimaryDark

也可以使用addFlag limit 然后使用View 顶上去做修改


有黑条:

Translucent

没有黑条:

Transparent

Android 状态栏小总结_第1张图片

StatusBarUtil.setTransparent(this);
StatusBarUtil.setLightMode(this);


Android 状态栏小总结_第2张图片

StatusBarUtil.setLightMode(this);
StatusBarUtil.setTranslucent(this, 112);

这俩种都是背景图



 

先上布局




   

    

        

    

效果一:

Android 状态栏小总结_第3张图片

        StatusBarUtil.setTranslucentForImageView(this,122,needschange);
//        StatusBarUtil.setLightMode(this);
        StatusBarUtil.setDarkMode(this);

 


效果二:

Android 状态栏小总结_第4张图片

 StatusBarUtil.setTransparentForImageView(this,needschange);
        StatusBarUtil.setLightMode(this);

注意设置先后顺序!!!!

 

 

 

 

 

你可能感兴趣的:(学习ing)