效果:

PagerData类:

 1 package com.cloud.viewpagerdemo;
 2
 3 import java.io.Serializable;
 4
 5 class PagerData implements Serializable {
 6
 7     private int mImageResId;
 8     private String mContent;
 9
10     PagerData(int imageResId, String content) {
11         mImageResId = imageResId;
12         mContent = content;
13     }
14
15     public int getImageResId() {
16         return mImageResId;
17     }
18
19     public void setImageResId(int imageResId) {
20         mImageResId = imageResId;
21     }
22
23     public String getContent() {
24         return mContent;
25     }
26
27     public void setContent(String content) {
28         mContent = content;
29     }
30 }

PagerFragment类:

 1 package com.cloud.viewpagerdemo;
 2
 3 import android.graphics.Outline;
 4 import android.os.Bundle;
 5 import android.support.annotation.NonNull;
 6 import android.support.annotation.Nullable;
 7 import android.support.v4.app.Fragment;
 8 import android.view.LayoutInflater;
 9 import android.view.View;
10 import android.view.ViewGroup;
11 import android.view.ViewOutlineProvider;
12 import android.widget.ImageView;
13 import android.widget.TextView;
14
15 public class PagerFragment extends Fragment {
16
17     private static final String ARG_DATA = "data";
18
19     private PagerData mData;
20
21     private ImageView mImageView;
22     private TextView mContent;
23
24     /**
25      * 通过静态方法获取Fragment实例,向Fragment传参数
26      * @param data 数据
27      * @return Fragment
28      */
29     public static PagerFragment newInstance(PagerData data) {
30         PagerFragment fragment = new PagerFragment();
31
32         //使用FragmentArguments传递参数
33         Bundle args = new Bundle();
34         args.putSerializable(ARG_DATA, data);
35         fragment.setArguments(args);
36         return fragment;
37     }
38
39     @Override
40     public void onCreate(@Nullable Bundle savedInstanceState) {
41         super.onCreate(savedInstanceState);
42         mData = (PagerData) getArguments().getSerializable(ARG_DATA);
43     }
44
45     @Nullable
46     @Override
47     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
48                              @Nullable Bundle savedInstanceState) {
49         View view = inflater.inflate(R.layout.fragment_pager, container, false);
50
51         //绑定控件
52         mImageView = view.findViewById(R.id.image_view);
53         mContent = view.findViewById(R.id.text_content);
54
55         //ImageView设置圆角
56         ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {
57             @Override
58             public void getOutline(View view, Outline outline) {
59                 outline.setRoundRect(0, 0, mImageView.getWidth(), mImageView.getHeight(), 16);
60             }
61         };
62
63         mImageView.setOutlineProvider(viewOutlineProvider);
64         mImageView.setClipToOutline(true);
65         mImageView.setImageResource(mData.getImageResId());
66         mContent.setText(mData.getContent());
67
68         return view;
69     }
70 }

PagerActivity:

 1 package com.cloud.viewpagerdemo;
 2
 3 import android.support.v4.app.Fragment;
 4 import android.support.v4.app.FragmentManager;
 5 import android.support.v4.app.FragmentStatePagerAdapter;
 6 import android.support.v4.view.ViewPager;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.widget.TextView;
10
11 import java.util.ArrayList;
12 import java.util.List;
13
14 public class PagerActivity extends AppCompatActivity {
15
16     private List<PagerData> mPagerData = new ArrayList<>();
17
18     private ViewPager mViewPager;
19     private TextView mTextPage;
20
21     private String page = "1 / 3";
22
23     @Override
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_pager);
27
28         initData();
29
30         FragmentManager fragmentManager = getSupportFragmentManager();
31
32         mViewPager = findViewById(R.id.view_pager);
33         mTextPage = findViewById(R.id.text_page);
34         //设置ViewPager适配器
35         mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
36             @Override
37             public Fragment getItem(int position) {
38                 return PagerFragment.newInstance(mPagerData.get(position));
39             }
40
41             @Override
42             public int getCount() {
43                 return mPagerData.size();
44             }
45         });
46
47         //监听页面改变
48         mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
49             @Override
50             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
51
52             }
53
54             @Override
55             public void onPageSelected(int position) {
56                 //页面选中
57                 page = String.valueOf(position + 1) + " / " + String.valueOf(mPagerData.size());
58                 mTextPage.setText(page);
59             }
60
61             @Override
62             public void onPageScrollStateChanged(int state) {
63
64             }
65         });
66         //设置缓存页数
67         mViewPager.setOffscreenPageLimit(3);
68         //设置默认页
69         mViewPager.setCurrentItem(0);
70
71         mTextPage.setText(page);
72     }
73
74     private void initData() {
75         //添加三项数据
76         mPagerData.add(new PagerData(R.drawable.img_0, "Photo by Adam Krowitz"));
77         mPagerData.add(new PagerData(R.drawable.img_1, "Photo by Samuel Ferrara"));
78         mPagerData.add(new PagerData(R.drawable.img_2, "Photo by Earth"));
79     }
80 }

