CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: megthebest con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 4 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 21 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 10 su 10
Discussione:

CountDown ed incremento del tempo

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Apr 2014
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Question

    CountDown ed incremento del tempo

    Salve ragazzi vorrei sapere come fare ad aumentare un countdown in corso...
    Esempio: il tempo scorre e ci troviamo al minuto 0.54....
    Se l'utente dà la risposta corretta volevo incrementare il tempo rimanente di 5 secondi o al contrario diminuirlo.
    Com'è possibile fare ciò? Attendo vostri aiuti

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Sep 2012
    Messaggi
    5

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Hai provato ad usare una variabile globale intera che decrementi con un timer e aumenti, o diminuisci, al click del bottone?

    Questo è un esempio di come dovrebbe essere il tick del timer, non sono sicuro l'handler sia necessario.


    N.B. Il filtro antispam evita che possa inserire la chiocciola prima di Override.
    Spoiler:

  4. #3
    Senior Droid


    Registrato dal
    Aug 2011
    Località
    Roma
    Messaggi
    406
    Smartphone
    Nexus 5

    Ringraziamenti
    6
    Ringraziato 32 volte in 29 Posts
    Predefinito

    Posta il codice con cui hai implementato il Timer

  5. #4
    Baby Droid


    Registrato dal
    Apr 2014
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da giozh Visualizza il messaggio
    Posta il codice con cui hai implementato il Timer
    x
     
    1
    TargetApi(Build.VERSION_CODES.GINGERBREAD)
    2
        SuppressLint("NewApi")
    3
        public class CounterClass extends CountDownTimer {
    4
    5
            public CounterClass(long millisInFuture, long countDownInterval) {
    6
                super(millisInFuture, countDownInterval);
    7
            }
    8
    9
            Override
    10
            public void onFinish() {
    11
                int calcolo = calcoloTempoPlus();
    12
                if(calcolo <= 0) {
    13
                    Toast.makeText(getApplicationContext(), "Your time is finished.", Toast.LENGTH_SHORT).show();
    14
                    finishTest();
    15
                } else {
    16
                    final CounterClass timer2 = new CounterClass(calcolo * 1000,1000);
    17
                    timer2.start();
    18
                    secPiu = 0;
    19
                    secMeno = 0;
    20
                }
    21
            }
    22
    23
            SuppressLint("NewApi")
    24
            TargetApi(Build.VERSION_CODES.GINGERBREAD)
    25
            Override
    26
            public void onTick(long millisUntilFinished) {
    27
    28
                long millis = millisUntilFinished;
    29
                String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
    30
                        TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
    31
                        TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
    32
                System.out.println(hms);
    33
    34
                timeView.setText(hms);
    35
            }
    36
        }


    ed ovviamente nel metodo create ho inserito timer.start();
    questa è stata la mia soluzione... tuttavia con una variabile ed un metodo che ho messo a fine conteggio... mi calcola quanti secondi deve incrementare
    però a me servirebbe qualcosa di più immediato... in esecuzione... che nel momento in cui premo il bottone... mentre vedo scorrere il tempo visivamente... mi vedo anche visivamente aumentare o diminuire il tempo

  6. #5
    Senior Droid


    Registrato dal
    Aug 2011
    Località
    Roma
    Messaggi
    406
    Smartphone
    Nexus 5

    Ringraziamenti
    6
    Ringraziato 32 volte in 29 Posts
    Predefinito

    La prima soluzione che mi viene in mente è questa. Nel metodo onTick puoi controllare se l'utente ha dato la risposta corretta. In caso affermativo termini il countdown corrente, e ne inizi uno nuovo che ha come valore iniziale il tempo residuo dell'ultimo countdown + l'incremento temporale che desideri (nell'onCancel).

  7. #6
    Baby Droid


    Registrato dal
    Apr 2014
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da giozh Visualizza il messaggio
    La prima soluzione che mi viene in mente è questa. Nel metodo onTick puoi controllare se l'utente ha dato la risposta corretta. In caso affermativo termini il countdown corrente, e ne inizi uno nuovo che ha come valore iniziale il tempo residuo dell'ultimo countdown + l'incremento temporale che desideri (nell'onCancel).
    è una soluzione alla quale avevo già pensato ma ho il limite che non so come prendere il tempo residuo e sommare un dato valore... in parole povere... come acquisisco in forma di valore il tempo nell'istante scelto? :S

  8. #7
    Senior Droid


    Registrato dal
    Aug 2011
    Località
    Roma
    Messaggi
    406
    Smartphone
    Nexus 5

    Ringraziamenti
    6
    Ringraziato 32 volte in 29 Posts
    Predefinito

    Quote Originariamente inviato da VAIZ Visualizza il messaggio
    è una soluzione alla quale avevo già pensato ma ho il limite che non so come prendere il tempo residuo e sommare un dato valore... in parole povere... come acquisisco in forma di valore il tempo nell'istante scelto? :S
    Beh, se il codice lo hai scritto tu e soprattutto lo hai capito, puoi notare che hai come parametro del metodo onThick i millisecondi residui prima del termine del countdown.

  9. Il seguente Utente ha ringraziato giozh per il post:

    VAIZ (04-05-14)

  10. #8
    Baby Droid


    Registrato dal
    Apr 2014
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da giozh Visualizza il messaggio
    Beh, se il codice lo hai scritto tu e soprattutto lo hai capito, puoi notare che hai come parametro del metodo onThick i millisecondi residui prima del termine del countdown.
    Ti ringrazio perché intanto mi hai aperto la mente *-*
    Tuttavia ora ho modificato chiamando il metodo onFinish() all'evento da me richiesto e dichiarando millis come campo di esemplare in maniera da poterlo riutilizzare ovunque e non solo dentro onTick():
    17
     
    1
    public void onFinish() {
    2
                if(domandeFinite == true) {
    3
                    Toast.makeText(getApplicationContext(), "Questions have been completed.", Toast.LENGTH_SHORT).show();
    4
                    finishTest();
    5
                }
    6
                if(corretta == true && millis != 0) {
    7
                    final CounterClass timer2 = new CounterClass(millis + 5000,1000);
    8
                    timer2.start();
    9
    10
                } else if(corretta == false && millis != 0){
    11
                    final CounterClass timer2 = new CounterClass(millis - 3000,1000);
    12
                    timer2.start();
    13
    14
                } else {
    15
                    Toast.makeText(getApplicationContext(), "Your time is finished.", Toast.LENGTH_SHORT).show();
    16
                    finishTest();
    17
                }


    Il problema ovviamente è modificare il mio TimeView.setText("00:01:00"); da così.... al tempo che effettivamente manca (quello aggiornato per intenderci xD)
    perché ora mi da il problema che fa il countDown un secondo con quello di partenza e un secondo con quello aggiornato xD.
    Come faccio a utilizzare millis per settare il mio conto alla rovescia? (TimeView)

    Ps. Giozh grazie davvero :P

  11. #9
    Senior Droid


    Registrato dal
    Aug 2011
    Località
    Roma
    Messaggi
    406
    Smartphone
    Nexus 5

    Ringraziamenti
    6
    Ringraziato 32 volte in 29 Posts
    Predefinito

    Se non chiami il metodo cancel() sul vecchio oggetto timer, questo continua ad esistere

  12. #10
    Baby Droid


    Registrato dal
    Apr 2014
    Messaggi
    7

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho risolto in maniera più semplice. Utilizzando un contatore che veniva decrementato ad ogni "giro" Grazie a tutti mi siete stati tutti utilissimi!!!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy