如何在媒体播放器完成时停止动画可绘制?

时间:2012-06-09 15:16:36

标签: android animation media-player

我有一个动画xml文件:

<?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>

我想要做的是在媒体播放器正在播放时启动并继续运行动画,并在媒体播放完成后停止动画。

例如:媒体播放器正在播放5秒钟的声音,我想播放动画5秒然后停止播放。

这是我在主要活动中的jave代码:

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()启动动画,但声音结束后,动画会继续运行。如何在声音结束时停止动画?

2 个答案:

答案 0 :(得分:2)

您需要实现OnCompletionListener

play.setOnCompletionListener(new

OnCompletionListener() {

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


              }
          });

答案 1 :(得分: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();