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並且將它進行綁定。
這樣我們=所有的過程就已經完成了。


運行效果

現在我們的代碼已經全部完成了。那么讓我們看一下我的運行效果吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM