实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下:

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
public class ReadViewPager extends ViewPager
{public ReadViewPager(Context context){super(context);}public ReadViewPager(Context context, AttributeSet attrs){super(context, attrs);setAnima();}public void setAnima(){setPageTransformer(true, new PageTransformer(){private static final float MIN_SCALE = 0.75f;@Overridepublic void transformPage(View view, float position){int pageWidth = view.getWidth();int pageHeight =view.getHeight();if (position < -1){// [-Infinity,-1)// This page is way off-screen to the left.view.setAlpha(0);}else if (position <= 0){// [-1,0]// Use the default slide transition when moving to the left pageview.setAlpha(1);view.setTranslationX(0);view.setScaleX(1);view.setScaleY(1);}else if (position <= 1){// (0,1]// Fade the page out.view.setAlpha(1 - position);
//
//                    // Counteract the default slide transition
//                    view.setAlpha(1);view.setTranslationX(pageWidth * -position);
//
//                    // Scale the page down (between MIN_SCALE and 1)float scaleFactor = MIN_SCALE+ (1 - MIN_SCALE) * (1 - Math.abs(position));view.setScaleX(scaleFactor);view.setScaleY(scaleFactor);}else{// (1,+Infinity]// This page is way off-screen to the right.view.setAlpha(0);}}});}
}

核心代码是android官方demo,以上实现的是翻页效果是:上面一页被滑出界面时,下面一页慢慢显现,透明度慢慢加大,并且大小由小慢慢变大。

不过有一个奇怪的现象,当我做一个答题界面时,刚刚开始我采用ViewPager与View结合实现无限循环切换,并且采用上面的动画效果,可是每当我滑动到最后一张,也就是要开始新的一轮循环的时候,被滑出去的一页也会出现慢慢变透明的情况,而我用ViewPager结合Fragment实现无限循环切换的是就不会出现这种效果

后来发现大概是因为我在适配器里面加上了下面这个方法才会造成上面的奇怪现象,所以下面的方法不能写下

// PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁//在这里不能重写
//    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {////        super.destroyItem(container, position, object);
//    }

如果想要实现仿造驾考宝典的翻页效果,只要把核心方法改为以下代码便可以了

setPageTransformer(true, new PageTransformer() {private static final float MIN_SCALE = 0.75f;@Overridepublic void transformPage(View view, float position) {int pageWidth = view.getWidth();int pageHeight =view.getHeight();if (position < -1) { // [-Infinity,-1)// This page is way off-screen to the left.view.setAlpha(0);} else if (position <= 0) { // [-1,0]// Use the default slide transition when moving to the left pageview.setAlpha(1);view.setTranslationX(0);view.setScaleX(1);view.setScaleY(1);} else if (position <= 1) { // (0,1]// Fade the page out.
//                    view.setAlpha(1 - position);
//
//                    // Counteract the default slide transitionview.setAlpha(1);view.setTranslationX(pageWidth * -position);
//
//                    // Scale the page down (between MIN_SCALE and 1)
//                    float scaleFactor = MIN_SCALE
//                            + (1 - MIN_SCALE) * (1 - Math.abs(position));
//                    view.setScaleX(scaleFactor);
//                    view.setScaleY(scaleFactor);
} else { // (1,+Infinity]// This page is way off-screen to the right.view.setAlpha(0);}}});

下面我们来讲讲position参数:

position的可能性的值有:

[-Infinity,-1)  已经看不到了

(1,+Infinity] 已经看不到了

[-1,1]

重点看[-1,1]这个区间 , 其他两个的View都已经看不到了~~

假设现在ViewPager在A页现在滑出B页,则:

A页的position变化就是( 0, -1]

B页的position变化就是[ 1 , 0 ]

参考博客:http://blog.csdn.net/lmj623565791/article/details/40411921

http://www.jianshu.com/p/251592d3ec62

转载于:https://www.cnblogs.com/tangZH/p/6516690.html

ViewPager实现滑动翻页效果相关推荐

  1. android控件翻书效果,android ViewPager实现滑动翻页效果实例代码

    实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下:import android.content.Context;import androi ...

  2. android 翻书动画效果怎么做,android ViewPager实现滑动翻页效果实例代码

    实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下: import android.content.Context; import andr ...

  3. 微信小程序实现滑动翻页效果源码附效果图

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 微信小程序实现滑动翻页效果 效果图: 源码: <view class="mainFra ...

  4. php左右滑动翻页代码,C#_NGUI实现滑动翻页效果实例代码,废话不多说了,直接给大家上 - phpStudy...

    NGUI实现滑动翻页效果实例代码 废话不多说了,直接给大家上干货了. 具体代码如下所示: using UnityEngine; using System.Collections; public cla ...

  5. vue实现上下滑动翻页_基于vue实现上下滑动翻页效果

    18年年底的时候,一直在做年度报告的H5页面,因为项目需要,需要实现上下滑动翻页,并且上滑的页面比正常页面的比例要缩小一定比例. 效果类似于http://www.17sucai.com/pins/de ...

  6. 滑动翻页效果_Flutter实现3D效果,一个字,炫!

    老孟的博客地址: http://laomengit.com/ Flutter 中3D效果是通过Transform组件实现的,没有变换效果的实现: class TransformDemo extends ...

  7. 滑动翻页效果实现和移动端click事件问题

    前述 本文很短~ 主要是为了总结和讲述移动端click和js事件机制导致的一个问题. (:咳咳,其实几句话就能写完的还要水一篇文章,不愧是我- 正文 最近做了一个小活动,里面要用到一个效果:滑动翻页. ...

  8. 简单零基础学会H5移动端滑动翻页效果

    这篇文章教大家如何使用原生js和少量css3动画来实现HTML5的翻页效果,我会尽量讲得细一点,让零基础的同学也能学会这个简单的案例. 先来看下html的布局代码: index.html 一个div包 ...

  9. h5滚动时侧滑出现_HTML5移动端触摸事件以及滑动翻页效果

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

最新文章

  1. 二进制与格雷码之间的转换的Verilog实现(更多一点的讨论)
  2. BLE Mesh(2)—— 基本术语及含义
  3. linux代码环境配置,linux下配置环境变量【原创】(示例代码)
  4. 科大星云诗社动态20210205
  5. 设计模式理解:装饰模式Decorator
  6. 组件kdsvrmgr无法正常工作_汽轮机润滑油冷油器六通阀的工作原理及现阶段存在的问题...
  7. 同事就是同事,职场没有兄弟姐妹
  8. SetFormFullScreen()窗体全屏显示
  9. 软件测试框架课程考试_那考试准备课程值得吗?
  10. oracle gets/exec 单位,ORACLE AWR使用基础
  11. 网络工程师为什么要学python_网络工程师学python
  12. mysql分窗函数_频谱分析中如何选择合适的窗函数
  13. “树人杯”辽宁科技大学第三届校园程序设计大赛
  14. c++窗口管理系统是什么_维维华东食品饮料公司电能管理系统的设计与应用——安科瑞 戴玥...
  15. python编程a的x次方_Python编程基础—运算符和math科学计算库
  16. python计算log2×_带有Python示例的math.log2()方法
  17. (转载)IT行业都有哪些职位,初学者(0基础,新人)该如何选择,才能够快速进入这个行业?
  18. HEXO SEO 高级优化
  19. 计算机发邮件试题,计算机考试题库:计算机网络模拟练习题(4)
  20. ZOJ 3797 Sister's Noise 组合+DP

热门文章

  1. 梯度下降的线性回归用python_运用TensorFlow进行简单实现线性回归、梯度下降示例...
  2. nodejs-安装/helloworld/npm
  3. 【C 语言】结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )
  4. 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )
  5. 【Android NDK 开发】JNI 动态注册 ( 动态注册流程 | JNI_OnLoad 方法 | JNINativeMethod 结构体 | GetEnv | RegisterNatives )
  6. 大数据之Linux常用命令
  7. nowcoder 提高组模拟赛 选择题 解题报告
  8. Axure 部件的交互样式
  9. 二、SpringMVC的常用注解——1-@Controller
  10. 对比less聊scss(1):scss特性