CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能: 1、作为顶层布局 2、调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果...CoordinatorLayout通过设置子View的 Behaviors来调度子View。...使用CoordinatorLayout需要在Gradle加入Support Design Library: <code class="language-java hljs has-numbering"...效果显示,视图滚动时,Toolbar会隐藏,这个效果是Android Support Library里面,新增的CoordinatorLayout, AppBarLayout实现的。...CoordinatorLayout包含的子视图中带有滚动属性的View需要设置app:layout_behavior属性。例如,示例中Viewpager设置了此属性。
CoordinatorLayout是在desgin包下的一个用于协调子控件的组件,可以解决绝大部分滑动联动问题,使用方法也很简单,为观察者注册一个Behavior,在Behavior指定要监听的控件(可以多个...> public class MyBehavior extends CoordinatorLayout.Behavior { /** * 注意:一定要写这个构造方法,因为是CoordinatorLayout...(R.id.recyclerview); recyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL...(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.MATCH_PARENT)); textView.setTextSize
最初想用 CoordinatorLayout 加 RecyclerView,但效果不好直接用,或者用 NestedScrollView 与 RecyclerView 组合使用。...是否消费 RecyclerView 发过来的距离,怎么试都不行,最终还是尝试用 CoordinatorLayout 和 RecyclerView 组合。...= null, defStyleAttr: Int = 0 ) : CoordinatorLayout(context, attrs, defStyleAttr) { override fun...的滑动事件,当要吸顶的 Item 滑到要隐藏的时候,让外层 CoordinatorLayout 消费滑动距离。...object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView
当我们引入RecyclerView的时候,恰好是压死骆驼的最后一根稻草,故不得不采用其他方案来代替RecyclerView 和 CollapsingToolbarLayout实现的折叠效果。...> 上述布局需要注意的是: 必须采用CoordinatorLayout作为外层包裹,至于原因是由于使用Behavior需要。...题外话:直接使用RecyclerView折叠动画不平滑问题 在stackoverflow上找到如下解决方案,大致是由于google官方留的Behavior坑。...&& velocityY < 0) { final RecyclerView recyclerView = (RecyclerView) target;...final View firstChild = recyclerView.getChildAt(0); final int childAdapterPosition = recyclerView.getChildAdapterPosition
recyclerView; private FloatingActionButton floatingActionButton; private CoordinatorLayout coordinatorLayout...) findViewById(R.id.floatingActionButton); recyclerView = (RecyclerView) findViewById(R.id.rvToDoList...在RecyclerView或者任意支持嵌套滚动的view比如NestedScrollView上添加app:layout_behavior。...发现RecyclerView中定义了这个属性,它会搜索自己所包含的其他view,看看是否有view与这个behavior相关联。...RecyclerView的任意滚动事件都将触发AppBarLayout或者AppBarLayout里面view的改变。
一般FloatingActionButton 结合 CoordinatorLayout 使用,即可实现悬浮在任意控件的任意位置。...recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); /** * dy:Y轴方向的增量...接下来给出RecyclerView的Adapter public class FabRecyclerAdapter extends RecyclerView.Adapter { private...,该属性指定使用封装的CoordinatorLayout.Behavior即可。...1)封装CoordinatorLayout.Behavior public class FabBehavior extends CoordinatorLayout.Behavior { public
操作步骤 要让这个过程有动画效果,你需要利用好CoordinatorLayout,CoordinatorLayout帮助协调定义在里面的view之间的动画。...用RecyclerView替换ListViews 目前,你需要用RecyclerView来替换ListView。就如这节所描述的,RecyclerView是ListView的继承者。...你可以查看这篇指南,它帮助你过渡到RecyclerView .support.v7.widget.RecyclerView android:id="@+id/lvToDoList"...> 同时你还必须把RecyclerView升级到v22版本(我在这里使用的是 23.1.1),之前的v21不支持与CoordinatorLayout一起工作,确保你的build.gradle 文件是这样的...= (RecyclerView) findViewById(R.id.rvToDoList); // 线性布局 recyclerView.setLayoutManager
折叠效果 大家可能有看过 RecyclerView 和 AppBarLayout 联动的效果,这种效果需要给 RecyclerView 配置 Behavior: app:layout_behavior=...; } @Override protected void layoutChild(CoordinatorLayout parent, RecyclerView child, int...@Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, final MaterialCalendarView...所以可以这样触发: recyclerView.startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL, TYPE_TOUCH); recyclerView.dispatchNestedPreScroll...) { canAutoScroll = false; RecyclerView recyclerView = (RecyclerView) target;
刚复习完View事件分发、滑动冲突--《Android开发艺术探索》阅读笔记——第三章part2,接着想起前段时间项目中首页重构,遇到的嵌套滑动问题,以及CoordinatorLayout 和 AppbarLayout...相对的, 向下滑动内部RecyclerView时,如果还能滑就滑内部RecyclerView;如果已经滑到顶部就让parent去滑动外部RecyclerView。...和 AppbarLayout 联动原理 我以前分享过CoordinatorLayout的使用:《Android进阶之光》Design Support Library常用控件(二):CoordinatorLayout...《CoordinatorLayout 和 AppbarLayout 联动原理解析 》 总结二:联动原理,手指滑动recyclerView时,由于和CoordinatorLayout形成前套滑动,所以事件交给...CoordinatorLayout处理,在CoordinatorLayout的OnTouchEvent中,处理方式就是总结一了,即交给AppBarLayout滑动了。
第二种是额外创建一个嵌入 CoordinatorLayout 中的 RecyclerView。...还要注意的是 RecyclerView 应该使用 wrap_content 而不是 match_parent,这是一个新修改,为的是让底部栏只占用必要的而不是全部空间: 下一步是创建 RecyclerView。...RecyclerView recyclerView = (RecyclerView) findViewById(R.id.design_bottom_sheet); // Create your items...第三方滚动和视差效果库 除了使用上述的 CoordinatorLayout,还可以查看这些流行的第三方库来实现 ScrollView, ListView, ViewPager 和RecyclerView
1.1:创建布局文件design_main_layout.xml 这个布局文件非常简单,只有一个CoordinatorLayout和TextView,但是CoordinatorLayout是重点,滑动控件什么的都和他有关...(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes...* 滚动监听*/ @Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, View child...(myAdapter); CoordinatorLayout.LayoutParams cLayout=(CoordinatorLayout.LayoutParams) img.getLayoutParams...RecyclerView中 app:layout_behavior="@string/appbar_scrolling_view_behavior"方法是必须写的,因为coordinatorlayout
如果你有什么好的应用效果可以和我分享一下: 3.1 FloatingActionButton和RecyclerView的联动 ?...这里存在一个Behavior和CoordinatorLayout的概念,会在后期讲解,这里直接贴出相应的代码了!...public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged...(recyclerView, newState); } @Override public void onScrolled(RecyclerView...recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy);
(1)重写一个viewpager继承系统的ViewPager,至于怎么重写的我不太记得了 (2)重写RecyclerView继承系统的RecyclerView,因为我记得会出现高度的原因导致RecyclerView...其实我之前写过一篇文章能解决这种情况,那就是使用CoordinatorLayout,使用CoordinatorLayout能解决这种情况。...但是,我文章里也说过了,CoordinatorLayout有BUG,使用起来卡得像坨屎一样,不管你能不能忍,反正我是不能忍,所以我不会使用CoordinatorLayout。...不用CoordinatorLayout还有以下三种解决办法: (1)使用github上面开源的那个自定义CoordinatorLayout来解决,叫什么我忘了。...你需要在这些方法里面自己写上处理滑动冲突的逻辑,你可以参考RecyclerView的去写,也可以在网上找,网上有一些大神是真的有介绍,但也有一些人要么瞎JB抄别人的又不抄完,要么只会说用CoordinatorLayout
的 时候,RecyclerView 并不会向上移动(RecyclerView 的滑动事件交给 外部的容器处理,被被全部消费掉了),而是整个布局(指 Header + Tab +ViewPager)会向上偏移...当 Tab 滑动到顶部的时候,我们向上滑动 ViewPager 里面的 RecyclerView 的时候,RecyclerView 可以正常向上滑动,即此时外部容器没有拦截滑动事件。...在页面状态为 close 的时候,不消耗 RecyclerView 的 滑动事件。...也是 Scrolling Child (实现了 NestedScrollingChild 接口),RecyclerView 在开始滑动的 时候会先调用 CoordinatorLayout 的 startNestedScroll...isClosed(child); } 拦截事件之后,我们需要在 RecyclerView 滑动之前消耗事件,并且移动 Header,让其向上偏移。
com.google.android.material.navigation.NavigationView:1.0.0' constraintlayout 约束布局 implementation 'androidx.constraintlayout:constraintlayout:1.1.2' coordinatorlayout...布局 implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0' design ui 库 implementation 'com.google.android.material...'com.google.android.material.snackbar.Snackbar:1.0.0-rc01'``` RecycleView implementation 'androidx.recyclerview...:recyclerview:1.0.0' TabLayout implementation 'com.google.android.material:material:1.0.0' CardView
CoordinatorLayout各种特效 接下来是介绍CoordinatorLayout常用的一些效果 CoordinatorLayout实现浮动操作按钮效果 效果如下: 只要使用CoordinatorLayout...在RecyclerView或者任意支持嵌套滚动的view比如NestedScrollView上添加app:layout_behavior。...发现RecyclerView中定义了这个属性,它会搜索自己所包含的其他view,看看是否有view与这个behavior相关联。...AppBarLayout.ScrollingViewBehavior描述了RecyclerView与AppBarLayout之间的依赖关系。...RecyclerView的任意滚动事件都将触发AppBarLayout或者AppBarLayout里面view的改变。
TabLayout implementation'com.google.android.material:material:1.0.0' RecycleView implementation'androidx.recyclerview...:recyclerview:1.0.0' Snackbar implementation'com.google.android.material.snackbar.Snackbar:1.0.0-rc01...implementation'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' viewpager implementation 'androidx.viewpager:viewpager:1.0.0' coordinatorlayout...implementation'androidx.coordinatorlayout:coordinatorlayout:1.0.0' design ui 库 implementation'com.google.android.material
CoordinatorLayout是design包中的控件,作为外层控件可以协调子控件从而实现炫酷的效果等。...> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/...bottom|end" app:srcCompat="@android:drawable/ic_dialog_email"/> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/...app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout
库(主页面的RecyclerView需要); 2、布局文件的根布局采用android.support.design.widget.CoordinatorLayout,因为design库的动态效果都依赖于该控件...下面是AppBarLayout结合RecyclerView实现的工具栏向上滚动效果截图: ?...下面是AppBarLayout结合RecyclerView的布局文件代码例子: <android.support.design.widget.CoordinatorLayout xmlns:android...这还得从CoordinatorLayout说起,查看CoordinatorLayout的源代码,发现它实现了接口NestedScrollingParent,奥秘就在其中,该接口定义了嵌套滚动的父辈行为,...: RecyclerView : 使用名称android.support.v7.widget.RecyclerView NestedScrollView : 使用名称android.support.v4
android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.coordinatorlayout.widget.CoordinatorLayout...; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView...= null) { //获取根部局的LayoutParams对象 CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams...recyclerView = view.findViewById(R.id.fragment_share_recyclerView); recyclerView.setLayoutManager(new...= null) { //获取根部局的LayoutParams对象 CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams
领取专属 10元无门槛券
手把手带您无忧上云