当前位置: 首页 > 科技观察

实现翻转卡片的动画效果

时间:2023-03-19 11:55:39 科技观察

在Android设计中,卡片元素常用于正面显示图片或主要信息,背面显示详细内容,如网易有道词典中的翻字、海底捞中的菜谱展示等。卡片视图很容易实现,那么翻转动画如何实现呢??在TB吃海底捞时,我用Pad点餐,发现app的菜谱功能是用卡片控制的,所以分享一下实现方法。有兴趣的朋友可以去海底捞看看:)本文源码的GitHub下载地址为https://github.com/SpikeKing/wcl-flip-anim-demo欢迎关注我的GitHub:https://github.com/SpikeKing首页由前后两张卡片组成,同时设置点击事件flipCard。逻辑,初始化动画和相机距离。@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);setAnimators();//设置动画setCameraDistance();//设置镜头距离}动画初始化右出(RightOut)和对于左入(LeftIn)动画,使用动画集AnimatorSet,当右出动画开始时,点击事件无效,当左入动画结束时,点击事件恢复。//设置动画privatevoidsetAnimators(){mRightOutSet=(AnimatorSet)AnimatorInflater.loadAnimator(this,R.animator.anim_out);mLeftInSet=(AnimatorSet)AnimatorInflater.loadAnimator(this,R.animator.anim_in);//设置点击事件mRightOutSet.addListener(newAnimatorListenerAdapter(){@OverridepublicvoidonAnimationStart(Animatoranimation){super.onAnimationStart(动画);mFlContainer.setClickable(false);}});mLeftInSet.addListener(newAnimatorListenerAdapter(){@OverridepublicvoidonAnimationEnd(Animatoranimation){super.onAnimationEnd(animation);mFlContainer.setClickable(true);}});}右出动画旋转180°,旋转到一半时卡片消失。左动画开头是隐藏的,反向旋转,当旋转到一半时,卡片显示出来。相机角度改变视角,涉及到旋转卡片的Y轴,即rotationY,并且视角距离需要修改,如果不修改,那么会超出屏幕高度,影响视觉体验。//改变视角距离,贴近屏幕比例);}旋转control设置右出和左入动画的目标控件,两个动画同步,区分前后。//翻转卡片publicvoidflipCard(Viewview){//Fro如果(!mIsShowBack){mRightOutSet.setTarget(mFlCardFront);mLeftInSet.setTarget(mFlCardBack);mRightOutSet.start();mLeftInSet.start();mIsShowBack=true;}else{//背面朝上}动画效果动画效果很简单,所有的逻辑都不到50行,这么好玩的动画,用起来吧。好的,就这些!好好享受!