0

我有一个动画 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>

我想要做的是在 mediaplayer 播放时开始并继续运行动画,并在 mediaplaye 完成播放时停止动画。

例如:媒体播放器正在播放 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() 开始动画,但是当声音结束时,动画继续运行。声音结束后如何让动画停止?

4

2 回答 2

2

您将需要实现 OnCompletionListener

play.setOnCompletionListener(new

OnCompletionListener() {

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


              }
          });
于 2012-06-09T15:21:24.137 回答
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();
于 2012-06-09T15:20:55.027 回答