各位看官们,大家好,上一回中咱们说的是Android中多线程之大结局的例子,这一回中咱们介绍的例子是如何使用ViewPager2。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在前面章回中介绍过ViewPage的用法,不过介绍的是第一版本,现在官方已经把ViewPager
升级到第二版本:ViewPager2
,本章回中主要介绍ViewPager2的用法。下面是具体的使用步骤,请大家参考:
我们和ViewPage第一版的使用方法对比一下就会发现第二版和第一版的使用方法几乎一样,不过它们背后技术不一样,ViewPager2使用了来缓冲管理的View,这样可以提高ViewPage的性能,再回想一下我们之前介绍过的RecyclerView,它的使用方法是不是也是和上面的这三个步骤类似?
介绍完使用步骤后,大家可能觉得抽象,接下来我们通过文字结合代码的方式介绍一下详细的使用方法。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragment.FragmentTwo">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/id_viewpage"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4">
androidx.viewpager2.widget.ViewPager2>
FrameLayout>
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_two, container, false);
mViewPager = (ViewPager2)view.findViewById(R.id.id_viewpage);
return view;
}
public class ViewPagerFragmentAdapter extends FragmentStateAdapter {
private ArrayList<Fragment> mFragments = new ArrayList<>();
public ViewPagerFragmentAdapter(@NonNull Fragment fragment) {
super(fragment);
mFragments.add(new Fragment1());
mFragments.add(new Fragment2());
mFragments.add(new Fragment3());
}
@NonNull
@Override
public Fragment createFragment(int position) {
Fragment fragment = mFragments.get(position);
return fragment;
}
@Override
public int getItemCount() {
return mFragments.size();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_two, container, false);
mViewPagerFragmentAdapter = new ViewPagerFragmentAdapter(this);
mViewPager.setAdapter(mViewPagerFragmentAdapter);
//这个必须写,不然会产生Fata
mViewPager.setSaveEnabled(false);
mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
return view;
}
看官们,上面列出的是核心代码,大家可以自己建立一个工程来动手试试,我们在这里就不建立工程演示了,因为它的运行效果和ViewPage的完全一样.如果有看官想看运行效果的话,可以参考ViewPage中的运行效果截图。
看官们,关于Android中如何使用ViewPager2的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!