先在在layout放置兩個元件,我這邊的範例是使用ImageView 、Button兩個元件介紹
layout:
<Button
android:id="@+id/Button_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button" />
<ImageView
android:id="@+id/ImageView_Sample"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_launcher" />
移動特效
Sample:
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.AlphaAnimation;
ImageView mImage_sample;
Button mButton_start;
init()
{
mImage_sample = (ImageView) findViewById(R.id.ImageView_Sample);
mButton_start = (Button) findViewById(R.id.Button_start);
mButton_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//移動效果
Animation amTranslate = new TranslateAnimation(0.0f, 100.0f, 0.0f, 100.0f);
//setDuration (long durationMillis) 設定動畫開始到結束的執行時間
amTranslate.setDuration(2000);
//setRepeatCount (int repeatCount) 設定重複次數 -1為無限次數 0
amTranslate.setRepeatCount(-1);
//旋轉效果
Animation amRotate = new RotateAnimation(0.0f, 360.0f, 0.0f, 100.0f);
//setDuration (long durationMillis) 設定動畫開始到結束的執行時間
amRotate.setDuration(2000);
//setRepeatCount (int repeatCount) 設定重複次數 -1為無限次數 0
amRotate.setRepeatCount(-1);
//放大縮小效果
Animation amScale = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
//setDuration (long durationMillis) 設定動畫開始到結束的執行時間
amRotate.setDuration(2000);
//setRepeatCount (int repeatCount) 設定重複次數 -1為無限次數 0
amRotate.setRepeatCount(-1);
//淡進淡出效果
Animation amAlpha = new AlphaAnimation(1.0f, 0.0f);
//setDuration (long durationMillis) 設定動畫開始到結束的執行時間
amAlpha.setDuration(2000);
//setRepeatCount (int repeatCount) 設定重複次數 -1為無限次數 0
amAlpha.setRepeatCount(-1);
//特效組合
AnimationSet amSet = new AnimationSet(false);
amSet.addAnimation(amTranslate);
amSet.addAnimation(amRotate);
amSet.addAnimation(amScale);
amSet.addAnimation(amAlpha);
//將動畫參數設定到圖片並開始執行動畫
mImage_sample.startAnimation(amSet);
}
});
}
若要使用XML的方式為在res下建立一個anim的資料夾 res/anim
Sample:animationset.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="2000"
android:fromXDelta="0"
android:fromYDelta="0"
android:repeatCount="-1"
android:toXDelta="100"
android:toYDelta="100" >
</translate>
<scale
android:duration="2000"
android:fromXScale="0"
android:fromYScale="0"
android:repeatCount="-1"
android:toXScale="1"
android:toYScale="1" >
</scale>
<rotate
android:duration="2000"
android:fromDegrees="0"
android:pivotX="0"
android:pivotY="100"
android:repeatCount="-1"
android:toDegrees="360" >
</rotate>
<alpha
android:duration="2000"
android:fromAlpha="1"
android:repeatCount="-1"
android:toAlpha="0" >
</alpha>
</set>
Code:import android.view.animation.AnimationUtils; Animation am = AnimationUtils.loadAnimation(mContext, R.anim.animationset); mImage_sample.startAnimation(am);
其他文章:
Android TranslateAnimation 移動效果 動態特效
Android ScaleAnimation 放大縮小效果 動態特效
Android RotateAnimation 旋轉效果 動態特效
Android AlphaAnimation 淡進淡出效果 動態特效
Android AnimationSet 組合特效 動態特效

沒有留言:
張貼留言