Wie kann ich die Bilder auf einem ImageButton in Android ändern, wenn ich einen OnTouchListener verwende?
-
26-09-2019 - |
Frage
Ich habe den folgenden Code, der einen ImageButton erstellt und beim Klicken einen Ton spielt:
ImageButton SoundButton1 = (ImageButton)findViewById(R.id.sound1);
SoundButton1.setImageResource(R.drawable.my_button);
SoundButton1.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN ) {
mSoundManager.playSound(1);
return true;
}
return false;
}
});
Das Problem ist, dass ich möchte, dass das Bild auf dem ImageButton sich ändert, wenn Sie es drücken. Der OnTouchListener scheint die Berührung zu überschreiben und zuzulassen, dass sich die Bilder nicht ändern. Sobald ich den OnTouchListener entferne, wechselt das ImageButton beim Drücken auf ein anderes Bild. Irgendwelche Ideen, wie ich die Bilder auf dem ImageButton ändern kann, während ich noch den OnTouchListener benutze? Vielen Dank!
Lösung
Ich denke, die Lösung ist einfach: Entfernen Sie die return true
vom OnTouchListener. Da dies alle weiteren Vorgänge blockiert, die auf Berührung und Eingabe reagieren. Mach es return false
zu.
Auf diese Weise können andere Aktionen auch auf die Berührung reagieren.
Andere Tipps
SoundButton1.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN ) {
mSoundManager.playSound(1);
btnmode.setImageResource(R.drawable.modeitempressed);
}
elseif (event.getAction() == MotionEvent.ACTION_UP ) {
btnmode.setImageResource(R.drawable.modeitemnormal);
}
return false;
}
});