怎么在Android应用中利用CoordinatorLayout实现一个标题滚动效果

  介绍

本篇文章为大家展示了怎么在Android应用中利用CoordinatorLayout实现一个标题滚动效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在材料设计里,CoordinatorLayout通常用来作为顶层视图,来协调处理各个之子视图间的动作,从而实现各种动画效果,如间小吃店与FloatingActionButton的配合显示效果,就是以CoordinatorLayout作为根布局来实现的

CoordinatorLayout提供行为接口,子视图通过实现行为接口来协调和其它观点之间的显示效果,可以这么理解:

CoordinatorLayout让其之子视图间互相知道彼此的存在,任意一个子视图的状态变化会通过行为通知其它子视图,CoordinatorLayout就像一个桥梁,连接不同的观点,并使用行为处理各个之子视图间的通信

在xml布局文件中进行设置

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; android.support.design.widget.CoordinatorLayout   ,,xmlns: android=癶ttp://schemas.android.com/apk/res/android"   android:才能layout_width=癿atch_parent"   android:才能layout_height=癿atch_parent"   xmlns:才能应用=癶ttp://schemas.android.com/apk/res-auto"比;      & lt;才能!——包裹头部查看实现滑动效果——比;   & lt; android.support.design.widget.AppBarLayout才能   ,,,android: layout_width=癿atch_parent"   ,,,android: layout_height=皐rap_content"   ,,,android:主题=癅style/ThemeOverlay.AppCompat"比;      ,,,& lt; !——标题栏——比;   ,,,& lt; android.support.v7.widget.Toolbar   ,,,,,android: id=癅 + id/tb_toolbar"   ,,,,,android: layout_width=癿atch_parent"   ,,,,,android: layout_height=皐rap_content"   ,,,,,的应用:navigationIcon=癅android:可拉的/ic_dialog_email"   ,,,,,的应用:title=癟itle"   ,,,,,的应用:layout_scrollFlags=皊croll",/比;      ,,,& lt; !——选项卡导航栏——比;   ,,,& lt; android.support.design.widget.TabLayout   ,,,,,android: id=癅 + id/tab_layout"   ,,,,,android: layout_width=癿atch_parent"   ,,,,,android: layout_height=皐rap_content"   ,,,,,的应用:tabMode=癴ixed"   ,,,,,的应用:layout_scrollFlags=肮龆瘄 enterAlways"/比;      & lt;才能/android.support.design.widget.AppBarLayout>      & lt; android.support.v4.view.ViewPager才能   ,,,android: id=癅 + id/vp_tab_pager"   ,,,android: layout_width=癿atch_parent"   ,,,android: layout_height=癿atch_parent"   ,,,的应用:layout_behavior=癅string/appbar_scrolling_view_behavior"/比;      & lt;/android.support.design.widget.CoordinatorLayout>

首先给被AppBarLayout包裹的视图中添加应用:layout_scrollFlags属性,并设置相应的值

<强> ?滚动:让该视图可以滚动出屏幕

<强> ?enterAlways: 强不需要滚动到顶部,只要有向上滚动的事件就显示该视图

<强> ?enterAlwaysCollapsed: 定义该视图何时进入,如果你定义了一个最小高度minHeight,同时enterAlways也定义了,那么该视图将会在到达这个最小高度的时候开始慢慢显示,直到滚动组件滚动到顶部时再完全展开

<强> ?exitUntilCollapsed: 定义该视图何时退出,如果你定义了一个最小高度minHeight,那么这个视图将在滚动到达这个最小高度时消失

如果不设置layout_scrollFlags属性,那么该视图就会固定在屏幕上

enterAlwaysCollapsed和exitUntilCollapsed属性主要是在搭配CollapsingToolbarLayout时使用的

<强>注意:布局的时候,AppBarLayout里面滚动的观点要放在固定的视图上面

然后在CoordinatorLayout布局里放一个可以滚动的视图(不支持列表视图),这里使用:viewpage里放置一个RecylerView,为该:viewpage设置应用:layout_behavior属性,这里可直接使用Android自带的值

应用:layout_behavior=癅string/appbar_scrolling_view_behavior”

设置该值的作用相当于告诉CoordinatorLayout,此视图是一个滚动控件,如果该视图滚动了,那么设置了layout_scrollFlags属性的控件就可以响应滚动事件了

<强>想实现效果一,总结

使用CoordinatorLayout作为根布局

使用AppBarLayout包裹头部,并给需要滚动的视图设置应用:layout_scrollFlags属性

给滑动组件设置应用:layout_behavior属性

<>强效果二:

使用到CollapsingToolbarLayout布的局,我们在效果一的基础上更改布局代码

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; android.support.design.widget.CoordinatorLayout   ,,xmlns: android=癶ttp://schemas.android.com/apk/res/android"   xmlns:才能应用=癶ttp://schemas.android.com/apk/res-auto"   android:才能layout_width=癿atch_parent"   android:才能layout_height=癿atch_parent"比;      & lt; android.support.design.widget.AppBarLayout才能   ,,,android: layout_width=癿atch_parent"   ,,,android: layout_height=?00 dp"   ,,,android: fitsSystemWindows=皌rue"   ,,,android:主题=癅style/ThemeOverlay.AppCompat.Dark.ActionBar"比;      ,,,& lt; android.support.design.widget.CollapsingToolbarLayout   ,,,,,android: id=癅 + id/collapsing_toolbar"   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Android应用中利用CoordinatorLayout实现一个标题滚动效果