ViewPager PagerAdapter 实现页面切换
首先是布局代码 ViewPager 布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <androidx.viewpager.widget.ViewPager android:id="@+id/viewPageid" android:layout_width="match_parent" android:layout_height="match_parent"> </androidx.viewpager.widget.ViewPager> </RelativeLayout>
下来是4个子级layout布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@color/purple_500" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="page01"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@color/teal_700" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="page02"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="page03"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@color/purple_700" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="page04"/> </LinearLayout>
下来是PagerAdapter实现 代码
private class InnerPagerAdapter extends PagerAdapter{ @Override public int getCount() { return children.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } /** * 初始化 * @param container * @param position * @return */ @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { View view=children.get(position); container.addView(view); return view; } /** * 销毁 * @param container * @param position * @param object */ @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView(children.get(position)); } }
最终调用代码实现完整
public class ViewPageMainActivity extends AppCompatActivity { private ViewPager viewPager; private List<View> children; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_page_main); viewPager=findViewById(R.id.viewPageid); children=new ArrayList<>(); children.add(LayoutInflater.from(this).inflate(R.layout.page01layout,null)); children.add(LayoutInflater.from(this).inflate(R.layout.page02layout,null)); children.add(LayoutInflater.from(this).inflate(R.layout.page03layout,null)); children.add(LayoutInflater.from(this).inflate(R.layout.page04layout,null)); viewPager.setAdapter(new InnerPagerAdapter()); } private class InnerPagerAdapter extends PagerAdapter{ @Override public int getCount() { return children.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } /** * 初始化 * @param container * @param position * @return */ @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { View view=children.get(position); container.addView(view); return view; } /** * 销毁 * @param container * @param position * @param object */ @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView(children.get(position)); } } }
这样就实现功能了!