android - Android动画无法正常运行-无法播放,希望在声音文件停止播放时停止播放

标签 android animation audio

当前结果:按下img按钮时,它将播放声音文件,但不进行动画处理。

期望的结果:按下img按钮时,它将播放声音文件并进行动画处理,当声音文件完成播放后,动画将停止。

问题:我正在尝试为此编写逻辑,并且我的日志语句告诉我它应该工作,因为我看到了“动画开始”和“动画停止”。奇怪的是,我的img按钮在按下时会更改颜色,这很好,但是在声音文件完成之前,它将保持该颜色,就好像它一直处于按下状态,直到声音结束为止。我完全错过了什么吗?有任何想法吗?

StartActivity;

imgButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                soundClassObject.setMP(getApplicationContext());
                soundClassObject.checkSound2(imgButton,animation1);
            }
        });

声音等级;
public void setMP(Context c){
        mp = MediaPlayer.create(c, returnRandomSound());
    }

public void checkSound2(View v, Animation a){
        v.startAnimation(a);
        mp.start();
        Log.i(TAG, "Animation start: " + v.getAnimation());
      while(v.getAnimation() != null) {
          stopAnimation(v);
      }
    }

public void stopAnimation(View v){
    if (!mp.isPlaying()){
        v.clearAnimation();
        Log.i(TAG, "Animation stopped: " + v.getAnimation());
    }
}

动画;
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="100"
android:fromDegrees="-5"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toDegrees="5" />

最佳答案

我最终在我的方法中添加了MediaPlayer侦听器-

            mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                public void onCompletion(MediaPlayer mp) {
                    v.clearAnimation();
                    switch (v.getId()) {
                        case R.id.imgbutton1:
                            v.setBackgroundResource(R.drawable.boat);
                            break;
                        case R.id.imgbutton2:
                            v.setBackgroundResource(R.drawable.train);
                            break;
                        case R.id.imgbutton3:
                            v.setBackgroundResource(R.drawable.rocket);
                            break;
                    }
                    Log.i(TAG, "v animation clear: " + v.getAnimation());
                    Log.i(TAG, "Later mp: " + mp.getAudioSessionId());
                }

            });

关于android - Android动画无法正常运行-无法播放,希望在声音文件停止播放时停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32674785/

相关文章:

javascript - 如何通过手机浏览器检测手机号码?

html - SVG 动画问题。 SVG 在动画结束后移动

android - Activity 退出动画在 Android 4.0 上无法正常工作

ios - 使用 Media API 和 Web Audio API 的 PhoneGap 应用程序在录制开始时静音

java - 将 strings.xml 中的数组添加到另一个 ArrayList

android-async-http loopj 设置下载文件的保存路径

android - 处理 JPEG 字节数组解码的更好选择

javascript - Transition Js 动画循环无法正常工作

Android AudioTrack 缓冲问题

c# - 使用 NAudio 通过网络发送 .Wav 文件