android 动画片 Tweened Animation 之 TranslateAnimation
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 创建的, 若对文中内容存在疑问的请留言,谢谢!