ImageView automatisch verschwinden lassen

  • 4 Antworten
  • Letztes Antwortdatum
S

schornstein

Neues Mitglied
0
Hallo Leute, ich hab mal wieder eine Frage :laugh:

Hier ein Code-Schnipsel:
Code:
public void onClick(View v) {
                if (munition == 0) {
                    mpLeer = MediaPlayer.create(getApplicationContext(), R.raw.leer);
                    mpLeer.start();
                } else {
                    mpShoot = MediaPlayer.create(getApplicationContext(), R.raw.shoot);
                    mpShoot.start();
                    punkte++;
                    
                    munition--;
                    bildschirmAktualisieren();
                    spielbereich.removeView(muecke);
                    spielbereich.addView(klecks, paramss);
                    
                    
                }
            }
Und zwar passiert hier folgendes: wenn ich auf ein ImageView klicke verschwindet ein Mueckenbild und wird durch ein "Klecks"-Image ersetzt.
Nun möchte ich, dass dieses Klecksbild nach 2 bis 3 Sekunden wieder automatisch verschwindet.
Wie funktioniert soetwas, gibt es einen bestimmten Code dafür?
Über eure Antworten würde ich mich sehr freuen :)
 
Erstmal danke für den Link.
Kannst du mir bitte kurz und knapp auf Deutsch erklären was Handler und Threads sind, dann kann ich vermutlich das Tutorial besser verstehen^^.

PS:
Ich hab es jetzt geschafft, aber trotzdem verstehe ich nicht wie es funktioniert bzw was genau ein Handler und ein Thread machen.

bildschirmAktualisieren();
spielbereich.removeView(muecke);
spielbereich.addView(klecks, paramss);

Runnable runnable = new Runnable() {
public void run() {

try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
spielbereich.removeView(klecks);
}
});
}
};

new Thread(runnable).start();

}
 
Zuletzt bearbeitet:
Threads sind "leichtgewichtige" Prozesse (der genaue Unterschied ist hier mal nicht so wichtig), wobei ein Prozess einfach ein Stück Programmcode in Ausführung ist. Jedes Programm das du schreibst und anschließend startest, ist zur Laufzeit ein Prozess.
Ein Prozess kann einen zweiten Prozess/Thread starten, sodass du parallel zwei Programmteile laufen lassen kannst.

Beispiel: Du hast einen Button mit einem Listener in deinem Hauptprozess. Beim Klick auf diesen Listener soll irgendwas aus dem Web geladen (also eine längere Prozedur ausgeführt) werden.
Startest du für den Web-Download keinen eigenen Prozess, sieht es so aus, als sei beim Klick das Programm eingeforen: Der Button ändert sein Farbe oder Größe oder wasauchimmer beim Klick (um den Klick zu simulieren) und geht erst wieder in den Normalzustand, wenn der Download fertig ist.
Startest du einen Thread dafür, kann der Hauptprozess das Zurücksetzen des Buttons übernehmen, während im Hintergrund der Web-Download (in seinem eigenen Prozess) abläuft.
Kurz gesagt: Du kannst mit Threads/Kindprozessen Programmteile (quasi)parellel ausführen lassen.

Android wiederum hat die Besonderheit (ich denke zumindest, dass das eine Besonderheit ist), dass ohne den Einsatz von Hilfsmitteln nur der Hauptthread Zugriff auf die UI hat. Willst du also in einem Thread eine View hinzufügen, gibt's Ärger vom Framework.
Um diese Design-Entscheidung hält Google Konstrukte wie etwa den Handler bereit - ein Thread kann dann eine Nachricht an den Handler schicken, wenn er die UI updaten will (nachdem Thread und Handler im gleichen Adressraum liegen, geht das). Der übernimmt das UI-Handling zwischen Haupthread und Nebenthread.

Das war zwar jetzt nicht kurz - aber zumindest deutsch ;)
 
  • Danke
Reaktionen: schornstein und myeta
Danke für die antwort
Sogar mit einem Beispiel und verständlich :D
Danke
 

Ähnliche Themen

G
Antworten
1
Aufrufe
393
Gerdchen07
G
Zurück
Oben Unten