AlphaAnimation 、AnimationDrawable

    一、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可以設置一個動態的動畫   它的實質就是幾張圖片  然後切換圖片 看起來有動畫效果

                

  1. /** 
  2.  * @description android中的逐幀動畫. 
  3.  * 逐幀動畫的原理很簡單,跟電影的播放一樣,一張張類似的圖片不停的切換,當切換速度達到一定值時, 
  4.  * 我們的視覺就會出現殘影,殘影的出現保證了視覺上變化的連續性,這時候圖片的切換看在我們眼中就跟真實的一樣了。 
  5.  * 想使用逐幀動畫: 
  6.  * 第一步:需要在res/drawable文件夾下新建一個xml文件,該文件詳細定義了動畫播放時所用的圖片、切換每張圖片 
  7.  *        所用的時間、是否爲連續播放等等。(有些文章說,在res/anim文件夾下放置該文件,事實證明,會出錯哦) 
  8.  * 第二步:在代碼中,將該動畫布局文件,賦值給特定的圖片展示控件,如本例子中的ImageView。 
  9.  * 第三步:通過imageView.getBackGround()獲取相應的AnimationDrawable對象,然後通過該對象的方法進行控制動畫 

  1. 代碼
  2. * @author chenzheng_java 
  3.  * 
  4.  */  
  5. public class Animation1Activity extends Activity {  
  6.     ImageView imageView ;  
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.animation1);  
  11.           
  12.         imageView = (ImageView) findViewById(R.id.imageView_animation1);  
  13.         imageView.setBackgroundResource(R.drawable.animation1_drawable);  
  14.           
  15.     }  
  16.       
  17.       
  18.     public void myClickHandler(View targetButton){  
  19.         // 獲取AnimationDrawable對象  
  20.         AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();  
  21.           
  22.         // 動畫是否正在運行  
  23.         if(animationDrawable.isRunning()){  
  24.             //停止動畫播放  
  25.             animationDrawable.stop();  
  26.         }  
  27.         else{  
  28.             //開始或者繼續動畫播放  
  29.             animationDrawable.start();  
  30.         }  
  31.           
  32.           
  33.     }  
  34. }  


存放動畫文件的xml文件:

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!--   
  3.     根標籤爲animation-list,其中oneshot代表着是否只展示一遍,設置爲false會不停的循環播放動畫  
  4.     根標籤下,通過item標籤對動畫中的每一個圖片進行聲明  
  5.     android:duration 表示展示所用的該圖片的時間長度  
  6.  -->  
  7. <animation-list  
  8.   xmlns:android="http://schemas.android.com/apk/res/android"  
  9.   android:oneshot="false"  
  10.   >  
  11.     <item android:drawable="@drawable/a1" android:duration="50"></item>  
  12.     <item android:drawable="@drawable/a2" android:duration="50"></item>  
  13.     <item android:drawable="@drawable/a3" android:duration="50"></item>  
  14.     <item android:drawable="@drawable/a4" android:duration="50"></item>  
  15.     <item android:drawable="@drawable/a5" android:duration="50"></item>  
  16.     <item android:drawable="@drawable/a6" android:duration="50"></item>  
  17. </animation-list>  

除此之外:在AnimationDrawable中,我們還可以看到如下的幾個重要方法:

setOneShot(boolean flag) 和在配置文件中進行配置一樣,可以設置動畫是否播放一次,false爲連續播放;

addFrame (Drawable frame, int duration) 動態的添加一個圖片進入該動畫中














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章