android 镜像动画,android 属性动画-----实现卡牌翻转效果

需求:项目中有一个签到功能,点击签到时签到的卡牌实现 180 度翻转显示已经签到的背面。

1、在 res 包下新建 animator 包,新建两个文件,进入动画 anim_in 和 退出动画 anim_out

anim_in :

anim_out :

两个布局,一个是正面,一个是背面(背面的字需要用镜像,这样翻转过来才是正常的文字)

e814ad482028e1ea9a680d27291d28fd.png

a94a070bb3cac4085e26dce547c2b916.png

将两个布局在主界面 include 进去即可

4b2d27a0c9bde9daec5a0a3122d14916.png

动画部分:

private AnimatorSet mRightOutSet;

private AnimatorSet mLeftInSet;

// 设置动画

private void setAnimators() {

mRightOutSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_out);

mLeftInSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_in);

// 动画监听点击事件

mRightOutSet.addListener(new AnimatorListenerAdapter() {

@Override public void onAnimationStart(Animator animation) {

super.onAnimationStart(animation);

click_sign_fl.setClickable(false);

}

});

//设置布局的点击事件

click_sign_fl.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

flipCard(click_sign_fl);

}

});

}

// 改变视角距离, 贴近屏幕

private void setCameraDistance() {

int distance = 16000;

float scale = getResources().getDisplayMetrics().density * distance;

mFlCardFront.setCameraDistance(scale);

mFlCardBack.setCameraDistance(scale);

}

// 翻转卡片

public void flipCard(View view) {

mRightOutSet.setTarget(mFlCardFront);

mLeftInSet.setTarget(mFlCardBack);

mRightOutSet.start();

mLeftInSet.start();

}

调用:

setAnimators(); // 设置动画

setCameraDistance(); // 设置镜头距离

参考了这篇博客:https://www.cnblogs.com/zhangmiao14/p/10285862.html

根据自己的需求进行了修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值