fragment_pager:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.constraint.ConstraintLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:app="http://schemas.android.com/apk/res-auto"
 5     xmlns:tools="http://schemas.android.com/tools"
 6     android:layout_width="match_parent"
 7     android:layout_height="match_parent">
 8
 9     <LinearLayout
10         android:layout_width="match_parent"
11         android:layout_height="match_parent"
12         android:layout_marginBottom="32dp"
13         android:layout_marginEnd="16dp"
14         android:layout_marginStart="16dp"
15         android:layout_marginTop="16dp"
16         android:background="@drawable/pager_background"
17         android:elevation="4dp"
18         android:orientation="vertical"
19         app:layout_constraintBottom_toBottomOf="parent"
20         app:layout_constraintEnd_toEndOf="parent"
21         app:layout_constraintStart_toStartOf="parent"
22         app:layout_constraintTop_toTopOf="parent">
23
24         <ImageView
25             android:id="@+id/image_view"
26             android:layout_width="match_parent"
27             android:layout_height="0dp"
28             android:layout_margin="8dp"
29             android:layout_weight="1"
30             android:contentDescription="@null"
31             android:scaleType="centerCrop" />
32
33         <TextView
34             android:id="@+id/text_content"
35             android:layout_width="match_parent"
36             android:layout_height="125dp"
37             android:gravity="center"
38             android:padding="8dp"
39             android:textSize="18sp"
40             android:textColor="#000000"
41             tools:text="Content" />
42
43     </LinearLayout>
44
45 </android.support.constraint.ConstraintLayout>

activity_pager:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.constraint.ConstraintLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:app="http://schemas.android.com/apk/res-auto"
 5     xmlns:tools="http://schemas.android.com/tools"
 6     android:layout_width="match_parent"
 7     android:layout_height="match_parent"
 8     tools:context=".PagerActivity">
 9
10     <android.support.v7.widget.Toolbar
11         android:id="@+id/toolbar"
12         android:layout_width="match_parent"
13         android:layout_height="48dp"
14         android:background="@color/colorPrimary"
15         android:elevation="4dp"
16         app:layout_constraintEnd_toEndOf="parent"
17         app:layout_constraintStart_toStartOf="parent"
18         app:layout_constraintTop_toTopOf="parent">
19
20         <TextView
21             android:layout_width="wrap_content"
22             android:layout_height="wrap_content"
23             android:layout_gravity="center"
24             android:textSize="18sp"
25             android:textColor="#FFFFFF"
26             android:text="@string/app_name" />
27
28     </android.support.v7.widget.Toolbar>
29
30     <android.support.v4.view.ViewPager
31         android:id="@+id/view_pager"
32         android:layout_width="0dp"
33         android:layout_height="0dp"
34         app:layout_constraintBottom_toBottomOf="parent"
35         app:layout_constraintEnd_toEndOf="parent"
36         app:layout_constraintStart_toStartOf="parent"
37         app:layout_constraintTop_toBottomOf="@+id/toolbar">
38
39     </android.support.v4.view.ViewPager>
40
41     <TextView
42         android:id="@+id/text_page"
43         android:layout_width="wrap_content"
44         android:layout_height="wrap_content"
45         android:layout_marginBottom="4dp"
46         app:layout_constraintBottom_toBottomOf="parent"
47         app:layout_constraintEnd_toEndOf="parent"
48         app:layout_constraintStart_toStartOf="@+id/toolbar"
49         tools:text="page" />
50
51 </android.support.constraint.ConstraintLayout>

