Android实现实现viewpager实现循环轮播效果实现循环轮播效果
在网上看到很多利用viewpager实现轮播都是通过设置一个很大的值,让viewpager开始显示在这个数值区间的中间,但这种
轮播个人感觉不是真正的轮播,因此自己实现了一个轮播的效果。大致思路是这样的,假如有5张图adcde是要轮播展示的,
这时创建一个新的集合eadcdea,然后再让viewpager设置当前展示第一张图,也就是显示a。这样当往左滑时显示的是e,此
时设置viewpager.setCurrentItem(5),当右滑到e的时候在往右滑,此时设置viewpager.setCurrentItem(1),这样就实现了轮播
效果。
效果图如下所示:
话不多说上一下代码:
/**
* viewpager切换页面时动画
*/
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private ViewPaagerAdapter adapter;
private ArrayList<View> viewlist=new ArrayList<>();//承载图片
private ArrayList<TextView> tvList=new ArrayList<>();//底部圆点集合
private int []imgList=
{R.drawable.img8,R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5,
R.drawable.img6, R.drawable.img7,R.drawable.img8,R.drawable.img1};//图片数组
boolean isStop=false;
private LinearLayout line;//小圆圈父视图
private ScheduledThreadPoolExecutor executor;
private int currentPage;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
viewPager.setCurrentItem(msg.arg1);
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);