2012-06-09 201 views
0

我有一個動畫的XML文件:當mediaplayer完成時如何停止animationdrawable?

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/anim" 
    android:oneshot="true" > 

    <item 
     android:drawable="@drawable/pik1" 
     android:duration="150"/> 
    <item 
     android:drawable="@drawable/pik2" 
     android:duration="150"/> 

</animation-list> 

什麼,我想要做的就是啓動和保持運行的動畫,而媒體播放器正在播放時mediaplaye結束後停止播放動畫。

例如:mediaplayer播放的聲音長度爲5秒,我想播放動畫5秒然後停止。

這是java的代碼,我在我的主要活動:

piks.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (play != null) { 
        play.reset(); 
        play.release(); 
       } 
       play = MediaPlayer.create(pikselActivity.this, 
         R.raw.pisound); 
       play.start(); 
       frame.start(); 


      } 
     }); 

frame.start()啓動動畫,但是當聲音結束後,動畫保持運行。聲音結束時如何停止動畫?

回答

1

在您的媒體播放器上放置了一個onCompletionListener()。回調媒體內完成添加

frame.clearAnimation(); 

這樣的:

if (play != null) { 
    play.reset(); 
    play.release(); 
} 
play = MediaPlayer.create(pikselActivity.this,R.raw.pisound); 


play.setOnCompletionListener(new OnCompletionListener() { 
    public void onCompletion (MediaPlayer mp){ 
     frame.clearAnimation(); 
    } 
}); 
play.start(); 
frame.start(); 
+0

感謝這解決了我的問題。 – MeesterPatat

2

您需要實現OnCompletionListener

play.setOnCompletionListener(new 

OnCompletionListener() { 

       @Override 
       public void onCompletion(MediaPlayer arg0) { 
        frame.stop(); 


       } 
      });