1.简介 :
- CoordinatorLayout 顾名思义 布局协调者, 有非常高的定制度,开发者可以根据不同的需求实现各式各样的view的联动效果,其核心是behavior
- AppBarLayout 一般用作用定制顶部栏,继承自LinearLayout ,默认为垂直布局,可根据手势的滑动,其核心是 layout_scrollFlags 或者在代码中调用 setScrollFlags()方法 来实现一些效果(需要跟CoordinatorLayout 使用)
- Toolbar 替代ActionBar的新控件,使用比ActionBar更加方便 使用需要隐藏ActionBar;
- NestedScrollView 继承的是FrameLayout.当ScrollView 需要嵌套时 用来替代ScrollView 的,相信大家都知道..ScrollView 嵌套时有多坑..ListView简直惨不忍睹! 它可以在嵌套当中不与别的可滑动视图有冲突.
2.使用:
- 需要将CoordinatorLayout 作为根布局来协调子view之间的联动
-
behavior
<blockquote> 作为CoordinatorLayout 的核心,它承载了CoordinatorLayout 当中的view的滑动联动的调节,CoordinatorLayout 布局和AppBarLayout 控件是没有滑动功能的,那么他们怎么实现辣么多的滑动效果呢?所以就需要behavior的组织联动,使可以滑动的view与AppBarLayout绑定起来,在可以滚动的视图滑动时,使AppBarLayout (不可滚动视图)做出相应的处理, 实现滑动效果,google默认帮我们实现了联动效果 只需要在可滚动视图上加上下面代码,即可联动,behavior可以自定义(学习中,有成果会记录下来)
app:layout_behavior="@string/appbar_scrolling_view_behavior
</blockquote> -
NestedScrollView :
- 使用非常简单 如下代码
<android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.widget.NestedScrollView>
- **AppBarLayout :**
<blockquote> AppBarLayout 的子View 通过ScrollFlags来执行指定动作,可以设置4种动作 注: 默认是不滚动,在什么位置就是什么位置,可以设置多种flag 使用 | 隔开</blockquote>
<ul>
<li>scroll</li>会根据滚动而滚出屏幕,所有需要在滚动时滚出屏幕的都需要设置
<li>enterAlways</li>快速返回模式。 向上滚动 设置次flag的view隐藏,向下滚动view显示
<li>enterAlwaysCollapsed</li>当你的视图已经设置minHeight属性又使用此标志时,当view向下滑动的时候会显示最小的高度,只有当滚动视图到达顶部时才显示到view的完整高度。
<li>exitUntilCollapsed</li>在滚动过程中,会先将view缩小到最小高度,在达到此view最小高度之前,整个视图中的滑动事件是不生效的,达到之后,才会滑动视图.
<ul>
<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/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/barLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
**app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" **
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="?attr/colorPrimary" />
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>```
所以最终的布局是
<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/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/barLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="?attr/colorPrimary" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--内容子布局-->
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
3.总结
有了这些个控件,实现起很多好看的效果就显得非常容易
本文只是说一下普通用法,在我公司的app当中我实现了很多不同的效果,用法有很多,实现的效果有非常多种,大家一起学习,共同成长.
网友评论