Android中MaterialDesign使用 (四)CoordinatorLayout的初识
Android中MaterialDesign使用 (一)TabLayout+Fragment实现顶部选项卡
Android中MaterialDesign使用 (二)Navigation+Drawerlayout+Toolbar实现简单侧滑菜单
Android中MaterialDesign使用 (三)SnackBar的使用
在上一节的SnackBar中已经提到CoordinatorLayout的基本使用,本节将使用该布局配合AppBarLayout和TabLayout实现如下的效果:
同样使用Tablayout,首先需要在项目中加入Design包
dependencies { compile 'com.android.support:design:24.1.1' }
先看主布局的main.xml
<?xml version="1.0" encoding="utf-8"?>
布局的大概框架是:
/AppBarLayout>
其中AppBarLayout是一个实现了很多材料设计特性的垂直的LinearLayout,它能响应滑动事件。但是必须在它的子view上设置app:layout_scrollFlags属性或者是在代码中调用setScrollFlags()设置这个属性。
layout_scrollFlags的五个基本属性:
scroll: | Child View 伴随着滚动事件而滚出或滚进屏幕。注意两点:第一点,如果使用了其他值,必定要使用这个值才能起作用;第二点:如果在这个child View前面的任何其他Child View没有设置这个值,那么这个Child View的设置将失去作用。 |
xml示例代码:
app:layout_scrollFlags="scroll"
scroll对应的效果图:
enterAlways: | 快速返回模式。其实就是向下滚动时Scrolling View和Child View之间的滚动优先级问题。对比scroll和scroll丨enterAlways 设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动的一方已经全部滚进屏幕之后,另一方才开始滚动。 |
xml示例代码:
app:layout_scrollFlags="scroll|enterAlways"
scroll丨enterAlways对应的效果图:
enterAlwaysCollapsed: | enterAlways的附加值。这里涉及到Child View的高度和最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。 |
xml示例代码:
...android:layout_height="@dimen/dp_200"android:minHeight="@dimen/dp_56"...app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"...
scroll丨enterAlways|enterAlwaysCollapsed对应的效果图:
exitUntilCollapsed: | 这里也涉及到最小高度。发生向上滚动事件时,Child View向上滚动退出直至最小高度,然后Scrolling View开始滚动。也就是,Child View不会完全退出屏幕。 |
xml示例代码:
...android:layout_height="@dimen/dp_200"android:minHeight="@dimen/dp_56"...app:layout_scrollFlags="scroll|exitUntilCollapsed"...
scroll|exitUntilCollapsed对应的效果图:
snap: | 简单理解,就是Child View滚动比例的一个吸附效果。也就是说,Child View不会存在局部显示的情况,滚动Child View的部分高度,当我们松开手指时,Child View要么向上全部滚出屏幕,要么向下全部滚进屏幕,有点类似ViewPager的左右滑动。 |
xml示例代码:
...android:layout_height="@dimen/dp_200"...app:layout_scrollFlags="scroll|snap"...
scroll|snap对应的效果图:
layout_scrollFlags的五个属性的都是一些细微的差别,仔细观察效果图就会看出来的!
这个类的特性强烈依赖于它是否是一个CoordinatorLayout的直接子view,如果不是,那么它的很多特性不能够使用。AppBarLayout需要一个具有滑动属性的兄弟节点view(比如:ScrollView,ListView,RecyclerView之类),并且在这个兄弟节点View中指定behavior属性为AppBarLayout.ScrollingViewBehavior的类实例,可以使用一个内置的string表示这个默认的实例@string/appbar_scrolling_view_behavior.
behavior这个属性在后面的博客中会提到.这里知道有这样一个属性就行了
后面的效果图中ViewPager与TabLayout之间的绑定在前面的帖子已经说明了:
请参考:MaterialDesign使用 (一) TabLyout的使用:TabLayout+Fragment实现顶部选项卡
ViewPager中的每个页面都添加了一个RecyclerView来实现; 那里的代码比较熟悉就不贴上来了!
注意:要做成这样的效果下面的布局必须是一个可以支持上下滑动的布局!!!
- Android(安卓)SeekBar的使用
- 三位一体!Android(安卓)Ice Cream Sandwich可能创造全新设备使用
- 跑马灯(横向滚动)
- Android(安卓)依赖报错Version 28 (intended for Android(安卓)P
- android gallery的使用
- Android(安卓)Hook学习之ptrace函数的使用
- [摘]android:windowSoftInputMode属性使用
- Android(安卓)WebView相关属性
- Android(安卓)SurfaceView 的基本应用
随机推荐
-
Android--Selector、shape详解(整理)
-
Android(安卓)神兵利器Dagger2使用详解(二
-
Listview
-
html5 开发android
-
Android的应用程序结构分析:HelloActivity
-
android 布局文件中xmlns:android="http:
-
android 属性
-
android横竖屏切换的一点感想
-
Android架构分析之Android驱动程序开发
-
Android访问资源与属性之 ? , @