美文网首页
Android Meterial Design 之 Coordi

Android Meterial Design 之 Coordi

作者: I呀IT小胖 | 来源:发表于2016-12-09 01:09 被阅读0次

    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当中我实现了很多不同的效果,用法有很多,实现的效果有非常多种,大家一起学习,共同成长.

    相关文章

      网友评论

          本文标题:Android Meterial Design 之 Coordi

          本文链接:https://www.haomeiwen.com/subject/cdysmttx.html