Android ViewPager 的使用

Posted Great Coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android ViewPager 的使用相关的知识,希望对你有一定的参考价值。

Android 中使用ViewPager

学习自:博客园部分博客


Overview

android中ViewPager的效果还是非常好用的,他的效果就是滑动切换view的效果。接下来让我们看一下如何使用我们的ViewPager。

编写适配器

首先我们创建一个适配器,并且我们需要继承PagerAdapter.接着我们看一下源码。

   public class ViewPageAdapter extends PagerAdapter {
    List<View> mList = new ArrayList<>();
    public ViewPageAdapter(List<View> mList) {
        this.mList = mList;
    }
    
    /**
     * @ClassName:ViewPageAdapter - 返回List数量
     * @author:CaoJiaHao
     * @Param:
     **/
    @Override
    public int getCount() {
        return mList.size();
    }
    
    /**
     * @ClassName:ViewPageAdapter - 将窗体进行绑定
     * @author:CaoJiaHao
     * @Param:
     **/
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
    
    /**
      *@ClassName:ViewPageAdapter - 销毁View的过程
      *@author:CaoJiaHao
      *@Param:
     **/
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(mList.get(position));
    }
    
    /**
      *@ClassName:ViewPageAdapter - 这个为显示的View
      *@author:CaoJiaHao
      *@Param:
     **/
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(mList.get(position));
        return mList.get(position);
    }
}

接着让我们来分析一下,我们的代码。


Adapter源码分析

在这里我们的Items 都是通过集合去添加的,我们创建了一个List<View>。并且通过适配器来进行items 的添加。
那么我们的适配器中都有些什么呢。
适配器的构造函数,参数为List<View>
然后还有GetCount();,isViewFormObject,destoryItem,instantiateItem.
这部分内容大概就是我们基础使用ViewPager所需要使用到的适配器了。
现在是适配器使用完成了。让我们看一下如何去使用我ViewPager


ViewPager 的使用过程

我们先看一下我们的布局代码吧

<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:padding="10dp"
    tools:context=".MainActivity">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/ViewPager1"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

布局文件十分的简单。在该布局文件中,我们只创建了一个ViewPager
接着让我们看一下业务代码吧。

public class MainActivity extends AppCompatActivity {
    private List<View> viewList = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        View view1= new View(this);
        view1.setBackgroundColor(Color.RED);
        View view2= new View(this);
        view2.setBackgroundColor(Color.GREEN);
        View view3= new View(this);
        view3.setBackgroundColor(Color.BLACK);
        View view4= new View(this);
        view4.setBackgroundColor(Color.YELLOW);
        
        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);
        
        ViewPager viewPager = findViewById(R.id.ViewPager1);
        viewPager.setAdapter(new ViewPageAdapter(viewList));
    }
}

这些就是我们的业务逻辑,我们来看一下他的内容:
先是创建了4个View。并且将他添加到我们的List中,然后初始换我们的ViewPager并且将它进行绑定。
这样我们=所有的过程就已经完成了。


运行效果

现在我们的代码已经全部完成了。那么让我们看一下我的运行效果吧。

以上是关于Android ViewPager 的使用的主要内容,如果未能解决你的问题,请参考以下文章

Android使用片段在viewpager中的页面滚动上放置动画

Android TabLayout ViewPager 不会在 backstack 上膨胀标签片段

ViewPager 未从代码、android、eclipse 更新

使用viewpager时,片段不会全屏显示

在android中使用viewpager的带有多个片段的SearchView

当 ViewPager 中的片段出现和消失时如何执行一些代码