在Android應用程序,使用動畫效果,能帶給用戶更好的感覺。做動畫可以通過XML或Android代碼。本教程中,介紹使用XML來做動畫。在這裡,介紹基本的動畫,如淡入,淡出,旋轉等,需要的朋友可以參考下
效果: http://www.56.com/u82/v_OTM4MDk5MTk.html
第一步: 創建anim文件夾放置動畫xml文件
在res文件夾下,創建一個anim的子文件夾。
第二步: 加載動畫
接著在Activity創建一個Animation類,然後使用AnimationUtils類加載動畫xml
復制代碼 代碼如下:
Animation animFadein;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fadein);
txtMessage = (TextView) findViewById(R.id.txtMessage);
btnStart = (Button) findViewById(R.id.btnStart);
// 加載動畫
animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
}
第三步: 設置動畫監聽器
如果你要監聽動畫的事件,如開始,結束等,你需要實現AnimationListener監聽器,重寫以下方法。
onAnimationEnd(Animation animation) - 當動畫結束時調用
onAnimationRepeat(Animation animation) - 當動畫重復時調用
onAniamtionStart(Animation animation) - 當動畫啟動時調用
復制代碼 代碼如下:
@Override
public void onAnimationEnd(Animation animation) {
// 在動畫結束後使用
// check for fade in animation
if (animation == animFadein) {
Toast.makeText(getApplicationContext(), "Animation Stopped",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAnimationRepeat(Animation animation) {
//當動畫重復時使用
}
@Override
public void onAnimationStart(Animation animation) {
//當動畫開始使用
}
最後一步: 讓動畫動起來啦。可以使用任何UI元素調用startAnimation方法。
以下是一個Textview元素調用的。
txtMessage.startAnimation(animFadein);
完整代碼:
復制代碼 代碼如下:
FadeInActivity(淡入動畫)
?package com.chaowen.androidanimations;
import info.androidhive.androidanimations.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
/**
*
* @author chaowen
*
*/
public class FadeInActivity extends Activity implements AnimationListener {
TextView txtMessage;
Button btnStart;
Animation animFadein;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fadein);
txtMessage = (TextView) findViewById(R.id.txtMessage);
btnStart = (Button) findViewById(R.id.btnStart);
// 加載動畫
animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
// 設置監聽
animFadein.setAnimationListener(this);
// 按鈕
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtMessage.setVisibility(View.VISIBLE);
// 開始動畫
txtMessage.startAnimation(animFadein);
}
});
}
@Override
public void onAnimationEnd(Animation animation) {
// 在動畫結束後使用
// check for fade in animation
if (animation == animFadein) {
Toast.makeText(getApplicationContext(), "Animation Stopped",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAnimationRepeat(Animation animation) {
//當動畫重復時使用
}
@Override
public void onAnimationStart(Animation animation) {
//當動畫開始使用
}
}
一些重要的XML屬性
重要的XML動畫屬性
android:duration 動畫持續時間,時間以毫秒為單位
android:startOffset 動畫之間的時間間隔,從上次動畫停多少時間開始執行下個動畫
android:interpolator 指定一個動畫的插入器
android:fillAfter 當設置為true ,該動畫轉化在動畫結束後被應用
android:repeatMode 定義重復的行為
android:repeatCount 動畫的重復次數
以下是一些基本的動畫XML.
Fade In: 淡入
alpha是漸變透明度效果,值由0到1
fade_in.xml
復制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
</set>
Fade Out : 淡出
以Fade In剛好相反,值由1到0.
fade_out.xml
復制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?