最近有空,写了个ViewPager切换的动画,模拟的是弧形切换,就是左右滑动时的弧形动画。
这里简单记录一下,以后用到就不用再写了。
public static class ZoomArcPageTransformer implements ViewPager.PageTransformer {
private static final float ANGLE_MAX = 10.0f;
private float mAngle;
public void transformPage(View view, float position) {
if (position < -1) {
view.setRotation(0);
} else if (position <= 1) {
// a页滑动至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0
if (position < 0) {
mAngle = (ANGLE_MAX * position);
view.setPivotX(view.getMeasuredWidth() * 1f);
view.setPivotY(view.getMeasuredHeight());
view.setRotation(mAngle);
} else {
mAngle = (ANGLE_MAX * position);
view.setPivotX(view.getMeasuredWidth() * 0);
view.setPivotY(view.getMeasuredHeight());
view.setRotation(mAngle);
}
} else {
view.setRotation(0);
}
}
}
注意一下,setPivotX()和setPivotY()方法很重要,这两个方法是指定动画的旋转缩放的基准点,如果不指定,默认就是中心点。
=====================================
如果你觉得帮到了你,请给作者打赏一口饭吃: