Android Support Design Library是5.0的安卓支持库,最低兼容版本是Android 2.2,可以说是一个良心的产品,以前编写Android程序总需要考虑到版本的问题,现在使用这个Android支持库开发可以不需要考虑这类问题,这可以说是另一种开发语言,下面我们将一一介绍里面的每个控件的使用方式以及其扩展特效。
1.什么是CoordinatorLayout
从其英文名字可知道其为“协调者”,组织“协调”子View的父View,其继承自FrameLayout,其默认布局是一层一层往上叠加的,与FrameLayout一样。
其神奇的地方就在于Behavior对象了。可以为任何View添加一个Behavior。Behavior是一系列回调。让你有机会以非侵入的为View添加动态的依赖布局,和处理父布局(CoordinatorLayout)滑动手势的机会。
2.CollapsingToolbarLayout实现可折叠的Toolbar
布局文件代码如下:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="256dp" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="#30469b" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="64dp" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/biz_live_foot_bg" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout>
上面有如下属性需要解释:
①app:layout_scrollFlags有如下4个值:
——scroll - 想滚动就必须设置这个。
——enterAlways - 实现快速返回效果, 当向下移动时,立即显示View(比如Toolbar)。 与scroll配合使用效果图如下:
——exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar一直在上面。 与scroll配合使用效果图如下:
——enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
②app:contentScrim:当CollapsingToolbarLayout折叠(收缩)后的背景颜色。
③app:expandedTitleMarginStart与app:expandedTitleMarginEnd:图片拉出与拉入,标题距离左边的距离。之间就是移动的动画距离
④app:layout_collapseMode的两个取值:
——pin - 设置为这个模式时,当CollapsingToolbarLayout完全收缩后,Toolbar还可以保留在屏幕上。
——parallax - 设置为这个模式时,在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier(设置视差因子)搭配使用。
⑤app:layout_collapseParallaxMultiplier:子视图的视觉差
⑥app:layout_behavior="@string/appbar_scrolling_view_behavior":最重要的属性,要实现联动效果,必须设置联动的滑动控件,比如RecyclerView。这样录RecyclerView滚动的时候,标题栏的动画才有效果。