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並且將它進行綁定。
這樣我們=所有的過程就已經完成了。
運行效果
現在我們的代碼已經全部完成了。那么讓我們看一下我的運行效果吧。