转载于:https://www.cnblogs.com/cloudfloating/p/9147143.html

Android ViewPager + Fragment实现滑动页面相关推荐

  1. android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...

    在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android- ...

  2. Android viewpager+fragment实现无限滚动,左右有前/后一页的部分,并fragment显示的内容是activity传过去的数据

    背景:最近在做app的时候碰到一个这样的需求.1,将从网络上获取的json数组数据显示出来,每页显示一个数据源,并且可以左右翻页查看:2,中间显示一个完整页,两边分别还有上下一页的一点,:3,可无限循 ...

  3. android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)

    之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的. 不过,ViewP ...

  4. android viewpager fragment传值,Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...

    前言 之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似 viewPager.setAdapter(new FragmentPagerAdapt ...

  5. android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...

    本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...

  6. Android ViewPager + Fragment的布局

    ViewPager And Fragment 1.之前有篇博客是讲ViewPager的用法的:http://www.cnblogs.com/liangstudyhome/p/3773156.html ...

  7. Android使用Fragment打造万能页面切换框架

    首先我们来回忆一下传统用Activity进行的页面切换,activity之间切换,首先需要新建intent对象,给该对象设置一些必须的参数,然后调用startActivity方法进行页面跳转.如果需要 ...

  8. Android使用Fragment打造万能页面切换框架(一)

    首先我们来回忆一下传统用Activity进行的页面切换,activity之间切换,首先需要新建intent对象,给该对象设置一些必须的参数,然后调用startActivity方法进行页面跳转.如果需要 ...

  9. Android开发之ViewPager结合Fragment实现滑动页面的效果(源代码分享)

    前段日子的博客有介绍过关于ViewPager的使用,发现大家对那篇博客都情有独钟,今天我们就在来看一下ViewPager在Fragment中的使用吧,因为ViewPager是在补丁包中添加的低版本的包 ...

最新文章

  1. internet 协议入门
  2. Balanced Binary Tree
  3. 请确定指定的驱动器中是否有盘_百格拉伺服驱动器维修常见故障现象及处理方法...
  4. 接口——Serializable
  5. 用画小狗的方法来解释Java中的值传递
  6. SpringBoot启动报错java.nio.charset.MalformedInputException: Input length = 2解决方案
  7. 批量生成6位数字_太准了,你是Excel高手or小白看这6个操作就知道了
  8. tm是什么域名_天猫入驻条件门槛是什么意思?企业入驻天猫详细解析
  9. Linux命令行下”!”的用法
  10. 世人都晓AI好 AI芯片知多少?
  11. no module named ‘cv2’解决办法
  12. Git项目下载部分文件或文件夹
  13. 【2.Delphi语法基础】7.程序异常处理
  14. c语言中按位取反 程序,C语言问题,if条件里面按位取反
  15. FIR与IIR滤波器
  16. 拼多多商家无货源,如何批量铺货?
  17. python 谷歌翻译
  18. 鸿蒙系统摩尔纹怎么去,PS摩尔纹如何消除?摩尔纹消除方法图文分享
  19. 跟着小马哥学系列之 Spring AOP(Spring 事务(源码分析)上)
  20. 图书管理系统需求规格说明文档目录_一个已经超越普通设计素材管理范畴的文档管理软件—Eagle...

热门文章

  1. golangsha1解码_如何阅读Golang的源码?
  2. c语言双精度型输出小数位数_4.1 C语言数据的输出
  3. 神经网络测试集loss不变_神经网络训练过程中不收敛或者训练失败的原因
  4. 教程:Visual Studio 连接 MySQL 数据库(包含常见错误及解决方法)
  5. bzoj 4568: [Scoi2016]幸运数字(树上倍增+线性基)
  6. HDU 5974 2016ICPC大连 D: A Simple Math Problem
  7. 汉诺塔问题(递归思想)(堆栈学习)
  8. shell的简单应用
  9. ArrayList使用
  10. Struts2之类型转换器