如何以编程方式多次更改 ImageView 源?
How to change ImageView source programatically several times?
一旦按下图像,它就会改变并播放声音。播放声音后,我希望 return 到上一个图像(相同的 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);
.
.
.
}
播放声音方法:
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
}
};
});
一旦按下图像,它就会改变并播放声音。播放声音后,我希望 return 到上一个图像(相同的 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);
.
.
.
}
播放声音方法:
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
}
};
});