对于ViewPage设置transform参数的说明


在做引导页时,我们经常使用ViewPager+Adapter的方式实现。但是如果想在页面切换时增加一些动画,那就得利用ViewPager的setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer) 方法了。其中PageTransformer 是个接口,在实现这个接口的回调方法中有一个position参数,一直忘记它的使用方法,今天主要想对这个参数做一个说明,也算是对自己的一个总结。

/**
 * 透明度变换
 */
public class AlphPageTransformer implements ViewPager.PageTransformer {
    private static final float MIN_SCALE = 0.75f;
    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();
        if (position < -1) { // [-Infinity,-1)
            view.setAlpha(0);
        } else if (position <= 0) { // [-1,0]
            view.setAlpha(position+1);
            view.setTranslationX(0);
        } else if (position <= 1) { // (0,1]
            view.setAlpha(1 - position);
            view.setTranslationX(pageWidth * -position);
        } else { // (1,+Infinity]
            view.setAlpha(0);
        }
    }
}
上面是一个透明度变化的 Transformer,从 transformPage(View view,float postition)方法中可以看出,position主要分为三个区域值 (-Infinity,-1)、[-1,1]、(1,+Infinity)

(-Infinity,-1) --- 从屏幕左侧移除的View,在屏幕上不可见。

(1,+Infinity) --- 从屏幕右侧侧移除的View,在屏幕上不可见。

[-1,1] --- 在屏幕上可见,动画效果主要是在这个范围内进行实现。

例如

(1)从View1滑动到View2的过程(即向左滑动),其中对于View1而言,其position的值是从0逐渐减小到-1。而对于View2,其position值是从1逐渐减小到0。

(2)从View2滑动到View1的过程(即向右滑动),其中对于View1而言,其position的值是从-1逐渐增大到0。而对于View2,其position的值是从0逐渐增大到1。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值