如何多次编程更改ImageView源代码?
问题描述:
一旦图像被按下,它会改变并播放声音。声音播放后,我希望返回到以前的图像(相同的ImageView),这是没有发生。如何多次编程更改ImageView源代码?
XML代码:
<ImageView
android:id="@+id/imageView_red_off"
android:src="@drawable/red_orig"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:adjustViewBounds="true"
android:maxHeight="160dp"
android:maxWidth="150dp"
android:layout_gravity="top|left"
android:paddingRight="40dp"
android:paddingLeft="0dp"
android:scaleType="fitCenter"
/>
Java代码:
public boolean onTouch(View view, MotionEvent event) {
.
.
.
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (colorRed > threshold)) {
whatColor = "Red";
imageRed.setImageResource(R.drawable.red);
}
.
.
.
}
playSound(whatColor);
imageRed.setImageResource(R.drawable.red_orig);
.
.
.
}
在playsound方法:
if ((color != "None")) {
MediaPlayer mp = MediaPlayer.create(this, animal);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
};
});
}
感谢。
答
你应该做一些这样的事情。
让我们说img1设置一旦用户触摸你改变它的IMG现在当MediaPlayer完成播放时,你可以使用setOnCompletionListener
一旦播放完成使用imageview对象来改变图像,而不是在图像的OnTouch中进行。
象下面这样:
MediaPlayer mp = MediaPlayer.create(this, animal);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
if(img.getTag().equal("second")){
//Then set first image here
}
};
});
答
对图像使用setOnClickListener。
- 在点击之前将标签设置为图像。例如“1”
-
在OnClick方法中,检查标记。
if(tag.equals("1") { change image source and play sound; set image tag to "2"; }else{ change image source to original set image tag to "1" }
我希望它能帮助。
玩的线程或后台服务的帮助下声音。 – 2015-03-25 08:22:27
@ smb6你在用什么来播放声音?的Soundpool? – MikeIsrael 2015-03-25 08:26:49
@MikeIsrael,我正在使用Mediaplayer – smb6 2015-03-25 08:46:41