NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Jednoduchý 3 2 1 countdown - problém (v Android Studiu)

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Vojtěch Bešťák:3.6.2016 18:45

Zdravím vytvářím jednoduchý 3 2 1 countdown na telefonu. Používám pro něj tento kód:

new CountDownTimer(4000, 1000) {

            public void onFinish() {
                countdownTextView.setVisibility(View.INVISIBLE);
                countdownTextView.setText("KONEC");
            }

            public void onTick(long millisUntilFinished) {
                countdownTextView.setText(String.valueOf(millisUntilFinished / 1000));
            }

        }.start();

Problém je takový:
Vše probíhá v pořádku, ovšem když se odpočet dostane na jedničku, tak místo toho, aby pokračoval a napsal "KONEC", tak se tam zastaví o sekundu déle a až po tom se napíše "KONEC". Takže celkový countdown netrvá 3 sekundy, ale 4, protože přechod z 1 na 0 trvá 2 sekundy, zatímco přechod z 3 na 2 a 2 na 1 trvá jednu sekundu...

Neví prosím někdo co s tím?

 
Odpovědět
3.6.2016 18:45
Avatar
Martin Skalík
Tvůrce
Avatar
Martin Skalík:6.6.2016 19:08

Moje řešení pomocí Thread (přišlo mi to jednoduší) :

TextView textView = (TextView)findViewById(R.id.textView);
int chybi;

new Thread(new Runnable() {
    @Override
    public void run() {

        chybi = 3;

        while(chybi!=0){

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    textView.setText(""+chybi);
                }
            });

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            chybi--;

        }

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setText("KONEC!");
            }
        });

    }
}).start();
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
6.6.2016 19:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.