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