Android-->ViewPager setPageTransformer的简单理解

网上有很多文章关于setPageTransformer的使用, 个人认为篇幅太长,理解起来费劲.(勿喷)

setPageTransformer多用于ViewPager的滑动动画,下面这个项目提供了11种切换效果:
https://github.com/jfeinstein10/JazzyViewPager

关于setPageTransformer的其他详细博文,传送门如下:
http://blog.csdn.net/lmj623565791/article/details/40411921

进入主题:

public class ScalePagerView extends ViewPager {

 public static final String TAG = "ScalePagerView";
 private static final float MIN_SCALE = 0.75f;

 public ScalePagerView(Context context) {
     this(context, null);
 }

 public ScalePagerView(Context context, AttributeSet attrs) {
     super(context, attrs);
     init();
 }

 private void init() {
     this.setPageTransformer(true, new PageTransformer() {
         @Override
         public void transformPage(View page, float position) {
             Log.e(TAG, "id: " + page + " position:" + position);

             if (position < -1) {//看不到的一页 *
                 page.setScaleX(1);
                 page.setScaleY(1);
             } else if (position <= 1) {
                 if (position < 0) {//滑出的页 0.0 ~ -1 *
                     float scaleFactor = (1 - MIN_SCALE) * (0 - position);
                     page.setScaleX(1 - scaleFactor);
                     page.setScaleY(1 - scaleFactor);
                 } else {//滑进的页 1 ~ 0.0 *
                     float scaleFactor = (1 - MIN_SCALE) * (1 - position);
                     page.setScaleX(MIN_SCALE + scaleFactor);
                     page.setScaleY(MIN_SCALE + scaleFactor);
                 }
             } else {//看不到的另一页 *
                 page.setScaleX(1);
                 page.setScaleY(1);
             }
         }
     });
 }
}

代码中注释部分最为关键.注意,此代码需要API>11

至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

你可能感兴趣的:(viewpager)