Autore Topic: Creare un attesa di tot secondi tra due istruzioni.  (Letto 1470 volte)

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Creare un attesa di tot secondi tra due istruzioni.
« il: 30 Aprile 2015, 01:32:02 CEST »
0
Il mio problema è il seguente.

Sto creando un app che ad un certo punto deve alternare in sequenza due immagini, creando una sorta di gif.
Codice (Java): [Seleziona]
tre.setImageResource(drawable.trehover);
tre.setImageResource(drawable.tre);

Lasciando cosi il codice, l'alternanza è talmente veloce che non si vede. (ovviamente)

Mi servirebbe quindi che tra i due set di immagine ci sia un intervallo di tempo di qualche secondo.

Ho smanettato un bel pò passando tra Timer, Thread, sleep e cosi via ma non sono riuscito a risolvere.

Utilizzando ad esempio:
Codice (Java): [Seleziona]
tre.setImageResource(drawable.trehover);
try {
Thread.sleep(millisecondi);
}
catch (Exception e) {}
tre.setImageResource(drawable.tre);

Il tempo di attesa viene visualizzato all'apertura dell'app e non dove inserito.
« Ultima modifica: 30 Aprile 2015, 01:44:19 CEST da Zed92 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #1 il: 30 Aprile 2015, 07:38:28 CEST »
0
Non puoi inserire uno sleep cosi. Creati un asink task. In on post exexute setti l'immagine. In doinbackground ritorni un booleano. In onPostExecute() vedi se il valore e true. Allora setti un immagine. Se false setti l'altra. Poi cambi da true a false o viceversa. Poi richiami lo stesso asynk

iClaude

  • Visitatore
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #2 il: 30 Aprile 2015, 09:44:01 CEST »
0
A livello generale devi:
1) creare un thread separato per inserire il delay, non potendo bloccare il thread della UI
2) impostare le immagini nel thread della UI.
I dettagli dipendono da come decidi di gestire i thread (thread Java, AsyncTask o HaMeR framework).

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #3 il: 30 Aprile 2015, 09:50:26 CEST »
0
Quale soluzione è consigliata?

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #4 il: 30 Aprile 2015, 10:05:06 CEST »
0
Se devi veramente solo animare un immagine ti consiglio un AnimationDrawable (http://developer.android.com/guide/topics/graphics/drawable-animation.html)

Ciao.

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #5 il: 30 Aprile 2015, 12:46:20 CEST »
0
Mi servirebbe gestire tutto dal MainActivity, con AnimationDrawable si può o sono forzato a implementare xml?

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #6 il: 30 Aprile 2015, 12:54:31 CEST »
0
Serve appunto per evitare di gestirsi il tutto. Basta fare startAnimation. Se il cambio di frame dipende da qualche evento non usare l'AnimationDrawable

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #7 il: 30 Aprile 2015, 12:57:06 CEST »
0
Si dipende da eventi, stavo vedendo thread o AsyncTask ma sembrano soluzioni abbastanza macchinose. Possibile non esiste nessuna funzione che crei un delay di qualche secondo?

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #8 il: 30 Aprile 2015, 12:58:04 CEST »
0
Crea un Handler e usa postDelay

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #9 il: 30 Aprile 2015, 13:08:17 CEST »
0
Ho inserito questo nell' ActionBarActivity:
Codice (Java): [Seleziona]
    private Handler mHandler = new Handler();

    private Runnable mUpdateTimeTask = new Runnable() {
        public void run() {
            mHandler.postDelayed(this, 5000 );

        }
    };

e tra le due stringhe ho inserito:
Codice (Java): [Seleziona]
                mHandler.postDelayed(mUpdateTimeTask, 1000);
Ma non funziona, che errori ho fatto?

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #10 il: 30 Aprile 2015, 13:09:51 CEST »
0
Si, il postDelayed va fuori dal run

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #11 il: 30 Aprile 2015, 13:16:54 CEST »
0
Se lo tiro fuori dal run mi da postDelayed come errore, "Cannot resolve symbol 'postDelayed '"

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #12 il: 30 Aprile 2015, 13:23:26 CEST »
0
Ora, devo mangiare. Cercati qualche esempio online.

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 33
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #13 il: 30 Aprile 2015, 13:48:53 CEST »
0
Gli esempi che trovo lasciando nel run il postDelayed

iClaude

  • Visitatore
Re:Creare un attesa di tot secondi tra due istruzioni.
« Risposta #14 il: 30 Aprile 2015, 14:07:14 CEST »
0
Ma non funziona, che errori ho fatto?

Per forza non funziona: quel codice non fa nulla... :)
Nel metodo run devi impostare l'immagine.