首页 > 代码库 > Android动画一

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();    }}

 

Android动画一