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 組合動畫 |