Android viewpager轮播图在前后各添加一个页面实现可以无限手动滑动,完整代码
时间: 2024-02-09 13:12:45 浏览: 146
Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
好的,以下是在Android Viewpager轮播图中前后各添加一个页面,实现无限手动滑动的完整代码:
1. 首先,在布局文件中添加ViewPager控件:
```
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
```
2. 在Activity或Fragment中获取ViewPager控件,并设置适配器和监听器:
```
ViewPager viewPager = findViewById(R.id.viewPager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), imageList);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1); // 设置ViewPager初始显示的页面为第二个页面
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// 当滑动到第一个或最后一个页面时,自动跳转到对应的最后一个或第一个页面
if (position == 0) {
viewPager.setCurrentItem(imageList.size() - 2, false);
} else if (position == imageList.size() - 1) {
viewPager.setCurrentItem(1, false);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
```
3. 创建适配器ViewPagerAdapter,并重写其getItemCount()和getItemPosition()方法:
```
private class ViewPagerAdapter extends FragmentPagerAdapter {
private List<String> mList;
public ViewPagerAdapter(FragmentManager fm, List<String> list) {
super(fm);
this.mList = list;
}
@Override
public Fragment getItem(int position) {
return ImageFragment.newInstance(mList.get(position));
}
@Override
public int getCount() {
return mList.size() + 2; // 在ViewPager前后各添加一个页面
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE; // 当页面刷新时,所有页面都会被重新加载
}
}
```
4. 创建Fragment类ImageFragment,并在其布局文件中添加ImageView控件:
```
public class ImageFragment extends Fragment {
private static final String ARG_IMAGE_URL = "image_url";
private String mImageUrl;
public ImageFragment() {
// Required empty public constructor
}
public static ImageFragment newInstance(String imageUrl) {
ImageFragment fragment = new ImageFragment();
Bundle args = new Bundle();
args.putString(ARG_IMAGE_URL, imageUrl);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mImageUrl = getArguments().getString(ARG_IMAGE_URL);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_image, container, false);
ImageView imageView = view.findViewById(R.id.imageView);
Glide.with(this).load(mImageUrl).into(imageView);
return view;
}
}
```
5. 最后,在AndroidManifest.xml文件中添加网络权限:
```
<uses-permission android:name="android.permission.INTERNET" />
```
至此,Android Viewpager轮播图在前后各添加一个页面实现无限手动滑动的代码就完成了。
阅读全文