Android动画无法正常工作 - 无法播放,希望当声音文件停止时停止播放
问题描述:
当前结果:当按下img按钮时,它会播放声音文件,但不会播放动画。Android动画无法正常工作 - 无法播放,希望当声音文件停止时停止播放
预期结果:当img按钮被按下时,它播放声音文件并进行动画,当声音文件播放结束时,动画停止。
问题:我正在尝试为此写入逻辑,并且我的日志语句告诉我应该按照我看到的“动画开始”和“动画停止”工作。奇怪的是,我的img按钮在按下时会改变颜色,这很好,但是它会一直保持该颜色,直到完成声音文件,就好像它处于常量按下状态直到声音结束。我完全错过了什么吗?有任何想法吗?
StartActivity;
imgButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
soundClassObject.setMP(getApplicationContext());
soundClassObject.checkSound2(imgButton,animation1);
}
});
Sound Class;
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());
}
});