Android利用ObjectAnimator实现3D翻转动画

Android实现沿Y轴的3D翻转动画,从一个View翻转到另一个View,可以使用ObjectAnimator结合View的rotation属性实现。

控件v1和v2在布局中的位置重合,可以使用FrameLayout同时包含两个View。在v1完成0~90度的翻转动画后,隐藏v1,同时展示v2,并让v2进行-90~0度的翻转动画,即可实现效果。

核心Java代码如下。

完整工程下载
https://github.com/jzj1993/Flip3dAnimation

更多关于Android动画的基本用法总结,可参考:

《Andorid Animation完全总结》
http://www.paincker.com/android-animation-1

  1. private void flip(final View v1, final View v2) {

  2. final int duration = 300;

  3. final int degree = 90;

  4. final int degree2 = -degree;

  5. final ObjectAnimator a, b;

  6. a = ObjectAnimator.ofFloat(v1, "rotationY", 0, degree);

  7. b = ObjectAnimator.ofFloat(v2, "rotationY", degree2, 0);

  8. a.setDuration(duration);

  9. b.setDuration(duration);

  10. a.addListener(new Animator.AnimatorListener() {

  11. @Override

  12. public void onAnimationStart(Animator animation) {

  13. }

  14. @Override

  15. public void onAnimationEnd(Animator animation) {

  16. v1.setVisibility(View.GONE);

  17. v2.setVisibility(View.VISIBLE);

  18. }

  19. @Override

  20. public void onAnimationCancel(Animator animation) {

  21. }

  22. @Override

  23. public void onAnimationRepeat(Animator animation) {

  24. }

  25. });

  26. v1.setVisibility(View.VISIBLE);

  27. v2.setVisibility(View.GONE);

  28. AnimatorSet set = new AnimatorSet();

  29. set.play(a).before(b);

  30. set.start();

  31. }