ViewPager简单介绍(一)

一、ViewPager是什么
官方介绍是:
Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.
意思是:布局管理器,允许用户通过数据页左右翻转。您提供了一个PagerAdapter的实现来生成视图显示的页面。
ViewPager是v4包中的一个类,继承自ViewGroup,其实是一个容器,需要一个PagerAdapter适配器类给它提供数据,经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
二、ViewPager的简单使用
首先定义两个layout:
view1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0000ff">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        />

</LinearLayout>

view2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff00">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"/>

</LinearLayout>

在布局文件中添加标签:

    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

在代码中设置数据
获取控件

 ViewPager vp = (ViewPager) findViewById(R.id.vp);

自定义类继承PagerAdapter填充页面和数据:
PaerAdpter必须重写的四个方法

boolean isViewFromObject(View arg0, Object arg1)    //用来判断一个页面视图是否和instantiateItem方法返回的object有关联
int getCount()                                      //返回要滑动的View的个数
void destroyItem(ViewGroup container, int position,Object object)   //从当前container中删除指定位置(position)的View;
Object instantiateItem(ViewGroup container, int position)   //将当前视图添加到container中和返回当前View

MyPagerAdapter.class

public class MyPagerAdapter extends PagerAdapter {
    private List<View> pageList;

    public MyPagerAdapter(List<View> pageList) {
        this.pageList = pageList;
    }

    @Override
    public int getCount() {
        return pageList.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;

    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(pageList.get(position));
        return pageList.get(position);
    }

在mainactivity中设置适配器和数据

public class MainActivity extends AppCompatActivity {
    private ViewPager vp;
    private MyPagerAdapter pagerAdapter;
    private List<View> list;
    private View view1, view2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vp = (ViewPager) findViewById(R.id.vp);
        LayoutInflater inflater=getLayoutInflater();
        view1 = inflater.inflate(R.layout.view1, null);
        view2 = inflater.inflate(R.layout.view2,null);
        list = new ArrayList<>();
        list.add(view1);
        list.add(view2);
        pagerAdapter = new MyPagerAdapter(list);
        vp.setAdapter(pagerAdapter);
    }
}

最后效果如图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/hua93/article/details/78812268