setPageTransformer几个特效

    xiaoxiao2025-05-31  31

    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); } } }

    转载请注明原文地址: https://ju.6miu.com/read-1299450.html
    最新回复(0)