2012-06-09 203 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(); 


       } 
      });