Android动画一

Android动画的两种形式

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:id="@+id/imageView"
        android:onClick="click"
        android:src="@android:drawable/ic_lock_idle_alarm" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="move"
        android:onClick="move"
        android:id="@+id/button"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="102dp" />

</RelativeLayout>

代码文件:

package com.androidbase.zjn.androidbase;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void click(View view){
        Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show();
    }
    public void move(View view){
        TranslateAnimation  animation = new TranslateAnimation(0,200,0,0);
        animation.setDuration(1000);//运动1秒钟
        animation.setFillAfter(true);//动画结束后果停留到原来的位置
        ImageView imageView =(ImageView) findViewById(R.id.imageView);
        imageView.startAnimation(animation);//imageView绑定动画
    }

}

使用Animator的效果:

ImageView imageView =(ImageView) findViewById(R.id.imageView);
        ObjectAnimator.ofFloat(imageView,"translationX",0,200F).setDuration(1000).start();
        ObjectAnimator.ofFloat(imageView,"translationY",0,200F).setDuration(1000).start();
        ObjectAnimator.ofFloat(imageView,"rotation",0,360F).setDuration(1000).start();

使用几个一起懂:

        ImageView imageView =(ImageView) findViewById(R.id.imageView);
        PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation",0,360F);
        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX",0,200F);
        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY",0,200F);
        ObjectAnimator.ofPropertyValuesHolder(imageView,p1,p2,p3).setDuration(1000).start();
    //几个动画一起显示
        ImageView imageView =(ImageView) findViewById(R.id.imageView);
        ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView,"translationX",0,200F);
        ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView,"translationY",0,200F);
        ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView,"rotation",0,360F);
        AnimatorSet set = new AnimatorSet();
        set.playTogether(animator1,animator2,animator3);
        set.setDuration(1000);
        set.start();

完整的代码:

package com.androidbase.zjn.androidbase;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void click(View view){
        Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show();
    }
    public void move(View view){
        //TranslateAnimation只是简单的移动
//        TranslateAnimation  animation = new TranslateAnimation(0,200,0,0);
//        animation.setDuration(1000);//运动1秒钟
//        animation.setFillAfter(true);//动画结束后果停留到原来的位置
//        ImageView imageView =(ImageView) findViewById(R.id.imageView);
//        imageView.startAnimation(animation);//imageView绑定动画

//        ImageView imageView =(ImageView) findViewById(R.id.imageView);
//        ObjectAnimator.ofFloat(imageView,"translationX",0,200F).setDuration(1000).start();
//        ObjectAnimator.ofFloat(imageView,"translationY",0,200F).setDuration(1000).start();
//        ObjectAnimator.ofFloat(imageView,"rotation",0,360F).setDuration(1000).start();

//        上面的优化
//        ImageView imageView =(ImageView) findViewById(R.id.imageView);
//        PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation",0,360F);
//        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX",0,200F);
//        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY",0,200F);
//        ObjectAnimator.ofPropertyValuesHolder(imageView,p1,p2,p3).setDuration(1000).start();

        //几个动画一起显示
        ImageView imageView =(ImageView) findViewById(R.id.imageView);
        ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView,"translationX",0,200F);
        ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView,"translationY",0,200F);
        ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView,"rotation",0,360F);
        AnimatorSet set = new AnimatorSet();
        //set.playTogether(animator1,animator2,animator3);
        //set.playSequentially(animator1,animator2,animator3);//按照顺序动画
        set.play(animator1).with(animator2).before(animator3);//动画1和动画2一块进行,让后再进行动画3
        set.setDuration(1000);
        set.start();

    }

}
原文地址:https://www.cnblogs.com/zhoujn/p/4251004.html