Android实现沿Y轴的3D翻转动画,从一个View翻转到另一个View,可以使用ObjectAnimator结合View的rotation属性实现。
控件v1和v2在布局中的位置重合,可以使用FrameLayout同时包含两个View。在v1完成0~90度的翻转动画后,隐藏v1,同时展示v2,并让v2进行-90~0度的翻转动画,即可实现效果。
核心Java代码如下。
更多关于Android动画的基本用法总结,可参考:
《Andorid Animation完全总结》
http://www.paincker.com/android-animation-1
-
private void flip(final View v1, final View v2) { -
final int duration = 300; -
final int degree = 90; -
final int degree2 = -degree; -
final ObjectAnimator a, b; -
a = ObjectAnimator.ofFloat(v1, "rotationY", 0, degree); -
b = ObjectAnimator.ofFloat(v2, "rotationY", degree2, 0); -
a.setDuration(duration); -
b.setDuration(duration); -
a.addListener(new Animator.AnimatorListener() { -
@Override -
public void onAnimationStart(Animator animation) { -
} -
@Override -
public void onAnimationEnd(Animator animation) { -
v1.setVisibility(View.GONE); -
v2.setVisibility(View.VISIBLE); -
} -
@Override -
public void onAnimationCancel(Animator animation) { -
} -
@Override -
public void onAnimationRepeat(Animator animation) { -
} -
}); -
v1.setVisibility(View.VISIBLE); -
v2.setVisibility(View.GONE); -
AnimatorSet set = new AnimatorSet(); -
set.play(a).before(b); -
set.start(); -
}