在做定时轮播图时,当图片轮播到最后一张图片时候,让它跳回第一张图片,有两种方式
假设图片总共5张,轮播到最后一张,itemID=4
1.如果预加载的下一张的itemID为0
@Override
public int getCount() {
<pre name="code" class="java">//设置数据适配器的item总数为<span style="font-family: Arial, Helvetica, sans-serif;">5个。</span>
return
picList.size();}
<span style="font-size:24px;">currentPosition = (currentPosition+1)%picList.size();//当前(itemID+1)%<span style="font-family: Arial, Helvetica, sans-serif;">item总数</span></span>
这种方式产生的轮播效果为 itemID 4图>itemID 3图>itemID 2图>itemID 1图>itemID 0图
虽然也是一瞬间的跳转,但其间却轮播了4张图。而不是从itemID 4图>itemID 0图
2.如果预加载的下一张的itemID为5
@Override
public int getCount() {
//设置数据适配器的item总数为<span style="font-family: Arial, Helvetica, sans-serif;">Integer.MAX_VALUE个,相当于播不完了。</span>
return Integer.MAX_VALUE;
}
<span style="font-size:24px;">currentPosition = currentPosition+1;<span style="font-family: Arial, Helvetica, sans-serif;">//当前itemID直接在当前页</span><span style="font-family: Arial, Helvetica, sans-serif;">itemID+1</span></span>
这种方式产生的轮播效果为 itemID 4图>itemID 5图,但是图片下标通过picList.get(position%picList.size())的转换,实际轮播的还是itemID 0图的图。
因为5%5=0;
这样这种方式比第一种方式就会流畅多。