您的位置:首页 > 移动开发

【安卓-自定义布局】安卓App开发思路 一步一个脚印(七)实现ViewPager无限循环与自动播放

2016-10-04 12:01 791 查看

实现ViewPager无限循环与自动播放

   自动播放,无非就是将ViewPager长度加到很大很大,大到无聊用户滑到手机没电为止,

ViewPager实现滑动的监听,从而实现我要你滑到哪里你就去哪里。

mviewpager.setOnPageChangeListener(newViewPager.OnPageChangeListener(){
@Override
publicvoidonPageScrolled(intposition,floatpositionOffset,intpositionOffsetPixels){
currentItem=position;

}

@Override
publicvoidonPageSelected(intposition){

}

@Override
publicvoidonPageScrollStateChanged(intstate){

}
});

关键函数 

mViewPager.setCurrentItem(currentItem);
//设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动  
mViewPager.setCurrentItem((mImageViews.length) * 100); 

启动自动滚动的子线程

@OverridepublicvoidonResume(){super.onResume();//activity启动两秒钟后,发送一个message,用来将viewPager中的图片切换到下一个mHandler.sendEmptyMessageDelayed(1,2000);}@OverridepublicvoidonStop(){super.onStop();//停止viewPager中图片的自动切换mHandler.removeMessages(1);}

Handler

privateHandlermHandler=newHandler(){publicvoidhandleMessage(android.os.Messagemsg){switch(msg.what){case1:mviewpager.setCurrentItem(currentItem+1);//每两秒钟发送一个message,用于切换viewPager中的图片this.sendEmptyMessageDelayed(1,2000);}}};

适配器

@OverridepublicintgetCount(){returnInteger.MAX_VALUE/2;}@OverridepublicbooleanisViewFromObject(Viewview,Objectobject){returnview==object;}@OverridepublicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){container.removeView(marrayList.get(position%marrayList.size()));}@OverridepublicObjectinstantiateItem(ViewGroupcontainer,intposition){Viewv=marrayList.get(position%marrayList.size());//防止v被添加前存在与另一个父容器中 如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。  if(v.getParent()!=null){((ViewGroup)v.getParent()).removeView(v);}container.addView(v);returnv;}
备注,图片必须大于3张.其他可参考链接: http://blog.csdn.net/xiaanming/article/details/8966621
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