两行代码搞定ViewPager的过渡动画
来源:互联网 发布:linux ftp命令 编辑:程序博客网 时间:2024/05/22 03:01
ViewPager自带了一种默认的页面滑动切换动画,但是如果产品想要更炫的滑动效果的时候怎么办呢?不要怕,我们可以使用support library的 PagerTransformer,API11 (Honeycomb) 及以上android版本都支持这个类。 用法很方便,
viewpager.setPageTransformer(false, new ViewPager.PageTransformer() { @Override public void transformPage(View page, float position) { // do transformation here }});
transformPage(View page, float position)方法有两个参数,page参数代表当前view 或 fragment,position参数就是它的位置的值。滑动的时候,起始page和目标page的各自的transformPage()就会被同时触发调用。一个page的position为0代表它处于中间,为1代表它完全处于右边,为-1代表它完全处于左边。
官方文档是这样说的,position是一个page相对于屏幕中心的位置。position的值跟随用户滑动page而变化。当page填充屏幕完全可见的时候,它的position是0;page位于屏幕右边,它的position是1。两个page同时滑动到一半的时候,左边page的position是-0.5,右边page的position是0.5。(因为左右是对称的)所以,为了不考虑正负值,我们取position的绝对值:
final float normalizedposition = Math.abs(Math.abs(position) - 1);
现在左右两个page各自有了一个0到1之间的normalizedposition值(左边在递减[1,0],右边在递增[0,1]),怎么用就靠你了。比如,首先,我们可以做一个淡入淡出效果。
@Overridepublic void transformPage(View page, float position) { final float normalizedposition = Math.abs(Math.abs(position) - 1); page.setAlpha(normalizedposition);}
尺寸大小变化效果:
@Overridepublic void transformPage(View page, float position) {final float normalizedposition = Math.abs(Math.abs(position) - 1); page.setScaleX(normalizedposition / 2 + 0.5f); page.setScaleY(normalizedposition / 2 + 0.5f);}
最后一个例子是使page沿Z轴方向旋转30度:
@Overridepublic void transformPage(View page, float position) { page.setRotationY(position * -30);}
上面是一些简单的例子,这里官方给了两个例子。也可以把PagerTransformer和PagerTitleStrip/ PagerTabStrip结合在一起。
原文 http://andraskindler.com/blog/2013/create-viewpager-transitions-a-pagertransformer-example/young YoungPeanut.github.io博客 http://youngpeanut.github.io/2016-01-17/android-viewpager-transform/
- Android两行代码搞定ViewPager的过渡动画
- 两行代码搞定ViewPager的过渡动画
- ViewPager的过渡动画
- Android自定义ViewPager的过渡动画
- ViewPager过渡动画position的理解
- 几行代码实现神奇移动的过渡动画
- AJ学IOS(41)UI之核心动画 两行代码搞定3D转场
- Android 100行代码,搞定带动画的柱状图!
- 两行代码搞定底部菜单栏的实现
- 猫猫学IOS(四十一)UI之核心动画 两行代码搞定3D转场(做android的哭死)
- (素材源码)猫猫学iOS(四十一)UI之核心动画 两行代码搞定3D转场(做android的哭死)
- 80行代码搞定菜单展开动画
- 两行代码搞定多级关联搜索
- 两行代码搞定MFC清屏功能
- 两行代码搞定网站gzip压缩
- Activity过渡的动画
- Activity的过渡动画
- 过渡动画的使用
- 按基础凭证选择批次时数量问题
- 除数为0时被除数为不同数据类型的运行结果
- 提示框message左对齐问题
- RDD的持久化
- canvas 时钟demo
- 两行代码搞定ViewPager的过渡动画
- LayerMask.LayerToName和gameObj.layer区别
- 写android自定义控件
- 分段双调排序实现
- 日志采集框架Flume的安装及使用
- caffe HDF5Data 层使用及数据生成
- VHDL库和包(Libraries and Packages)
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程
- POJ 3414-Pots(BFS-模拟倒水)