1. 需要优化的地方
先来看一段优化前后动画对比,可以看出,待优化的地方有
优化前 | 优化后 |
---|---|
- 展开时标题未居中
- 收起后字体变大,未居中
- 下拉时文字黑色渐变拉伸
- 收起后背景色变为纯色,没有渐变效果
- 收起时最后隐藏的渐变效果不满意
- 收起时底部有阴影,展开时没有
2. CoordinatorLayout详细介绍
下面结合官方文档和实践来详细说明其用法
介绍
CollapsingToolbarLayout继承自FrameLayout,提供了一个可以折叠的Toolbar,它在AppBarLayout下使用-
Collapsing title
标题文字,见图中Title,可以通过setTitle(CharSequence)
设置文字内容,折叠和展开时的文字样式设置方法
app:collapsedTitleTextAppearance="@style/CollapsedTitleTextStyle"
app:expandedTitleTextAppearance="@style/ExpandedTitleTextStyle"
-
Content scrim
折叠时的背景,可以设置Color或Drawable
app:contentScrim="@color/black"
app:contentScrim="@drawable/bg_gradient"
-
Status bar scrim
系统状态栏折叠时的背景,可以设置颜色或Drawable(可以设置任意背景图),用法同上,但只在5.0+设备上生效
app:statusBarScrim="@color/black"
app:statusBarScrim="@drawable/bg_gradient"
Parallax scrolling children
视差滚动因子(0~1),可以理解为向上收起时,逐渐隐藏的View的移动状态Pinned position children
使子视图在布局滚动时保持固定
app:layout_collapseMode="pin"
3. 开始优化
- 第一点是由于使用系统原生ToolBar并且设置了返回键和Menu图标,导致标题很难居中,换一种方式,将TextView放在外面,覆盖在ToolBar上,实现居中
<TextView
...
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"/>
- 第二和第三点将CollapsingToolbarLayout的Title设为透明,去掉其自带的展开收缩文字移动效果,只显示TextView的固定的文字
<android.support.design.widget.CollapsingToolbarLayout
···
app:collapsedTitleTextAppearance="@style/TransparentTextStyle
app:expandedTitleTextAppearance="@style/TransparentTextStyle>
-
第四点参考上面详解,设置Content scrim和Status bar scrim背景为渐变色
app:contentScrim="@drawable/bg_course_gradient"
app:statusBarScrim="@drawable/bg_course_gradient"
- 第五点通过调整CollapsingToolbarLayout下LinearLayout的collapseMode(默认为none)和collapseParallaxMultiplier来优化
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7"
第六点统一添加阴影的方法,统一取消阴影更好看些,设置
app:elevation="0dp"
即可倒计时天数距离顶部在某些机型距离过远,需要根据标题栏高度
?attr/actionBarSize
来适配下