欢迎访问宙启技术站
智能推送

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实现自动循环轮播图的具体步骤,希望能对您有所帮助。