ImageView als automatische Gallerie

  • 2 Antworten
  • Neuester Beitrag
Diskutiere ImageView als automatische Gallerie im Android App Entwicklung im Bereich Betriebssysteme & Apps.
D

dboy

Neues Mitglied
Hi,

ich bin recht neu in der App Entwicklung und komme gerade bei einem Problem net weiter.

Was möchte ich erreichen:

Es sollen unterschiedliche Bilder automatisch in eine ImageView geladen werden. Diesen Prozess stößt man durch ein Button Event an.

Das hier ist bisher mein Code.
Code:
public void wechselBilder(View view){
        image = (ImageView) findViewById(R.id.bild);

        new CountDownTimer(10000, 1000) {
            public void onTick(long millisUntilFinished) {
            }
            public void onFinish() {
                image.setImageResource(R.drawable.bild1);
            }
        }.start();
}
Nun weiß ich nicht, wie ich es schaffe, dass er in der Methode jedesmal mit einem 10 sec Abstand das Bild verändert. Die Bildtitel lauten bild1, bild2, ...bildx. Mit einem Bild stellt es alles kein Problem dar.

Meine Ideen wären:

1) Einen Timer in einer Schleife wo die Zahl im Bildnamen i entspricht. Kann ich die Resource ID dynamisch festlegen?

2) Viele aneinandergereihte Timer (stupider prozeduraler Ansatz)

Aber irgendwie bekomme ich beides nicht zum laufen.

Wäre über jeden Tip dankbar!!

Beste Grüße,

dboy

Der ursprüngliche Beitrag von 18:46 Uhr wurde um 19:38 Uhr ergänzt:

Habs gelöst. Hab einfach die einzelnen Timer ineinander verschachtelt. Keine schöne Lösung, aber erfüllt vorerst seinen Zweck.

Würde mich über schönere Vorschläge freuen ;-)

Beste Grüße
 
Z

Zoopa

Stammgast
Wenn du die Bild-IDs schon von Anfang an kennst, würde ich mir ein Array / eine Liste mit allen IDs erstellen

Bsp mit Liste:
Code:
List<Integer> myImages = new ArrayList<Integer>();
myImages.add(R.drawable.bild1);
myImages.add(R.drawable.bild2);
und danach kannst du fast wie bei deinem ersten Ansatz (dynamisch Bild-IDs) weiterfahren.

z.B.
Code:
//normale for-Schleife
for(int i = 0; i < myImages.size(); i++) {
    image.setImageResource(myImages.get(i));
}

//oder for-each Schleife
for(int currentId : myImages) {
    image.setImageResource(currentId);
}
Und beim Countdown-Timer würd ich eifach als Gesamtzeit anzahlBilder * zeitProBild und als Interval zeitProBild, und die Bilder dann in der onTick Methode ändern.

Edit:
Nach einem Durchlauf durch alle Bilder wäre der Countdown Timer natürlich fertig und die Bilder würden sich nicht mehr ändern ;) Wenn es solange weitergehen soll, wie die App läuft, würde ich persönlich wohl keinen CountdownTimer nehmen, sondern einen eigenen Thread. Ein Countdown ist ja schon von Definition her nach einer gewissen Zeit fertig.
 
Zuletzt bearbeitet:
Max1809

Max1809

Fortgeschrittenes Mitglied
Ich würde noch Ergänzend sagen, dass man diesen "Bildertausch" doch auch gut in einem eigenen AsyncTask unterbringen könnte, oder? :) Sodass die Haupt-UI nicht gestört wird.