实现图片轮播的主要方法是:
viewPager.setcunrrentItem();
viewPager.setCurrentItem((viewPager.getCurrentItem()+1)%viewPager.getAdapter().getCount());
通过求余的算法即可以完成 图片的轮播。
那么定时的通知图片切换播放就成了重点,我们这里采用:
通过查看源码,我们需要知道:handlercallback方式分发消息,本质上是如果没有runnable对象则用hanldermassege,如果有则用run方法处理
没有子线程的事。(都是运行在主线程的)runOnUiThread同样也是用handlercallback方式发消息的。
Handler.postDelayed的方式 开启轮播:
handler=new Handler();
//利用handler发送延时消息这个线程无关,完成的是runnbale接口中的run方法
//延时后执行一次自己在方法中不断的执行自己
handler.postDelayed(new Runnable() {
@Override
public void run() {
//ListView获取调用四个方法的方式通过控件获取Adapter调用方法
viewPager.setCurrentItem((viewPager.getCurrentItem()+1)%viewPager.getAdapter().getCount());
handler.postDelayed(this,1000);
//重新执行一遍自己。
}
}, 1000);
通过下面这个方法将消息和回调移除的方式停止轮播:
handler.removeCallbacksAndMessages(null);
最后还要为pageAdapter集合中的view设置点击和触摸事件在adapter的instantiateItem方法中设置即可,注意按下要停止轮播抬起要开启轮播!
viewPager强制刷新:
viewPager所在的Adapter下 重写这个方法,因为所在页面不变,导致的 此页面不更新,,更改这个方法的返回值,即可重绘
public int getItemPosition(Object object) {
Log.d("设置","position");
return POSITION_NONE;
}