参考文章:http://blog.csdn.net/guolin_blog/article/details/43536355
1.MainActivity.java
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener{
private TextView textview;
private Button button;
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* //值在300毫秒的时间内从0平滑过渡到了1
ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f);
anim.setDuration(300); */
/* // 一个值在5秒内从0过渡到5,再过渡到3,再过渡到10
ValueAnimator anim = ValueAnimator.ofFloat(0f, 5f, 3f, 10f);
anim.setDuration(5000); */
/* //将一个整数值从0平滑地过渡到100
ValueAnimator anim = ValueAnimator.ofInt(0, 100);
anim.setDuration(300);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//float a=Float.parseFloat(b.toString());//b为object类型
float currentValue = Float.parseFloat( animation.getAnimatedValue().toString());
Log.d("TAG", "cuurent value is " + currentValue);
}
});
anim.start();*/
//将一个TextView在5秒中内从常规变换成全透明,再从全透明变换成常规
button=(Button)findViewById(R.id.btn);
textview=(TextView)findViewById(R.id.txt);
button.setOnClickListener(this);
}
@SuppressLint("NewApi") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*//将一个TextView在5秒中内从常规变换成全透明,再从全透明变换成常规
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f);
animator.setDuration(5000);
animator.start(); */
/* //将TextView进行一次360度的旋转
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "rotation", 0f, 360f);
animator.setDuration(5000);
animator.start(); */
/*//将TextView先向左移出屏幕,然后再移动回来
float curTranslationX = textview.getTranslationX();
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "translationX", curTranslationX, -500f, curTranslationX);
animator.setDuration(5000);
animator.start(); */
/*//将TextView在垂直方向上放大3倍再还原
ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "scaleY", 1f, 3f, 1f);
animator.setDuration(5000);
animator.start(); */
/* //组合动画 让TextView先从屏幕外移动进屏幕,然后开始旋转360度,旋转的同时进行淡入淡出操作
ObjectAnimator moveIn = ObjectAnimator.ofFloat(textview, "translationX", -500f, 0f);
ObjectAnimator rotate = ObjectAnimator.ofFloat(textview, "rotation", 0f, 360f);
ObjectAnimator fadeInOut = ObjectAnimator.ofFloat(textview, "alpha", 1f, 0f, 1f);
AnimatorSet animSet = new AnimatorSet();
animSet.play(rotate).with(fadeInOut).after(moveIn);
animSet.setDuration(5000);
animSet.start(); */
//使用XML来完成复杂的组合动画操作,比如将一个视图先从屏幕外移动进屏幕,
//然后开始旋转360度,旋转的同时进行淡入淡出操作
Animator animator = AnimatorInflater.loadAnimator(getBaseContext(), R.animator.anim_file);
animator.setTarget(textview);
animator.start();
}
}
2.布局文件:activity_main.xml
<LinearLayout 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:orientation="vertical">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Animate"/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="hello!" />
</LinearLayout>
3.资源文件:在res目录下新建animator文件夹,然后新建anim_file.xml文件
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<objectAnimator
android:duration="2000"
android:propertyName="translationX"
android:valueFrom="-500"
android:valueTo="0"
android:valueType="floatType" >
</objectAnimator>
<set android:ordering="together" >
<objectAnimator
android:duration="3000"
android:propertyName="rotation"
android:valueFrom="0"
android:valueTo="360"
android:valueType="floatType" >
</objectAnimator>
<set android:ordering="sequentially" >
<objectAnimator
android:duration="1500"
android:propertyName="alpha"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType" >
</objectAnimator>
<objectAnimator
android:duration="1500"
android:propertyName="alpha"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" >
</objectAnimator>
</set>
</set>
</set>