实现图片轮播效果,需要控件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);实现循环内图片轮转