布局中引入viewpager
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_test"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
创建四个布局文件,作为viewpager的展示界面
vp_layout_1.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/icon_about_1"/>
</RelativeLayout>
其他三个布局文件相同。
**在代码中根据创建的布局文件创建四个view **
private ViewPager viewPager;
private List<View> viewList;
View view1 = LayoutInflater.from(this).inflate(R.layout.layout_vp_1,null);
View view2 = LayoutInflater.from(this).inflate(R.layout.layout_vp_2,null);
View view3 = LayoutInflater.from(this).inflate(R.layout.layout_vp_3,null);
View view4 = LayoutInflater.from(this).inflate(R.layout.layout_vp_4,null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
继承PagerAdapter,重写其中的主要方法
class MyAdapter extends PagerAdapter{
public MyAdapter() {
super();
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
// return super.instantiateItem(container, position);
container.addView(viewList.get(position));
return viewList.get(position);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return super.getPageTitle(position);
}
@Override
public float getPageWidth(int position) {
// 这个方法可以实现右侧展示一部分第二页内容的效果
// if ( position == viewList.size()-1) {
//return 1f;
//}
//return 0.95f;
return 1f;
}
@Override
public int getItemPosition(@NonNull Object object) {
return super.getItemPosition(object);
}
@Override
public int getCount() {
return viewList.size();
}
@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) {
container.removeView(viewList.get(position));
}
}
适配器设置完成之后需要在代码中设置适配器
viewPager.setAdapter(new MyAdapter())