不会ViewPager2的使用?来这照抄就能入门

截止本文发布时间止,viewpager2的最新版本为稳定版1.0.0,该版本与 1.0.0-rc01 相比没有变化。

简介

1.0.0 的主要功能

  • 对之前的 ViewPager 实现的改进:
    • RTL(从右向左)布局支持
    • 垂直方向支持
    • 可靠的 Fragment 支持(包括处理底层 Fragment 集合的更改)
    • 数据集更改动画(包括 DiffUtil 支持)
    • 从之前的 ViewPager 实现中轻松迁移(API 尽可能一致)。请参阅迁移指南和示例应用。

使用

要使用 ViewPager2,请将以下 AndroidX 依赖项添加到项目的 build.gradle 文件:

dependencies {
    implementation "androidx.viewpager2:viewpager2:1.0.0"
}

ViewPager2为androidx库中的,简单来说androidx库就是对之前android-support的整合,如果项目还在使用android-support库,那么只有两个选择:

  1. 项目整体切换到androidx(需要有比较大的把我,也是未来的趋势)
  2. 不使用ViewPager2

言归正传,我们继续

先创建一个fragment的布局文件就命名为fragment_screen_slide_page.xml(引用的字符串内容需要你自己去定义):



    
    

创建一个Fragment类,在onCreateView中返回刚刚创建的布局

import androidx.fragment.app.Fragment;
...
public class ScreenSlidePageFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(
                R.layout.fragment_screen_slide_page, container, false);

        return rootView;
    }
}

然后创建一个ViewPager2对应的布局,命名为activity_screen_slide.xml



创建一个适配器,命名为ScreenSlidePagerAdapter,继承FragmentStateAdapter

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;

import com.channel.myapplication.fragment.ScreenSlidePageFragment;

/**
 * @author Administrator
 */
public class ScreenSlidePagerAdapter extends FragmentStateAdapter {

	/**
	 * The number of pages (wizard steps) to show in this demo.
	 */
	private static final int NUM_PAGES = 5;

	public ScreenSlidePagerAdapter(FragmentActivity fa) {
    	super(fa);
	}

	@NonNull
	@Override
	public Fragment createFragment(int position) {
    	return new ScreenSlidePageFragment();
	}

	@Override
	public int getItemCount() {
    	return NUM_PAGES;
	}
}

创建activity命名为ScreenSlidePagerActivity,并在此activity中将ScreenSlidePagerAdapter与ViewPager2绑定

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
...
public class ScreenSlidePagerActivity extends FragmentActivity {

    /**
     * The pager widget, which handles animation and allows swiping horizontally to access previous
     * and next wizard steps.
     */
    private ViewPager2 mPager;

    /**
     * The pager adapter, which provides the pages to the view pager widget.
     */
    private FragmentStateAdapter pagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screen_slide);

        // Instantiate a ViewPager and a PagerAdapter.
        mPager = findViewById(R.id.pager);
        pagerAdapter = new ScreenSlidePagerAdapter(this);
        mPager.setAdapter(pagerAdapter);
    }

    @Override
    public void onBackPressed() {
        if (mPager.getCurrentItem() == 0) {
            // If the user is currently looking at the first step, allow the system to handle the
            // Back button. This calls finish() on this activity and pops the back stack.
            super.onBackPressed();
        } else {
            // Otherwise, select the previous step.
            mPager.setCurrentItem(mPager.getCurrentItem() - 1);
        }
    }
}

运行项目进入ScreenSlidePagerActivity即可看到效果

效果图(录制来自谷歌官网)
不会ViewPager2的使用?来这照抄就能入门_第1张图片

推荐阅读:
ViewPager2添加自定义动画

关注我的公众号(不是技术号),让你的职业发展除技术外,多一种可能

你可能感兴趣的:(android基础进阶)