Autore Topic: Creare un Countdown  (Letto 1629 volte)

Offline Lukiep

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Lukiep
  • Sistema operativo:
    Windows 7/8
Creare un Countdown
« il: 18 Gennaio 2011, 12:21:33 CET »
0
Ciao a tutti, sono nuovo di questo mondo, ma mi sto divertendo molto a creare la mia applicazione in android.

Al momento volevo realizzare un orologio che mi faccia un countdown da 4:00 (4 minuti) a zero con i secondi che passano.

Ho provato il widget Chronometer ma non mi sembra indicata per questo.
Come posso fare?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Creare un Countdown
« Risposta #1 il: 18 Gennaio 2011, 12:29:31 CET »
0
Potresti partire da questo snippet ( chiamare a intervalli regolari un ogetto Runnable - Android Developers Italia ), ed ogni secondo decrementare il numero che visualizzi in una TextView.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Lukiep

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Lukiep
  • Sistema operativo:
    Windows 7/8
Re:Creare un Countdown
« Risposta #2 il: 19 Gennaio 2011, 20:12:13 CET »
0
Mmm, scusami ma non riesco a farlo funzionare:

Codice (Java): [Seleziona]
public class Match extends Activity {
        static Integer minuto = 4;
        static Integer secondi = 0;
       
        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.match);
       
        Button start = (Button) findViewById(R.id.Reset);
        start.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Timer timer = new Timer();
                timer.scheduleAtFixedRate( new TimerTask() {
                        @Override
                        public void run () {
                                Match.secondi=-1;
                                if(Match.secondi < 0){
                                        Match.minuto=-1;
                                        Match.secondi= 59;
                                }
                                TextView crono = (TextView) findViewById(R.id.Crono);
                                crono.setText(Match.minuto.toString()+":"+Match.secondi.toString());                   
                        }

                }, 1000, 1000 );
                ((Runnable) timer).run();
            }
        });
       
       
    }
}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Creare un Countdown
« Risposta #3 il: 19 Gennaio 2011, 20:40:30 CET »
+1
Puoi aggiungere un po' di dettagli?  Che genere di errore ti da' ?

In parallelo, c'è anche questo articolino molto interessante sull'argomento:
Updating the UI from a Timer | Android Developers
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Creare un Countdown
« Risposta #4 il: 19 Gennaio 2011, 23:49:43 CET »
0
Non credo tu possa modificare una TextView (o un qualsiasi altro componente della UI) da un thread che non sia quello principale. devi utilizzare il metodo runOnUiThread o utilizzare un handler Handler. Dai un occhio alla doc...

Offline Lukiep

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Lukiep
  • Sistema operativo:
    Windows 7/8
Re:Creare un Countdown
« Risposta #5 il: 20 Gennaio 2011, 15:44:04 CET »
0
Perfetto, ce l'ho fatta. Grazie per la guida con gli Handler.

L'unica cosa che non mi capacito è come mai non possa salvare come variabile di classe un componente (TextView, o Button) senza far crashare l'applicazione.

Grazie per il supporto ;)

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Creare un Countdown
« Risposta #6 il: 20 Gennaio 2011, 16:30:32 CET »
0
Perfetto, ce l'ho fatta. Grazie per la guida con gli Handler.

L'unica cosa che non mi capacito è come mai non possa salvare come variabile di classe un componente (TextView, o Button) senza far crashare l'applicazione.

Grazie per il supporto ;)
variabile di classe dell'activity? evidentemente fai qualche errore, la cosa si può benissimo fare!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Creare un Countdown
« Risposta #7 il: 20 Gennaio 2011, 17:12:26 CET »
0
Perfetto, ce l'ho fatta. Grazie per la guida con gli Handler.

L'unica cosa che non mi capacito è come mai non possa salvare come variabile di classe un componente (TextView, o Button) senza far crashare l'applicazione.

Grazie per il supporto ;)

Puoi farlo ma non puoi utilizzarla in thread al di fuori di quello della UI.

Offline Lukiep

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Lukiep
  • Sistema operativo:
    Windows 7/8
Re:Creare un Countdown
« Risposta #8 il: 20 Gennaio 2011, 17:14:30 CET »
0
Ah adesso si spiega. In tal caso l'handler quindi viene gestito con un thread a parte. Capito