Android如何实现翻转动画效果(卡片翻转)
目录
- 前言
- 需求
- 一、先介绍三个插值器
- 二、实现步骤
- 1.效果图
- 2.布局
- 3.逻辑判断(是否隐藏)
- 4.翻转动画
- 5.bug出现
- 6.bug解决
- 三、源码
- 四、总结
前言
最近好友问计蒙翻转动画,恰好在大二那年看Android Api Demo时记了笔记,由此写一篇文章。
需求
屏幕右滑事件触发卡片的翻转效果 ,为了方便,在例子中将右滑事件改成按钮点击事件
老规矩,最后有源码
一、先介绍三个插值器
- LinearInterpolator()其变化速率恒定
- AccelerateInterpolator()其变化开始速率较慢,后面加速
- DecelerateInterpolator()其变化开始速率较快,后面减速
二、实现步骤
1.效果图
文章图片
2.布局
一个按钮,两个TextView(布局文件在源码部分)
3.逻辑判断(是否隐藏)
final TextView visibletext; final TextView invisibletext; //逻辑判断if (textview1.getVisibility() == View.GONE) {visibletext = textview2; invisibletext = textview1; } else {invisibletext = textview2; visibletext = textview1; }
4.翻转动画
//LinearInterpolator()其变化速率恒定ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visibletext, "rotationY", 0f, 90f); visToInvis.setDuration(500); //AccelerateInterpolator()其变化开始速率较慢,后面加速visToInvis.setInterpolator(new AccelerateInterpolator()); final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisibletext, "rotationY",-90f, 0f); invisToVis.setDuration(500); //DecelerateInterpolator()其变化开始速率较快,后面减速invisToVis.setInterpolator(new DecelerateInterpolator()); visToInvis.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator anim) {visibletext.setVisibility(View.GONE); invisToVis.start(); invisibletext.setVisibility(View.VISIBLE); }}); visToInvis.start();
5.bug出现
发现实现后,第一次点击出现bug
文章图片
6.bug解决
在找到控件后,默认设置y方向角度
textview2.setRotationY(-90f);
三、源码 MainActivity.java
public class MainActivity extends Activity {private TextView textview1; private TextView textview2; private Button button; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //bug解决textview2.setRotationY(-90f); button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {flipAnimation(); }}); }private void initView() {textview1 = (TextView) findViewById(R.id.textview1); textview2 = (TextView) findViewById(R.id.textview2); button = (Button) findViewById(R.id.button); }private void flipAnimation() {final TextView visibletext; final TextView invisibletext; //逻辑判断if (textview1.getVisibility() == View.GONE) {visibletext = textview2; invisibletext = textview1; } else {invisibletext = textview2; visibletext = textview1; }//LinearInterpolator()其变化速率恒定ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visibletext, "rotationY", 0f, 90f); visToInvis.setDuration(500); //AccelerateInterpolator()其变化开始速率较慢,后面加速visToInvis.setInterpolator(new AccelerateInterpolator()); final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisibletext, "rotationY",-90f, 0f); invisToVis.setDuration(500); //DecelerateInterpolator()其变化开始速率较快,后面减速invisToVis.setInterpolator(new DecelerateInterpolator()); visToInvis.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator anim) {visibletext.setVisibility(View.GONE); invisToVis.start(); invisibletext.setVisibility(View.VISIBLE); }}); visToInvis.start(); }}
activity_main.xml
四、总结 最后将button的点击事件改成屏幕监听事件即可。
【Android如何实现翻转动画效果(卡片翻转)】到此这篇关于Android如何实现翻转动画效果的文章就介绍到这了,更多相关Android实现翻转动画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- android第三方框架(五)ButterKnife
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- 孩子不是实现父母欲望的工具——林哈夫