花了一天的时间来研究这个ConvenientBanner图片轮播的源码,现在来写下自己对该控件的心得。(本人是小白,学习android三个多月,很多东西都不知道,所以本文只是自己对该源码的一些心得。)
首先,需要去下载该控件的源码。读源码这是一个必须要经历的过程。这里有源码下载的地址https://github.com/saiwu-bigkoo/Android-ConvenientBanner
读源码,首先是将该程序运行起来,看看效果,看别人的程序,也是需要将程序跑起来,这样给人直观的感受,自己也知道自己将要去做什么。
接着去开始读源码。开始从控件开始,逐渐向下,但是后面的讲解时从后面开始。看别人的程序时,首先从整体出发,首先去看看gradle中所引用的jar,然后是熟悉那些自己不知道的,暂时不需要去非常熟悉,了解大概就可以了。然后看androidManifest.xml中有哪些信息,然后从主入口中进入,接下来就是从方法中跳来跳去,需要去记住这些方法的执行顺序,现在暂时不去考虑具体的内容,整体把握该程序。
ConvenientBanner控件中
从这写包名中理解了大概,适配器,监听事件和ViewPager。然后再从ConVenientBanner文件入手,逐渐深入。第一遍没有看懂不要紧,我是看第二遍才看懂的。看完源码后,就会恍然大悟,哦,原来是这样。首先我们使用过ViewPager,图片就可以进行滑动了,但是是需要我们手动的滑动,图片才能转到下一页,如何使它自动的完成呢,让它在一个线程中运行,每次都让其页面加1,当到了最后一个页面后,在回到第一个控件。在将线程延时执行。那么就实现了图片的轮播效果。该控件就是这样实现的。
那么现在思路就清晰了,该控件中修改了一下ViewPager,同时ViewPager需要一个适配器,那么也要对PageAdapter实现。我们对ViewPager和PageAdapter都和熟悉,PageAdapter就实现它的四个方法,ViewPager设置适配器。ConVenientBanner就是一个组合控件了,该类中一个核心的代码就是开启线程。这样一来,整个控件就简化成几个核心的方法了。
那么先从PageAdapter开始(读源码的时候是从ConVenientBanner向下走的,进过我们分析以后,就知道,ConVenientBanner就组合了ViewPager,和一些对外id方法,那么现在就从后向前推),PageAdapter有几个核心的方法。其中有四个方法大家很熟悉,getCount(),isViewF