文章目录

  • 1. 效果
  • 1. 添加ViewPager2控件
  • 2. MainActivity.java中添加ViewPager2
  • 3. 创建ViewPager中的页面
  • 4. 添加ViewPagerAdapter类代码
  • 5. 示例代码
  • 6. 参考

1. 效果

1. 添加ViewPager2控件

在activity_main.xml中添加 androidx.viewpager2.widget.ViewPager2 控件, 有些版本可能提示无此控件,需要在 build.gradle中添加依赖:implementation 'androidx.viewpager2:viewpager2:1.0.0'

添加ViewPager2控件后,activity_main.xml代码如下:

<?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=".MainActivity"><androidx.viewpager2.widget.ViewPager2android:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

2. MainActivity.java中添加ViewPager2

public class MainActivity extends AppCompatActivity {private ViewPager2 mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mViewPager = findViewById(R.id.viewpager);List<String> dataList = new ArrayList<>();dataList.add("你");dataList.add("好");dataList.add("啊");dataList.add("你");dataList.add("是");dataList.add("谁");dataList.add("啊");mViewPager.setAdapter(new ViewPagerAdapter(dataList));}
}

mViewPager.setAdapter(new ViewPagerAdapter(dataList));这行代码时,先写下来,然后用 alt + enter 快捷键提示添加 ViewPagerAdapter 类。
创建完 ViewPagerAdapter 类后,先放着,创建ViewPager中的页面

3. 创建ViewPager中的页面

在 Layout 右键,new -> Layout Resource File,创建一个xml,名字随意

item_pager.xml里面的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/itme_container"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_vertical"android:orientation="vertical"><TextViewandroid:id="@+id/item_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textSize="30sp" /></LinearLayout>

4. 添加ViewPagerAdapter类代码

public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewPagerHolder> {private List<String> mDataList;private List<Integer> mItemColorList;public ViewPagerAdapter(List<String> data){mDataList = data;mItemColorList = new ArrayList<>();mItemColorList.add(Color.parseColor("#feeeed"));mItemColorList.add(Color.parseColor("#fedcbd"));mItemColorList.add(Color.parseColor("#817936"));mItemColorList.add(Color.parseColor("#b2d235"));mItemColorList.add(Color.parseColor("#64492b"));mItemColorList.add(Color.parseColor("#817936"));mItemColorList.add(Color.parseColor("#fffffb"));}@NonNull@Overridepublic ViewPagerAdapter.ViewPagerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {return new ViewPagerHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_pager, parent, false));}@Overridepublic void onBindViewHolder(@NonNull ViewPagerHolder holder, int position) {holder.mItemTv.setText(mDataList.get(position));holder.mItemContainer.setBackgroundColor(mItemColorList.get(position));}@Overridepublic int getItemCount() {return mDataList.size();}class ViewPagerHolder extends RecyclerView.ViewHolder{LinearLayout mItemContainer;TextView mItemTv;public ViewPagerHolder(@NonNull View itemView) {super(itemView);mItemContainer = itemView.findViewById(R.id.itme_container);mItemTv = itemView.findViewById(R.id.item_tv);}}
}

说明:


5. 示例代码

ViewPager2示例代码

6. 参考

更多详细ViewPager2的例子,可以参考Android官方示例:Android ViewPager2 官方示例

Android - ViewPager2相关推荐

  1. Android - ViewPager2 Fragment

    文章目录 1. 效果 2. 添加ViewPager2控件 3. 添加Fragment页面 4. 添加FragmentStateAdapter类的继承类 5. 添加ViewPager2的逻辑 6. 示例 ...

  2. Android ViewPager2 真的香么?

    Google 前段时间出了新品 ViewPager2,据说意在替代旧版 ViewPager,功能更强大使用更方便:真的这么香么,小菜尝试学习一下! 优势 支持 RTL 布局,稍后介绍: 支持垂直方向切 ...

  3. Android viewpager2 + indicator 实现页面滑动

    在build.gradle里面添加依赖 implementation 'com.tbuonomo:dotsindicator:4.2'implementation 'androidx.viewpage ...

  4. Android ViewPager2自定义页面切换动画

    默认切换动画 MainActivity override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstance ...

  5. Android viewpager2实现翻页效果

    为什么要实现翻页效果?减少用户的操作 viewpager2是基于recyclerview实现的,自带懒加载功能 viewpager2是对recyclerview的封装 要实现下面这个效果 viewpa ...

  6. android viewpager2,viewpager2原理和使用

    近期google官网上更新了viewpager2, 支持垂直滚动, 重写之前的viewpager. 1.原理: viewpager2 内部实现原理是使用recycleview加LinearLayout ...

  7. Android viewPager2 + fragment 模拟微信首页2(滑动页面标签同步变化,点击标签滑动页面)

    可以实现的方式:BottomNavigationView 这里我们不使用BottomNavigationView,手动来写代码 先看一下效果 fragment + viewPager2模拟微信首页2( ...

  8. android viewpager2,Android-ViewPager2的使用

    一.ViewPager2的变化 ViewPager2是用来替换ViewPager的,ViewPager2是final修饰的,直接继承ViewGroup,其内部是使用RecyclerView,ViewP ...

  9. Android ViewPager2总结

    文章目录 ViewPager2总结 概述 常用API ViewPager2基本使用 ViewPager2+TabLayout+Fragment 代码下载 ViewPager2总结 概述 ViewPag ...

最新文章

  1. 【分享】工作流支持邮件提醒相关配置
  2. java list翻转_浅谈Java数据结构中的常见问题
  3. 面向对象课程第二单元作业总结
  4. 在Python中访问字典中的任意元素
  5. windows远程桌面连接提示发生身份验证错误,要求的函数不受支持
  6. javascript中的setTimeout() 方法和clearInterval() 方法和setInterval() 方法
  7. Android 集成支付宝支付,支付宝支付2.0
  8. 处理页面动态加载数据
  9. 程序员进阶之路的10本必读书目
  10. 基于Matpower的电力系统潮流计算仿真
  11. java poi excel转pdf_java_poi导入导出excel.pdf
  12. 如何将 Ubuntu 配置为Ap模式
  13. 你在为谁工作——IT帮深圳分站2019年3月线下活动回顾
  14. java 环绕通知_SpringAOP四种通知类型+环绕通知
  15. php静态页面制作,ps制作静态的html页面
  16. SecureCRT 多个会话显示在同一窗口
  17. SSTV 建伍TK8185 连接电脑
  18. 微信进化史(未完待续)
  19. python学习笔记3.5-with的妙用
  20. Wireshark 4.0.0RC1 版本前瞻

热门文章

  1. 提效利器,定时器软件,小巧、绿色、免费~
  2. Could not create token :Using integers for registered date claims is deprecated, please use DateTime
  3. 三、HBase原理与实战
  4. 使用Beetle简单构建高性能Socket tpc应用
  5. 华为智能家居鸿蒙,美的集团首发支持华为鸿蒙 年内推出配套智能家居
  6. css怎么移动半圆,css3半圆
  7. linux桌面字体改中文,英文界面Ubuntu,修改界面默认雅黑字体
  8. 重磅发布,时隔两月——复旦大学MOSS最新0.0.3版本发布
  9. 股票购买接口系统怎么使用vn.py进行量化策略?
  10. 初步尝试将传统学科的内容程序/数据化 2018-10-27