• 需求
    对ImageView进行类似于翻纸牌的动画
  • 解决
    各种Animator的组合

第一步动画:
动画代码文件1,card_flip_left_out.xml

  <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" >    <!-- 先缩小 -->    <objectAnimator  android:duration="200" android:propertyName="scaleX" android:valueFrom="1.0" android:valueTo="0.8" />    <objectAnimator  android:duration="200" android:propertyName="scaleY" android:valueFrom="1.0" android:valueTo="0.8" />    <!-- 再旋转 -->    <objectAnimator  android:duration="@integer/card_flip_time_full" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="rotationY" android:startOffset="200" android:valueFrom="0" android:valueTo="90" />    <!-- 同时透明度变化 -->    <objectAnimator  android:duration="@integer/card_flip_time_full" android:propertyName="alpha" android:startOffset="200" android:valueFrom="1.0" android:valueTo="0.0" />  </set>

第二步动画
动画文件2:card_flip_left_out

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <!-- 立即设置为透明 -->    <objectAnimator  android:duration="0" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0" />    <!-- 旋转 -->    <objectAnimator  android:duration="@integer/card_flip_time_full" android:interpolator="@android:interpolator/accelerate_decelerate" android:propertyName="rotationY" android:valueFrom="-90" android:valueTo="0" />    <!-- 旋转一半的时间,逐渐显示 -->    <objectAnimator  android:duration="1" android:propertyName="alpha" android:startOffset="@integer/card_flip_time_half" android:valueFrom="0.0" android:valueTo="1.0" />    <!-- 最后放大 -->    <objectAnimator  android:duration="200" android:propertyName="scaleX" android:startOffset="@integer/card_flip_time_full" android:valueFrom="0.8" android:valueTo="1.0" />    <objectAnimator  android:duration="200" android:propertyName="scaleY" android:startOffset="@integer/card_flip_time_full" android:valueFrom="0.8" android:valueTo="1.0" /></set>

下面就是写java代码啦,在第一个动画结束的时候,换图。

package com.example.android.animationsdemo;import android.animation.Animator;import android.animation.AnimatorInflater;import android.animation.AnimatorListenerAdapter;import android.animation.AnimatorSet;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;/** * @date 2015年3月18日 下午2:28:33 * @author Zheng Haibo * @Description: 图片的翻转动画 */public class ImageFlipActivity extends Activity {    private ImageView imageView;    private int clickCount = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_image_flip);        imageView = (ImageView) findViewById(R.id.iv_show);        imageView.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                playFlipAnimation2();            }        });    }    private void playFlipAnimation2() {        clickCount++;        AnimatorSet animatorSetOut = (AnimatorSet) AnimatorInflater                .loadAnimator(this, R.animator.card_flip_left_out);        final AnimatorSet animatorSetIn = (AnimatorSet) AnimatorInflater                .loadAnimator(this, R.animator.card_flip_left_in);        animatorSetOut.setTarget(imageView);        animatorSetIn.setTarget(imageView);        animatorSetOut.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {// 翻转90度之后,换图                if (clickCount % 2 == 0) {                    imageView.setImageResource(R.drawable.image1);                } else {                    imageView.setImageResource(R.drawable.image2);                }                animatorSetIn.start();            }        });        animatorSetIn.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                // TODO            }        });        animatorSetOut.start();    }}
  • 更多交流

Android开发联盟QQ群:272209595

更多相关文章

  1. andriod一个不错的启动菜单显示屏动画效果
  2. 安卓开发_浅谈Android动画(三)
  3. 一些优秀的开源项目
  4. android开发之interpolator的使用
  5. Android(安卓)自定义感光器控件SolarProgressView,也可当做普通Pr
  6. Android(安卓)动画系统汇总
  7. Android动画分类
  8. 【Android(安卓)基础】Progressbar 实现Loading动画
  9. Android之android.graphics.drawable.Drawable.Callback回调接口

随机推荐

  1. 【Android开发学习25】界面布局之相对布
  2. Android 下的Search
  3. 安卓APP开发中的屏幕适配问题如何解决?
  4. Android开发--NDK之环境搭建
  5. Android的设计与实现:卷I
  6. Android(安卓)界面类 Activity 和 Fragme
  7. Android聊天室(客户端)
  8. 关于FrameLayout布局的位置问题
  9. Android:使用命令行工具adb、mksdcard等
  10. Android的交叉编译工具