今天在做项目的时候,有一个viewpgaer展示图片的页面,第一反应是去网上查找,后来看了好多文章,其实也就是那么两三篇文章,其他的都是转载来转载去的,主要就是运用线程来进行无限循环进行实现的操作,个人感觉并不需要运用到线程,尤其是你写了死循环后,线程的回收就是个问题,所以就寻思着自己实现功能好了。
先看效果图吧:
实现思路:
在项目里比较重要的两个东西,一个是handler的使用,一个是监听viewpager的触摸事件,具体的思路是设定一个bool值来监听是否触摸viewpager,我们都知道你如果手动滑动,肯定是要触摸的,我们在触摸的时候把isTouch设定为true,这时候我们手动的把handler里面的消息全部清除掉,当action_up的时候,我们在重新向handler里面发送信息,在handler中进行自动滑动的操作,自动滑动的时间间隔是3秒,最后代码如下:
hanlder类
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
//自动循环
if (!isTouch)
{
int item=msg.what;
if (item==2)
{
viewPager.setCurrentItem(item);
item=0;
handler.sendEmptyMessageDelayed(item, 3000);
}else
{
viewPager.setCurrentItem(item);
item++;
handler.sendEmptyMessageDelayed(item, 3000);
}
}
}
};
//发送第一个自动更换的信息
handler.sendEmptyMessageDelayed(1, 3000);
viewp