最简洁代码实现卡片翻转效果

转载请注明出处

http://blog.csdn.net/brucehurrican/article/details/51135873


之前做过通过camera类来实现3D翻转卡片的效果,但是代码量比较多。想想有没有其他的方法来实现这个,答案是有的,通过属性动画就可以实现。

核心代码如下:

Button btn_card;
 
  
ImageView iv_3d;
boolean flag = true;
if (flag) {
    ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(iv_3d, "rotationY", 0, 180f);
    ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(iv_3d, "alpha", 1f, 0.2f);
    AnimatorSet set = new AnimatorSet();
    set.playTogether(objectAnimator1, objectAnimator2);
    set.setDuration(2000);
    set.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationStart(Animator animation) {
            btn_card.setClickable(false);// 防止用户多次点击
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            btn_card.setClickable(true);
        }
    });
    set.start();
    flag = false;
} else {
    ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(iv_3d, "rotationY", 180f, 0);
    ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(iv_3d, "alpha", 0.2f, 1f);
    AnimatorSet set = new AnimatorSet();
    set.playTogether(objectAnimator1, objectAnimator2);
    set.setDuration(2000);
    set.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationStart(Animator animation) {
            btn_card.setClickable(false);// 这里的作用
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            btn_card.setClickable(true);
        }
    });
    set.start();
    flag = true;
}
这样就完成了,是不是很简洁。如果大家有更好的方法可以互相学习下。

你可能感兴趣的:(android学习笔记)