[Android動畫] 補間動畫-動畫集合類( AnimationSet)六

AnimationSet類是Android系統中的動畫集合類,用於控制View對象進行多個動做的組合,該類繼承於Animation類。 AnimationSet類中的不少方法都與Animation類一致,該類中最經常使用的方法即是addAnimation方法,該方法用於爲動畫集合對象 添加動畫對象。

【基本語法】public void addAnimation (Animation a)ide

其中,參數a爲Animation動畫對象,能夠是前述任何一種補間動做。動畫

【實例演示】下面經過代碼來演示如何設置一個組合動畫效果。spa

public class firstActivity extends Activity {  
/** Called when the activity is first created. */  
@Override  
public void onCreate(Bundle savedInstanceState) {               //重載onCreate方法  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
 
    final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView對象  
    Button btn1=(Button)findViewById(R.id.button1);             //按鈕對象  
    Button btn2=(Button)findViewById(R.id.button2);  
    final Animation translateAnimation=new TranslateAnimation(0,300,0,300);                                                                 //設置位置變化動畫  
    final Animation scaleAnimation = new   
     ScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);  
                                                            //設置尺寸變化動畫  
    final Animation alphaAnimation=new AlphaAnimation(0.1f,1.0f);   //設置透明度變化動畫  
    btn1.setOnClickListener(new View.OnClickListener() {            //設置監聽器  
          
        @Override  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            translateAnimation.setDuration(10000);      //設置位置變化動畫的持續時間  
            scaleAnimation.setDuration(10000);          //設置尺寸變化動畫的持續時間  
            alphaAnimation.setDuration(10000);          //設置透明度漸變更畫的持續時間  
            AnimationSet set=new AnimationSet(true);    //建立動畫集對象  
            set.addAnimation(translateAnimation);       //添加位置變化動畫  
            set.addAnimation(scaleAnimation);           //添加尺寸變化動畫  
            set.addAnimation(alphaAnimation);           //添加透明度漸變更畫  
            set.setFillAfter(true);                 //停留在最後的位置  
            set.setFillEnabled(true);  
            image.setAnimation(set);                    //設置動畫  
            set.startNow();                         //啓動動畫  
        }  
    });  
    btn2.setOnClickListener(new View.OnClickListener() {    //設置監聽器  
          
        @Override  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            set.cancel();                               //取消動畫執行  
        }  
    });  
}  
}  @Override  public void onCreate(Bundle savedInstanceState) {               //重載onCreate方法      super.onCreate(savedInstanceState);      setContentView(R.layout.main);       final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView對象      Button btn1=(Button)findViewById(R.id.button1);             //按鈕對象      Button btn2=(Button)findViewById(R.id.button2);      final Animation translateAnimation=new TranslateAnimation(0,300,0,300);                                                                 //設置位置變化動畫      final Animation scaleAnimation = new        ScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);                                                              //設置尺寸變化動畫      final Animation alphaAnimation=new AlphaAnimation(0.1f,1.0f);   //設置透明度變化動畫      btn1.setOnClickListener(new View.OnClickListener() {            //設置監聽器                    @Override          public void onClick(View v) {              // TODO Auto-generated method stub              translateAnimation.setDuration(10000);      //設置位置變化動畫的持續時間              scaleAnimation.setDuration(10000);          //設置尺寸變化動畫的持續時間              alphaAnimation.setDuration(10000);          //設置透明度漸變更畫的持續時間              AnimationSet set=new AnimationSet(true);    //建立動畫集對象              set.addAnimation(translateAnimation);       //添加位置變化動畫              set.addAnimation(scaleAnimation);           //添加尺寸變化動畫              set.addAnimation(alphaAnimation);           //添加透明度漸變更畫              set.setFillAfter(true);                 //停留在最後的位置              set.setFillEnabled(true);              image.setAnimation(set);                    //設置動畫              set.startNow();                         //啓動動畫          }      });      btn2.setOnClickListener(new View.OnClickListener() {    //設置監聽器                    @Override          public void onClick(View v) {              // TODO Auto-generated method stub              set.cancel();                               //取消動畫執行          }      });  }  }

在這段代碼中,首先構造了位置變化、尺寸變化和透明度變化動畫的對象。而後,在第一個按鈕監聽器中分別設置了動畫的持續時間,並經過 addAnimation方法添加到動畫集中,以後啓動該動畫。在第二個按鈕監聽器中取消該動畫。讀者運行這段代碼,將會看到如圖9.13所示的顯示效 果。圖片從小到大,由淺入深,從左上角向右下角移動。當動畫結束的時候,圖片對象將停留在結束點的位置,如圖9.14所示。code

 
圖9.13  組合動畫

相關文章
相關標籤/搜索