利用PageTransformer实现viewpager的视差效果变换和反转特效
来源:互联网 发布:nodejs数据返回页面 编辑:程序博客网 时间:2024/06/03 21:01
利用PageTransformer实现viewpager的几种切换效果,适合做欢迎页,代码比较简单,但是效果还不错,核心主要是PageTransformer的使用。
page在切换的时候会调用transformPage(View page, float position)方法,注意是多个page不停的调用这方法,参数page就是调用此方法的view,参数position就是这个view的位置信息。0代表当前view,-1代表左边的相邻的view,1代表右面相邻的view。在本项目中,我们只操作-1~1之间的view(也就是用户可能会见的view)。
@Override public void transformPage(View page, float position) { if (position > -1 && position < 1) { initransforPage(page, position); } }
先看第一种效果
在page切换过程中加入放大缩小的动画,根据position判断page缩放的程度。
page.setScaleX(1-Math.abs(position)); page.setScaleY(1-Math.abs(position));
第二种效果
这种效果跟上面的效果类似,只不过添加了缩小的最小限度,最小设置成0.9f
page.setScaleX(Math.max(0.9f,1-Math.abs(position))); page.setScaleY(Math.max(0.9f,1-Math.abs(position)));
第三种效果
利用翻转动画实现了page切换,根据position来确定setPivotX参数和反转的角度
page.setPivotX(position<0f?page.getWidth():0f); page.setPivotY(page.getHeight()*0.5f); page.setRotationY(position*45);第四种效果
同样是反转,只不过反过来了而已
page.setPivotX(page.getWidth()*0.5f); page.setPivotY(page.getHeight()*0.5f); page.setRotationY(-position*45);第五种效果
gif图的关系效果不是很明显,其实这是一种视差效果。根据position和view的宽度给page中每个子view赋予不同的偏移量,形成这种视差移动的效果。
ViewGroup v = (ViewGroup) page.findViewById(R.id.rl); int childCount = v.getChildCount(); for (int i = 0; i < childCount; i++) { View childView = v.getChildAt(i); float factor = (float) Math.random(); if (childView.getTag() == null) { childView.setTag(factor); } else { factor = (float) childView.getTag(); } childView.setTranslationX(factor * childView.getWidth() * position); } break;
以上就是这几种效果的全部核心代码,也可以根据自己需求组合变换。主要是抛砖引玉,哈哈哈。
下载链接:http://download.csdn.net/detail/liujiayut800/9885267
阅读全文
2 0
- 利用PageTransformer实现viewpager的视差效果变换和反转特效
- ViewPager的PageTransformer 实现各种Page变换动画效果分析
- ViewPager+Fragment+PageTransformer实现3D、视差等多种动画效果(雷惊风)
- 自定义ViewPager.PageTransformer实现幻灯片效果
- ViewPager的视差背景效果
- Android ViewPager的切换动画效果PageTransformer
- 简单视差特效的实现
- PageTransformer实现个性的ViewPager切换动画
- ParallaxViewPager:ViewPager的视差背景效果
- ParallaxViewPager:ViewPager的视差背景效果
- ParallaxViewPager:ViewPager的视差背景效果
- 自定ViewPager 切换效果,PageTransformer这个类实现
- ViewPager的PageTransformer用法
- ViewPager使用PageTransformer的各种切换的效果
- android ViewPager 实现Gallery 效果和滑动特效
- 视差滚动(Parallax Scrolling)效果的原理和实现
- 视差滚动(Parallax Scrolling)效果的原理和实现
- 视差滚动(Parallax Scrolling)效果的原理和实现
- 实验测试admin_move_table的机制(1)
- 儿童编程微课堂-Scratch准备篇:一、Scratch简介
- oracle获取的执行计划区别及获取真实执行计划
- 列写三角函数表(C语言实现)
- C++ API设计—— API特征
- 利用PageTransformer实现viewpager的视差效果变换和反转特效
- maven+springMVC+mybatis+junit详细搭建过程
- yii2的场景处理
- condition await signal 和 notity wait
- 创建对象的四个注解
- synchronized锁对象
- [LeetCode] 102. Binary Tree Level Order Traversal
- Mybatis 事务管理器 TransactionManager
- apache /etc/apache2/ http.config