实现图片轮播效果,需要控件ViewPager,并为它写个适配器,可以继承PagerAdapter 实现自定义的适配器。
这里实现图片的轮播可以用Handler结合Runnable来实现。
1.在xml布局中定义该组件
<ViewPager android:id="@+id/iv_baby" android:background="#00000000" android:layout_width="match_parent" android:layout_height="300dp"/>
2.java代码中设置适配器
2.1ViewPager的定义
private ViewPager viewPager;
2.2存放图片资源的集合
private ArrayList<View>allListView;
2.3存放图片资源的数组 private int[] resId = { R.drawable.detail_show_1, R.drawable.detail_show_2, R.drawable.detail_show_3, R.drawable.detail_show_4, R.drawable.detail_show_5, R.drawable.detail_show_6 };
2.3 初始化ViewPager并设置适配器
private void initViewPager() { if(allListView!=null){ allListView.clear(); allListView=null; } allListView=new ArrayList<>(); for(int i=0;i<resId.length;i++){ View view= LayoutInflater.from(this).inflate(R.layout.pic_item,null); ImageView imageView= (ImageView) view.findViewById(R.id.pic_item); imageView.setImageResource(resId[i]); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(BaByActivity.this,ShowBigPictureActivity.class); intent.putExtra("position",position%resId.length); startActivity(intent); } }); allListView.add(view); } viewPager= (ViewPager) findViewById(R.id.iv_baby); ViewPageAdapter adapter=new ViewPageAdapter(); viewPager.setAdapter(adapter); }
2.4自定义viewPager适配器
private class ViewPageAdapter extends PagerAdapter{ @Override public int getCount() { return allListView.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { View view=allListView.get(position); container.addView(view); return view; } }
2.5 Handler+Runnable实现图片轮播
/**ViewPager当前显示页的下标*/ private int position=0; private Handler mHandler=new Handler(); private Runnable runnable=new Runnable() { @Override public void run() { position++; viewPager.setCurrentItem(position%resId.length); mHandler.postDelayed(runnable,2000); } };
2.6可以在onCreate()方法中调用 mHandler.postDelayed(runnable,2000);实现循环内图片轮转
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