轮播图无限轮播的实现

这两天面试,回来收到一个要求要实现轮播图的无限轮播效果。

实现这个效果的方法很多种也很简单,最常用的一直前后各加一个ImageView,滑到这个ImageView的时候跳转到第一个图片或者最后一个图片,实现一个错觉。

对于上面这个方法我觉得功能上是实现了,但是还可以具体做些内存上的优化。我在网上搜集了一些资料,比较感兴趣的是基于三张或者两张ImageView的重用。之前尝试了三张ImageView的重用,效果还可以,中间有很多小坑,自己给填平了。至于两张ImageView的重用。。。这个网上好像有人做出来了,但我思路可能不对,这个暂时没实现。

那么说一下三张ImageView的重用思路。用户在操作轮播图的时候,不外乎三个状态,不动、向左滑、向右滑。我们完全可以实现一个效果,左中右三个控件,控件不变化只变化控件上面的内容,这样就达到了重用的效果。

具体流程:

1.展示给用户的始终是中间的一个ImageView;

2.用户向左或向右滑动结束后,重新为ImageView赋值,设置ScrollView的偏移,把中间的ImageView重新拉回中间位置;


这样说起来似乎很简单,但中间的逻辑也是比较麻烦的。写了个Demo放在了cocoachina,有兴趣的同学可以下载看一下。

Demo地址:http://code.cocoachina.com/view/130080

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,018评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • 大二军训,也是一种新的体验。在班级同学已经熟悉了一年之后,军训可能会更加有趣,无论是军训间,还是娱乐间。 ...
    咖啡馆的青春时代阅读 236评论 0 0
  • EditText去掉下划线和边框 将EditText的backgroud属性值设为@null 设置EditText...
    dayang阅读 3,225评论 2 3
  • 一个人就是一座孤岛。 光影中明媚,风雨中飘摇。 无人知晓。却以为, 屹立,看似桀骜。 想得太多,懂得太少。 仓皇今...
    小墨兮阅读 862评论 0 1