ImageView Bitmap alle 30 Sek. ersetzten

A

Andr_green

Neues Mitglied
2
Hallo,

ich bin neu und habe mich eben schon mal ein bichen hier um geschaut. Sieht sehr schön hier aus.
Leider habe ich nur keine Antwort auf die Frage gefunden die mich zurzeit wurmt:

Ich habe ein ImageView und das zeiAbstand von ungefähr 30 Sekunden
durch einen Satz von 7 Bildern rotiert werden und dann wieder vorne angefangen werden?
Anders gesagt alle 30 Sekunden soll das momentane Bild durch ein anderes ersetzt werden.
Da das nicht die Hauptaufgabe der App ist, sollen alle anderen Funktionen weiterhin zu Verfügung stehen.

Wie macht man das am besten ?
AsyncTask, Thread oder wie?

Danke für jede Hilfe.

LG
 
Ja, AsyncTask ist die Google empfohlene Methode. Du machst in doInBackground() deine Schleife und übergibst dort per publishProgress() die nötigen Infos an onProgressUpdate(), wo du dann die gewünschte Bitmap renderst.

Man kann das auch mit Thread machen, aber dann muss man sich selbst darum kümmern, dass der Updates des Views im UI Thread erfolgt. Ist auch keine Hexerei. Es gibt 1000 Threads hier, die die Details erklären.
 
  • Danke
Reaktionen: Andr_green
tut mir leid aber irgendwie stehe ich auf dem Schlauch.
Gibt es ein gute Tutorial für AsyncTasks?
Das ultimative habe ich leider noch nicht gefunden, so das ich das wirklich komplett verstehe.

Lg
 
Wenn du einfach nur 7 Bilder hast mach ein Runnable das immer wieder in 7 Sekunden drankommt und setz dann das Bild. Von Download hast du ja nichts geschrieben ...
 
  • Danke
Reaktionen: Andr_green
runnable, wäre ein Thread und du meinst den nach dem das Bild geändert wurde ein sleep über einen Zeitraum X und dann wieder ändern ??
wie ist das wenn ich die activity gewechselt wird und irgendwann wieder zurück auf die gewechselt wird? den start des threads in onResume setzen??
Danke
 
Kannst auch nen klassischen Thread nehmen und benutzt dann runOnUIThread, um das Bild zu setzen.
 
Dein Problem ist an sich, dass du aufwendige Sachen niemals im UI-Thread machen darfst. Das bedeutet, die UI läuft in einem eigenem Thread damit diese auf alles Zugriff hat und sonst nichts anderes macht. Wenn du da natürlich aufwendige Sachen machst, steht der Thread und deine UI auch und sobald das passiert. Merkt es Android und will deine App schließen.

Deswegen musst du aufwendige Sachen in einen anderen Thread auslagern, dass die UI nicht blockiert wird. Jedoch kannst du nicht von Thread auf Elemente von einem anderen Thread zugreifen. Deswegen kannst du nicht einfach nen Thread starten, Bild downloaden und dann direkt in der UI anzeigen.

Das bedeutet, dass du eine art Message schreiben musst wo du drin stehen hast, was passieren soll und womit was passieren soll. Diese Message bekommt der UI Thread und kann dem entsprechend reagieren.

Ich an deiner Stelle würde ein AsyncTask nehmen für den Anfang, da dieser das mit dem Message an anderen Thread bereits für dich regelt :)

Gruß
Michael
 
Andr_green schrieb:
wie ist das wenn ich die activity gewechselt wird und irgendwann wieder zurück auf die gewechselt wird?

Richtig, das sind typische Tücken, die es bei Threads (und afaik auch bei AsyncTask) zu bedenken gilt. Das würde man typischerweise so lösen, dass man in seinen onPause ein Flag setzt, dass die Schleife im Thread dann nach dem sleep beendet.

Und den Thread muss man dann im onResume() dann neu starten.

AsyncTask doku gibts hier: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
 
Ansich kannst du eine private Variable setzen. Ob dieser Thread laufen soll oder nicht. In deinem neuen Thread machst du eine Schleife solange deine private variable auf true ist soll er laufen. Sobald onPause aufgerufen wird, änderst du diese Variable und dein Thread hört auf und wird beendet. Bei onResume setzt du deine private variable wieder auf true und startest dein thread wieder :)

Gruß
Michi
 
hmm für diesen fall hier ist ein asynctask wohl nicht geeignet.

er hat 7 bilder, im abstand von 30 sekunden wird jeweils 1 angezeigt.

was soll er da mit einem asynctask? der läuft ja nur einmal durch.

ein handler wäre wohl hier am besten.

einfach postdelayedmessage alle 30 sek aufrufen lassen und das bild setzen.
 
Andr_green schrieb:
runnable, wäre ein Thread und du meinst den nach dem das Bild geändert wurde ein sleep über einen Zeitraum X und dann wieder ändern ??
wie ist das wenn ich die activity gewechselt wird und irgendwann wieder zurück auf die gewechselt wird? den start des threads in onResume setzen??
Danke

Runnable ist an sich kein anderer Thread. Du kannst da auch einen Thread starten der die Aufgabe erledigt.

Du müsstest jetzt mal sagen ob die Bilder schon geladen sind wenn du sie anzeigen willst oder ob du sie dann erst laden musst ... schon geladene Bilder kannst du locker auch im UI Thread wechseln und brauchst keine Asynctasks oder Threads. Wie swordi schon schrieb und was ich auch oben meinte: Handler ... postdelayed ... Runnable sind die Stichworte.

Lies mal hier wenn du Bilder nachladen willst: Android Developers Blog: Painless threading
 
Ich vermute, dass er die Bilder auch Downloaden möchte :) Ohne Download macht der Thread natürlich kein Sinn :)
 
davon steht nichts hier und ich würde mal sagen er will die bilder mit aus liefern.

hmm vielleicht macht endlich mal einer ne schöne "tittenbilder"-app. glaub davon gibts noch keine im market :D
 
Hallo,

also die Bilder sind schon vorhanden, müssen daher nicht geladen werden.
und NEIN, es wird keine App wie swordi vermutet.
Ich werde mir mal den angegebenen Link genauer anschauen und mich ggf. noch mal melden.

Vieln Dank für die vielen Antworten.
 
also wenns keine Titten-App wird geb ich jetzt keine Hilfe mehr :flapper:
 
  • Danke
Reaktionen: swordi
ja sehr schade. es gibt einfach zu viele seriöse entwickler im market :D
 
naja so schwer dürfte es für euch doch auch nicht sein eine solche App zu entwickeln oder seit ihr auch zu seriös :lol:
 
uns fehlen die Models (ich meine jetzt nicht die DB-Models) :razz:
 
Andr_green schrieb:
naja so schwer dürfte es für euch doch auch nicht sein eine solche App zu entwickeln oder seit ihr auch zu seriös :lol:

hehe die ironie nicht erkannt?

der market ist überschwemmt von apps, die bildchen zeigen, egal welcher art. ich schätze mal 99% davon haben keine rechte an den bildern, die sie da so zeigen.
 

Ähnliche Themen

E
Antworten
1
Aufrufe
805
enrem
E
Hansimglueck0815
Antworten
0
Aufrufe
731
Hansimglueck0815
Hansimglueck0815
CrazyC
Antworten
3
Aufrufe
714
jogimuc
J
Zurück
Oben Unten