viewpager实现自动循环轮播图
发布时间:2023-05-17 04:01:19
Viewpager是Android系统提供的一个可以左右滑动的控件,非常适合做轮播图,下面我将介绍如何使用Viewpager实现自动循环轮播图。
1. 添加Viewpager到xml布局中,并设置宽高
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="280dp" />
2. 创建一个adapter继承自PagerAdapter,并实现其中的方法
public class ViewPagerAdapter extends PagerAdapter {
private List<Integer> mData;
public ViewPagerAdapter(List<Integer> data) {
this.mData = data;
}
@Override
public int getCount() {
if (mData == null || mData.size() == 0) {
return 0;
}
return mData.size() + 2;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
View view = (View) object;
container.removeView(view);
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View view = LayoutInflater.from(container.getContext()).inflate(R.layout.item_viewpager, container, false);
ImageView imageView = view.findViewById(R.id.iv_banner);
if (position == 0) {
imageView.setImageResource(mData.get(mData.size() - 1));
} else if (position == getCount() - 1) {
imageView.setImageResource(mData.get(0));
} else {
imageView.setImageResource(mData.get(position - 1));
}
container.addView(view);
return view;
}
}
3. 在Activity中设置adapter和实现自动轮播
private ViewPager mViewPager;
private List<Integer> mData = new ArrayList<>();
private ViewPagerAdapter mAdapter;
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
int currentItem = mViewPager.getCurrentItem();
mViewPager.setCurrentItem(currentItem + 1, true);
mHandler.postDelayed(mRunnable, 3000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
mViewPager = findViewById(R.id.viewpager);
mData.add(R.mipmap.banner1);
mData.add(R.mipmap.banner2);
mData.add(R.mipmap.banner3);
mData.add(R.mipmap.banner4);
mAdapter = new ViewPagerAdapter(mData);
mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(1);
mHandler.postDelayed(mRunnable, 3000);
}
@Override
protected void onDestroy() {
super.onDestroy();
mHandler.removeCallbacks(mRunnable);
}
以上就是使用Viewpager实现自动循环轮播图的具体步骤,希望能对您有所帮助。
