自定义LayoutManager实现弧形、滑动、画廊效果

来源:http://www.sh-fengwen.com 作者:鲜果干果 人气:66 发布时间:2019-09-07
摘要:github地址 我们都知道RecyclerView可以通过将LayoutManager设置为StaggeredGridLayoutManager来实现瀑布流的效果。默认的还有LinearLayoutManager用于实现线性布局,GridLayoutManager用于实现网格布局。 最

github地址

我们都知道RecyclerView可以通过将LayoutManager设置为StaggeredGridLayoutManager来实现瀑布流的效果。默认的还有LinearLayoutManager用于实现线性布局,GridLayoutManager用于实现网格布局。

最近浏览github,发现了一个特别炫酷的效果,可以用来让你的APP逼格更高,特此和大家分享一下。

然而RecyclerView可以做的不仅限于此,通过重写LayoutManager我们可以按自己的意愿实现更为复杂的效果。而且将控件与其显示效果解耦之后我们就可以动态的改变其显示效果。

效果图

设想有这么一个界面,以列表形式展示了一系列的数据,点击一个按钮后以网格形势显示另一组数据。传统的做法可能是在同一布局下设置了一个listview和一个gridview然后通过按钮点击事件切换他们的visiblity属性。而如果使用recyclerview的话你只需通过setAdapter方法改变数据,setLayoutManager方法改变样式即可,这样不仅简化了布局也实现了逻辑上的简洁。

图片 1自定义LayoutManager.gif

下面我们就来介绍怎么通过重写一个LayoutManager来实现一个弧形的recycylerview以及另一个会随着滚动在指定位置缩放的recyclerview。并实现类似viewpager的回弹效果。

自定义customLayoutManager会帮你处理一部分放置、回收、以及滚动的逻辑,你只需关注你想随着滚动改变的属性,他是如何改变的,以及达到哪个值时会被回收即可。所以我们只需要新建一个自己的layoutManager并继承CustomLayoutManager,在这里先提一下,CustomLayoutManager有几个默认的属性是你可以直接使用的。

图片 2弧形 图片 3缩放

protected Context context;//子view的宽度 protected int mDecoratedChildWidth;//子view的高度protected int mDecoratedChildHeight;//子view距离屏幕最左的偏移,也可以理解为第一个子view在初始状态下距离屏幕左侧的位移,默认居中protected int startLeft; //子view距离屏幕顶部的位移,默认居中protected int startTop; //主要随滑动所改变的属性的偏移量,考虑到view的属性有int,有float所以这边统一用float表示偏移protected float offset; //相邻两个子view间,主要随滑动而改变的属性的差值(比如随滑动改变的是view的角度,那么这个值就是各个view之间的角度间隔)protected float interval;

项目地址 Github

本文由美高梅游戏平台网站发布于鲜果干果,转载请注明出处:自定义LayoutManager实现弧形、滑动、画廊效果

关键词:

最火资讯