一、ViewPager2应用场景:
ViewPager2是一个功能强大的滑动容器,提供灵活的页面切换和布局定制功能,使得应用程序界面更加丰富和交互性强,主要应用于以下场景:
1)、实现引导页或欢迎页:ViewPager2可用于创建引导页/欢迎页,让用户通过滑动浏览介绍应用程序功能/展示欢迎内容。
2)、创建图片浏览器:ViewPager2可用于创建图片浏览器,允许用户通过滑动来切换不同的图片。
3)、构建轮播图:ViewPager2非常适合构建轮播图功能,通过适配器动态加载不同的轮播项,并提供自动循环滚动的功能。
4)、实现选项卡式布局:结合TabLayout,ViewPager2可用于创建选项卡式布局,让用户通过滑动选项卡来切换不同的内容页面。
5)、创建垂直滑动页面:ViewPager2支持垂直方向的滑动,可用于创建垂直滑动的页面布局。
6)、实现分页数据展示:ViewPager2可用于展示分页数据。
7)、将大量数据按页加载并在每一页中展示一部分内容。
8)、嵌套滑动布局:ViewPager2可与其他滑动组件(如RecyclerView)嵌套使用,实现复杂的滑动布局结构。
9)、实现自定义的滑动效果:通过使用自定义的转换器(Transformer),可以实现各种炫酷的页面切换效果,例如渐变、缩放、旋转等。
二、ViewPager2应用设计:
1)、xml文件添加ViewPager2:
<androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewpager2" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
2)、新建Adapter:
package com.july.viewpager2application;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import java.util.List;
public class ViewPager2Adapter extends RecyclerView.Adapter<ViewPager2Adapter.ViewHolder> {
private List<String> list;
private LayoutInflater mInflater;
private ViewPager2 viewPager2;
private int[] images= new int[]{R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four};
public ViewPager2Adapter(Context context, List<String> data, ViewPager2 viewPager2) {
this.mInflater = LayoutInflater.from(context);
this.list = data;
this.viewPager2 = viewPager2;
}
@NonNull
@Override
public ViewPager2Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewPager2Adapter.ViewHolder holder, int position) {
holder.viewImage.setImageResource(images[position]);
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
RelativeLayout relativeLayout;
ImageView viewImage;
ViewHolder(View itemView) {
super(itemView);
viewImage = itemView.findViewById(R.id.imageView);
relativeLayout = itemView.findViewById(R.id.container);
}
}
}
3)、MainActivity.java添加:
viewPager2 = findViewById(R.id.viewpager2); viewPager2.setAdapter(new ViewPager2Adapter(this,list,viewPager2));
4)、运行效果: