android 系统提供了四种Tweened animation (补间动画):TranslateAnimation 、 AlphaAnimation 、 RotateAnimation 、 ScaleAnimation 。
TranslateAnimation: 移动 , 指示位置坐标的变化。
AlphaAnimation: 渐变 ,指示对象明暗(模糊,清晰)。
RotateAnimation: 旋转 , 基于某个条件做转动,eg:围绕view中心做逆时针旋转。
ScaleAnimation: 大小,改变对象的大小。
TranslateAnimation(移动补间动画)
TranslateAnimation 控制对象位置的动画类,用于控制View对象的位置继承自Animation,结构如下:
TranslateAnimation 中关键是定义View对象的起始点(fromX , fromY)和终止点( toX , toY)和动画持续时间 duration 。
下面结合实例,简单讲解一下使用移动动画类(TranslateAnimation)的步骤:
1、创建android工程神马的就不说了,在res\drawable目录下准备一张名为ting_frame_0的图片。在res\anim文件夹下创建文件 translate_anim.xml , 其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="500"
android:fromYDelta="0"
android:toYDelta="620"
android:duration="200"
android:repeatCount="-1"
android:repeatMode="reverse">
</translate>
2、创建一个layout文件 translate_anim_layout.xml ,其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/translate_image"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:src="@drawable/ting_frame_0"
android:contentDescription="@string/app_name"
android:adjustViewBounds="true"
android:scaleType="centerInside" />
</LinearLayout>
3、创建用于显示动画的activity 命名为 TranslateAnimActivity.java (该名可以随便取),内容如下:
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class TranslateAnimActivity extends Activity {
Animation mTranslate;
ImageView mTransImg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.translate_anim_layout);
init();
mTranslate = (Animation) AnimationUtils.loadAnimation(this,
R.anim.translate_anim);
}
void init() {
mTransImg = (ImageView) findViewById(R.id.translate_image);
}
@Override
protected void onPause() {
super.onPause();
mTransImg.clearAnimation();
}
@Override
protected void onResume() {
super.onResume();
mTransImg.startAnimation(mTranslate);
}
}
其中播放动画最好的做法是放到onWindowFocusChanged方法中。
加载定义在xml中的动画 AnimationUtils.loadAnimation(this, R.anim.translate_anim);
对View播放动画: mTransImg.startAnimation(mTranslate);
由于该文的实例是基于上文android动画——Frame by Frame Animation 创建的, 若对文中内容存在疑问的请留言,谢谢!