setPageTransformer几个特效

来源:互联网 发布:八卦九宫打法优化版 编辑:程序博客网 时间:2024/06/08 07:05

1、DepthPageTransformer

import android.support.v4.view.ViewPager;import android.view.View;/** * Created by Administrator on 2016/8/12. */public class DepthPageTransformer implements ViewPager.PageTransformer{    private  static final float MIN_SCALE=0.75f;    @Override    public void transformPage(View view, float position) {        int pageWidth = view.getWidth();        if (position<-1){            view.setAlpha(0);        }else if(position<=0){            view.setAlpha(1);            view.setTranslationX(0);            view.setScaleX(1);            view.setScaleY(1);        }else if (position<=1){            view.setAlpha(1-position);            view.setTranslationX(pageWidth*-position);            float scaleFactor=MIN_SCALE+(1-MIN_SCALE)*(1-Math.abs(position));            view.setScaleY(scaleFactor);            view.setScaleY(scaleFactor);        }else{            view.setAlpha(0);        }    }}
2、RotateDownPageTransformer

import android.support.v4.view.ViewPager;import android.view.View;/** * Created by Administrator on 2016/8/12. */public class RotateDownPageTransformer implements ViewPager.PageTransformer {    private  static final float ROT_MAX=20.0f;    private  float mRot;    @Override    public void transformPage(View view, float position) {        if (position<-1){            view.setRotation(0);        }else if (position<=1){       //     if (position<0){          //      mRot=(ROT_MAX*position);               // view.setPivotX();            //    view.setPivotX(view.getMeasuredWidth()*0.5f);           //     view.setPivotY(view.getMeasuredHeight());            //    view.setRotation(mRot);         //   }else {                mRot=(ROT_MAX*position);                view.setPivotX(view.getMeasuredWidth()*0.5f);                view.setPivotY(view.getMeasuredHeight());                view.setRotation(mRot);           // }        }else{            view.setRotation(0);        }    }}


3、ZoomOutPageTransformer


import android.support.v4.view.ViewPager;import android.view.View;/** * Created by Administrator on 2016/8/12. */public class ZoomOutPageTransformer implements ViewPager.PageTransformer {   private static  final float MIN_SCALE=0.85f;    private  static  final  float MIN_ALPHA=0.5f;    @Override    public void transformPage(View view, float position) {        int pageWidth = view.getWidth();        int pageHeight = view.getHeight();        if (position<-1){            view.setAlpha(0);        }else if(position<=1){            float scaleFactor=Math.max(MIN_SCALE,1-Math.abs(position));            float vertMargin=pageHeight*(1-scaleFactor)/2;            float horzMargin=pageHeight*(1-scaleFactor)/2;                if (position<0){                    view.setTranslationX(horzMargin-vertMargin/2);                }else {                    view.setTranslationX(-horzMargin+vertMargin/2);                }            view.setScaleX(scaleFactor);            view.setScaleY(scaleFactor);            view.setAlpha(MIN_ALPHA+(scaleFactor-MIN_SCALE)/(1-MIN_SCALE)*(1-MIN_ALPHA));        }else {            view.setAlpha(0);        }    }}



0 0