StatusBarCompat 透明状态栏开源项目

我要开发同款
匿名用户2018年12月17日
41阅读
开发技术Java
所属分类其他
授权协议MIT

作品详情

透明状态栏只有在SDK>=19(Android4.4)才会生效.

透明状态栏设置状态栏的颜色

这是一个为了兼容处理状态栏的工具类,可以不需要设置不同的style.xml文件,最重要的特性就是可以在**不重启Activity的情况下切换 setStatusBarColor 和 translucentStatusBar **.提供以下API:

//设置状态栏的颜色StatusBarCompat.setStatusBarColor(Activity activity, int color)//添加alpha值StatusBarCompat.setStatusBarColor(Activity activity, int statusColor, int alpha)//透明状态栏StatusBarCompat.translucentStatusBar(activity);//SDK >= 21时, 取消状态栏的阴影StatusBarCompat.translucentStatusBar(Activity activity, boolean hideStatusBarBackground);//为 CollapsingToolbarLayout 设置颜色setStatusBarColorForCollapsingToolbar(Activity activity, AppBarLayout appBarLayout, CollapsingToolbarLayout collapsingToolbarLayout, Toolbar toolbar, int statusColor)//SDK >= 23, 将状态栏改为浅色模式(状态栏 icon 和字体会变成深色)changeToLightStatusBar(Activity activity)//将状态栏改为深色模式(状态栏 icon 和字体会变成浅色, 即默认模式)cancelLightStatusBar(Activity activity)怎么使用

在 setContentView 方法调用后再设置.

如果要使用全屏Activity,调用 StatusBarCompat.translucentStatusBar(activity) .

如果想让状态栏图标变成深色,记得最后调用 changeToLightStatusBar(activity) .

Demo说明:

Demo只有一个Activity,分四个Tab.

CommonFragment为正常布局,可以通过SeekBar来调整状态栏颜色的alpha值.调用方法为: setStatusBarColor.

TranslucentFragment为图片布局,展示透明状态栏效果,SDK>=21时,可以通过按钮显示\隐藏statusBar的shadow,调用方法为: translucentStatusBar.

DrawerFragment展示DrawerLayout+CoordinatorLayout,调用方法为: setStatusBarColor.

CollapsingFragment展示CollapsingLayout的适配效果,调用方法为: setStatusBarColorForCollapsingToolbar.

每个Fragment下都可以通过Checkbox切换浅色/深色状态栏.

已知问题

这些问题仅仅出现在4.4上

如果用在TabActivity上,会有一条黑线在状态栏下面,推荐使用 StatusBarCompat.setStatusBarColor(Activityactivity,intstatusColor,intalpha) 方法,推荐的透明值为112.

如果layout中第一个View为DrawerLayout,那么它的子View的fitsSystemWindow需要设置为false.

调用 translucentStatusBar 方法时,会给Window设置 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,这个Flag和软键盘一起使用的时候可能会导致 AndroidBug5497,可以尝试使用 这个方法 解决.

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论