一、AlphaAnimation
可以用來在軟件打開的時候做開機動畫。實例:
View view = getLayoutInflater().inflate(R.layout.wait_for_data, null); //首先是得到一個View
AlphaAnimation animation = new AlphaAnimation(0.3f, 1.0f); //0.0意味着完全透明 1.0意味着不透明
animation.setDuration(3000); //得到一個AlphaAnimation對象 並設置相關屬性
//這裏是設置動畫監聽 動畫執行的時候 執行的操作
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
addData = new Thread() {
@Override
public void run() {
initData();
super.run();
}
};
addData.start();
new PreWokerTask().execute();
}
});
view.setAnimation(animation); //這裏是將View設置動畫, 也不一定是View 也可以使image 或其它控件。
setContentView(view);
二、AnimationDrawable
AnimationDrawable可以設置一個動態的動畫 它的實質就是幾張圖片 然後切換圖片 看起來有動畫效果
- /**
- * @description android中的逐幀動畫.
- * 逐幀動畫的原理很簡單,跟電影的播放一樣,一張張類似的圖片不停的切換,當切換速度達到一定值時,
- * 我們的視覺就會出現殘影,殘影的出現保證了視覺上變化的連續性,這時候圖片的切換看在我們眼中就跟真實的一樣了。
- * 想使用逐幀動畫:
- * 第一步:需要在res/drawable文件夾下新建一個xml文件,該文件詳細定義了動畫播放時所用的圖片、切換每張圖片
- * 所用的時間、是否爲連續播放等等。(有些文章說,在res/anim文件夾下放置該文件,事實證明,會出錯哦)
- * 第二步:在代碼中,將該動畫布局文件,賦值給特定的圖片展示控件,如本例子中的ImageView。
- * 第三步:通過imageView.getBackGround()獲取相應的AnimationDrawable對象,然後通過該對象的方法進行控制動畫
- 代碼
- * @author chenzheng_java
- *
- */
- public class Animation1Activity extends Activity {
- ImageView imageView ;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.animation1);
- imageView = (ImageView) findViewById(R.id.imageView_animation1);
- imageView.setBackgroundResource(R.drawable.animation1_drawable);
- }
- public void myClickHandler(View targetButton){
- // 獲取AnimationDrawable對象
- AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();
- // 動畫是否正在運行
- if(animationDrawable.isRunning()){
- //停止動畫播放
- animationDrawable.stop();
- }
- else{
- //開始或者繼續動畫播放
- animationDrawable.start();
- }
- }
- }
存放動畫文件的xml文件:
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- 根標籤爲animation-list,其中oneshot代表着是否只展示一遍,設置爲false會不停的循環播放動畫
- 根標籤下,通過item標籤對動畫中的每一個圖片進行聲明
- android:duration 表示展示所用的該圖片的時間長度
- -->
- <animation-list
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false"
- >
- <item android:drawable="@drawable/a1" android:duration="50"></item>
- <item android:drawable="@drawable/a2" android:duration="50"></item>
- <item android:drawable="@drawable/a3" android:duration="50"></item>
- <item android:drawable="@drawable/a4" android:duration="50"></item>
- <item android:drawable="@drawable/a5" android:duration="50"></item>
- <item android:drawable="@drawable/a6" android:duration="50"></item>
- </animation-list>
除此之外:在AnimationDrawable中,我們還可以看到如下的幾個重要方法:
setOneShot(boolean flag) 和在配置文件中進行配置一樣,可以設置動畫是否播放一次,false爲連續播放;
addFrame (Drawable frame, int duration) 動態的添加一個圖片進入該動畫中