2011-11-08 148 views
2

我的問題是我有一些圖片&我用框架動畫來顯示這個圖像點擊事件的按鈕,但如果我點擊按鈕第一次圖像順序顯示&如果我點擊此按鈕另一次該圖像不顯示。以下是我的代碼。框架動畫按鈕點擊Android

Animation.java文件: -

public class Animation extends Activity { 

    Button mBtnOK; 
    AnimationDrawable frameAnimation; 
    ImageView imgView; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mBtnOK = (Button) findViewById(R.id.mBtnOK); 
     mBtnOK.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       animate(); 
      } 
     }); 

    } 

    private void animate() { 
     imgView = (ImageView) findViewById(R.id.simple_anim); 
     imgView.setVisibility(ImageView.VISIBLE); 
     imgView.setBackgroundResource(R.anim.simple_animation); 
     AnimationDrawable frameAnimation = (AnimationDrawable) imgView 
       .getBackground(); 
     frameAnimation.start(); 
     frameAnimation.setOneShot(true); 
    } 
} 

動畫文件: -

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" id="selected" android:oneshot="false"> 
    <item android:drawable="@drawable/monkey_1" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_2" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_3" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_4" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_5" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_6" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_7" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_8" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_9" android:duration="50" /> 
    <item android:drawable="@drawable/monkey_10" android:duration="50" /> 
</animation-list> 

回答

0

@Dipak,

我已經用你也做了同樣的方式動畫來完成。嘗試添加此代碼,希望您的錯誤將得到解決。還有一件事是使用線程來運行動畫。這肯定會很好地運行。

if(frameAnimation.isRunning()) { 
    frameAnimation.stop(); 
    frameAnimation.start(); 
} 
1

重新啓動幀動畫的唯一方法是使用包含一個標誌,強制動畫復位到第一幀的setVisible()。如果修改代碼的動畫部分,如下所示: AnimationDrawable frameAnimation =(AnimationDrawable)imgView.getBackground(); frameAnimation.setOneShot(true); frameAnimation.setVisible(true,true); frameAnimation.start();

動畫應始終從第一幀開始,每次單擊該按鈕時運行至完成狀態。動畫也可以通過切換可繪製本身的可見性來重置,而不是包含它的ImageView

HTH

+0

frameAnimation.setVisible(true,true); frameAnimation.start();運行這將導致幀Animation運行兩次。您只需要setVisible(true,true):第一個true set可見,第二個true將重新啓動動畫,就像它是第一次運行一樣。 – 2012-08-19 03:13:26