您的浏览器不支持CSS3,建议使用Firfox、Chrome等浏览器,以取得最佳显示效果

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

Android 962℃ 0 1年前 (2016-06-03)

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. }
来自为知笔记(Wiz)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

0

暂无评论

评论前:需填写以下信息,或 登录

用户登录

忘记密码?