Android如何实现翻转动画效果(卡片翻转)

目录

  • 前言
  • 需求
  • 一、先介绍三个插值器
  • 二、实现步骤
    • 1.效果图
    • 2.布局
    • 3.逻辑判断(是否隐藏)
    • 4.翻转动画
    • 5.bug出现
    • 6.bug解决
  • 三、源码
    • 四、总结

      前言
      最近好友问计蒙翻转动画,恰好在大二那年看Android Api Demo时记了笔记,由此写一篇文章。

      需求
      屏幕右滑事件触发卡片的翻转效果 ,为了方便,在例子中将右滑事件改成按钮点击事件
      老规矩,最后有源码

      一、先介绍三个插值器
      • LinearInterpolator()其变化速率恒定
      • AccelerateInterpolator()其变化开始速率较慢,后面加速
      • DecelerateInterpolator()其变化开始速率较快,后面减速

      二、实现步骤

      1.效果图
      Android如何实现翻转动画效果(卡片翻转)
      文章图片


      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
      Android如何实现翻转动画效果(卡片翻转)
      文章图片


      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实现翻转动画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

        推荐阅读