IncompleteScreenBanner
一个不显示全屏图的banner无限自动轮播例子,利用recycleview实现类似viewpager效果
背景
其实程序猿要开发一个demo的背景,都!一!样!
说什么为了社会进步,为了挑战自我,都!是!瞎!扯!蛋!
无非就是一个背景,产品经理要求实现该功能!!!
废话小说,先上gif为敬!
demo功能
正常来说,banner无限轮播,都是全屏的图片去轮播,现在产品要求一张图不布满全屏,让下一个图露出一点。。。
(虽然我看不太懂这个设计美感)
步骤
前期准备
找了一下,目测没有现成的轮子,但看了一位大佬写的无限轮播图有感,我就想了一下,卧槽,我可以在这基础上改一波呀。
在这里真诚的感谢一波这位大哥Renny
https://github.com/ren93/RecyclerBanner.git
(如有雷同纯属巧合)
实现原理
- 利用recycleview做一个类似viewpager的效果
- 通过设置adapter的itemCount为Integer.MAX_VALUE,再把默认的第一个item设置到*10000的位置去,曲线实现无限轮播功能
- 继承工具类SnapHelper,实现拖动itemView有viewpager的feel而且自动适配位置回弹
貌似看起来也不难吧
这是一只发春的狗重点
其中,继承SnapHelper是重点,这是一个用于辅助RecyclerView在滚动结束时将Item对齐到某个位置,而官方中也有两个子类LinearSnapHelper、PagerSnapHelper,都能让item滑动后自动停留在recycleview的中间。很遗憾,这两个官方的子类不满足我们的功能需求,但是!我可以复制出来改它一波呀!
哥就是自信改完了,就依赖关联上recycleview,完美!
new MyCustomSnapHelper().attachToRecyclerView(mRecyclerView);
结束
更多详情,请前往我的github去撸,代码里面都有清楚的注释
https://github.com/xiaofuchen/IncompleteScreenBanner
顺手给Stars是中华人民的美德
谢谢
网友评论