Android ViewPager2 的基本使用

本篇主要介绍一下viewpager2 的基本使用 ,并且实现一个滑动图片的功能


Android ViewPager2 的基本使用



概述

ViewPager2 是一个以可滑动的格式显示视图或 Fragment, ViewPager2 使用来替代 ViewPager的, 就是ViewPager控件写的不好 用来重写它的 , ViewPager2 依赖 RecycleView , 而 ViewPager 只需要PagerAdapter ,下面我用一个demo演示一下 ViewPager2的基本用法


实现思路

1.布局文件中引入 ViewPager2
2.编写 RecycleView 的 子item 布局
3.编写 ViewPage2Adapter 继承自 RecyclerView.Adapter

下面来用实际代码实现一个滑动的图片


代码实现

布局文件中引入ViewPager2

简单的把 viewPager2控制在屏幕上部分

<?xml version="1.0" encoding="utf-8"?>
<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"
   tools:context=".ViewPage2Activity">

   <androidx.viewpager2.widget.ViewPager2
       android:id="@+id/viewpage2"
       android:layout_width="match_parent"
       android:layout_height="250dp"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       />
</androidx.constraintlayout.widget.ConstraintLayout>


Android ViewPager2 的基本使用



编写 RecycleView 的 子item 布局

子布局就是一个imageview 展示图片

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   xmlns:app="http://schemas.android.com/apk/res-auto">

   <ImageView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/imageviewitem"
       android:src="@drawable/hippopx"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       android:scaleType="centerCrop"
       android:layout_margin="30dp"
       />
</androidx.constraintlayout.widget.ConstraintLayout>



编写 ViewPage2Adapter 继承自 RecyclerView.Adapter

package com.johnny.slzzing;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ViewPage2Activity extends AppCompatActivity {

   private static final String TAG = "ViewPage2Activity";
   ViewPager2 viewPager2;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_view_page2);
       viewPager2 = findViewById(R.id.viewpage2);
       ViewPage2Adapter viewPage2Adapter = new ViewPage2Adapter(initImageViews());
       viewPager2.setAdapter(viewPage2Adapter);
  }
   //初始化图片
   private List<Integer> initImageViews() {
       return Arrays.asList(R.drawable.hippopx,R.drawable.zhu,R.drawable.sky);
  }
   //编写 viewpager2的 adapter
   class ViewPage2Adapter extends RecyclerView.Adapter<ViewPage2Adapter.MyViewHolder>{

       private List<Integer> imageViewResources;

       public ViewPage2Adapter(List<Integer> imageViewResources) {
           this.imageViewResources = imageViewResources;
      }

       @NonNull
       @Override
       public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
           //inflate 子布局
           return new MyViewHolder(LayoutInflater.from(parent.getContext())
                  .inflate(R.layout.viewpage2_item, parent, false));
      }

       @Override
       public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
           int imageResource = imageViewResources.get(position);
           holder.imageView.setImageResource(imageResource);
           Log.d(TAG, "onBindViewHolder: onBindViewHolder" + position);
      }

       @Override
       public int getItemCount() {
           return imageViewResources == null ? 0: imageViewResources.size();
      }

       class MyViewHolder extends RecyclerView.ViewHolder{
           ImageView imageView;
           public MyViewHolder(@NonNull View itemView) {
               super(itemView);
               imageView = itemView.findViewById(R.id.imageviewitem);
          }
      }
  }
}


Android ViewPager2 的基本使用



总结

本篇主要介绍了 ViewPager2 的基本使用, 利用它可以很轻松的实现滑动的效果, ViewPager2也可以结合Fragment, BottomNavigationView 等等 有机会再聊.


原文始发于微信公众号(Johnny屋):Android ViewPager2 的基本使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89829.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!