java我可以为ViewPager中片段的进入和退出提供不同的动画吗?
我已经创建了一个带有5个自定义动画片段的viewpager。到目前为止,这是一项容易的任务。现在挑战开始了。我必须为viewpager中的所有片段实现不同的进入和退出动画。对于每个片段进入屏幕和退出屏幕的方式,可以有不同的动画。我还没有找到任何解决办法。这就是我到目前为止所做的,但很明显,它只显示了一个动画
在活动中
mViewPager.setPageTransformer(false, new ViewPagerAnimation(ViewPagerAnimation
.AnimationType.FLIP));
在ViewPagerAnimation类中
public class ViewPagerAnimation implements ViewPager.PageTransformer {
public enum AnimationType {
FLIP,
SCALE_IN_OUT
}
private static final float MIN_SCALE_DEPTH = 0.75f;
private static final float MIN_SCALE_ZOOM = 0.85f;
private static final float MIN_ALPHA_ZOOM = 0.5f;
private static final float SCALE_FACTOR_SLIDE = 0.85f;
private static final float MIN_ALPHA_SLIDE = 0.35f;
private static final float MIN_FLIP_CUBE_PIVOT = 0.5f;
private static final float MIN_FLOW_ROTATION = 30f;
private final AnimationType mAnimationType;
public ViewPagerAnimation(AnimationType animationType) {
mAnimationType = animationType;
}
public void transformPage(View pageView, float position) {
switch (mAnimationType) {
case FLIP:
setFlipAnimation(pageView, position);
break;
case SCALE_IN_OUT:
setScaleInOutAnimation(pageView, position);
break;
default:
}
}
private void setFlipAnimation(View pageView, float position) {
final float rotation = 180f * position;
pageView.setAlpha(rotation > 90f || rotation < -90f ? 0 : 1);
pageView.setPivotX(pageView.getWidth() * MIN_FLIP_CUBE_PIVOT);
pageView.setPivotY(pageView.getHeight() * MIN_FLIP_CUBE_PIVOT);
pageView.setRotationY(rotation);
}
private void setScaleInOutAnimation(View pageView, float position) {
pageView.setPivotX(position < 0 ? 0 : pageView.getWidth());
pageView.setPivotY(pageView.getHeight() / 2f);
float scale = position < 0 ? 1f + position : 1f - position;
pageView.setScaleX(scale);
pageView.setScaleY(scale);
}
}
共 (0) 个答案