利用viewpager(2)和Tablayout实现滑动分页
1.前言
在想博客写什么的时候,考虑的方向是写一篇博客关于那些大多数APP都能用的功能,比如说:下拉刷新、
往上拖加载更多、通知栏、滑动分页等等,最后由于能力有限,只是实现了滑动分页这一种,算是个遗憾吧。
-
用到的控件和技术要点有:
-
1.
viewpager
的使用 -
2.
Tablayout
的使用 -
3.“小Activity” 之称的
Fragment
的使用 -
4.
FragmentPagerAdapter
适配器
2.实现过程
2.1引入viewpager2依赖库(两种方式)
由于Android-studio自带的viewpager控件是第一代,所以为了使用更新的第二代viewpager2,我们需要引入依赖库
2.1.1手动添加
在项目的 build.gradle
文件中添加 以下 AndroidX 依赖项:
//这个块本来就有,添加内容语句即可
dependencies {
implementation "androidx.viewpager2:viewpager2:1.0.0"
}
位置:
官方参考文档:ViewPager2 | Android开发者
2.1.2用Android-studio自带的功能自动添加
1.进入 项目结构设置 (project structure)
2.选择添加依赖项
3.搜索依赖项(支持模糊搜索),选中最新版本(Versions)并点击右下角的 OK
4.最后添加成功后会自动添加依赖项,和手动添加的位置一样
注意!
本来是想用viewpager2实现的,但是,代码写到后面发现,viewpager2 在设置适配器时竟无法接收我所用的
FragmentPagerAdapter适配器,报如下错:
所以最后还是回炉重造,用第一代实现,这个错误是可以解决的,查阅资料发现,AndroidX中的
FragmentPagerAdapter适配器增加了一个 Behavior 参数,总体来说大同小异。在写适配器类的时
候加以修改即可。但是这方法是在使用了第一代之后才发现的,不想再次回炉重造,所以依旧使用
第一代完成。具体可参考简书文章:
Androidx 中的 ViewPager 与 ViewPager2
2.2 创建三个 Fragment并设计 各自的 UI 布局
Google官方是建议我们使用Fragment
来填充ViewPager的,Fragment由于能够很好地权衡不同大小屏幕的用户体验,也能够使得页面的空间利用更加地合理,推出以来一直广受好评。
我在这里一共创建了三个Fragment,三个fragment的创建完全一样,为了避免文章臃肿,这里就只说一个吧。
2.2.1 FirstFragment 的创建
代码
package com.demo.rico_fragment_01;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple {@link Fragment} subclass.
*/
public class FirstFragment extends Fragment {
public FirstFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_first, container, false);
}
}