這四個layout都是Android design中出現的控件,所以要想使用首先要在gradle中配置依賴,其中RecyclerView使用的第三方的庫,配置如下:
compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.android.support:cardview-v7:25.1.0' compile 'com.android.support:design:25.1.0'demo中用到了cardview所以也有cardview-v7的包,要想實現這一功能主要的還是佈局,佈局寫好後其他的就該怎麼寫就怎麼寫了;
佈局如下:
<?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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.xlistviewdemo.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffff"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <com.xlistviewdemo.view.NoScrollGridView android:id="@+id/scroll_gridview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:background="@color/white" android:numColumns="5" android:layout_margin="10dp" android:verticalSpacing="10dp" android:scaleType="centerCrop" app:layout_collapseMode="parallax" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xrecyclerview_main" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout>最外層的CoordinatorLayout繼承於ViewGroup,類似於 FrameLayout,功能主要是作爲頂層佈局調度協調子佈局,通過設置子佈局的 Behavior來協調子佈局
AppBarLayout控制子視圖,可以看到CollapsingToobarLayout裏面有app:layout_scrollFlags這一屬性,這一屬性是用來控制滑動試圖效果的,其有四個字:
- scroll: 所有想滾動出屏幕的view都需要設置這個flag, 沒有設置這個flag的view將被固定在屏幕頂部。例如,XRecyclerView沒有設置這個值,將會停留在屏幕頂部。
- enterAlways: 設置這個flag時,向下的滾動都會導致該view變爲可見,啓用快速“返回模式”。
- enterAlwaysCollapsed: 當你的視圖已經設置minHeight屬性又使用此標誌時,你的視圖只能已最小高度進入,只有當滾動視圖到達頂部時才擴大到完整高度。
- exitUntilCollapsed: 滾動退出屏幕,最後摺疊在頂端。
1. CoordinatorLayout作爲佈局的父佈局容器。
2. 給需要滑動的組件設置 app:layout_scrollFlags=”scroll|enterAlways” 屬性。
3. 給滑動的組件設置app:layout_behavior屬性
CollapsingToolbarLayout實現Toolbar的摺疊效果。CollapsingToolbarLayout的子視圖類似與LinearLayout垂直方向排放。其屬性有很多,我就不一一介紹了,想了解的可以看下官方文檔:https://developer.android.google.cn/reference/android/support/design/widget/CollapsingToolbarLayout.html
這個demo實現的是隨着XRecyclerView上滑,GridView摺疊,所以給XRecyclerView設置了layout_behavior,想要實現摺疊效果,就要使用Coordinatorlayout作爲父佈局,想要獲取更好的效果,可以自定義Behavior實現。