Как установить таймер в android?

Может ли кто-нибудь привести простой пример обновления текстового поля примерно каждую секунду?

I хочу сделать летающий мяч и мне нужно вычислять / обновлять координаты мяча каждую секунду, поэтому мне нужен какой-то таймер.

Я ничего не получаю от здесь .

312
задан Awais Aslam 29 October 2019 в 21:50
поделиться

2 ответа

Я использую этот путь:

String[] array={
       "man","for","think"
}; int j;

затем ниже onCreate

TextView t = findViewById(R.id.textView);

    new CountDownTimer(5000,1000) {

        @Override
        public void onTick(long millisUntilFinished) {}

        @Override
        public void onFinish() {
            t.setText("I "+array[j] +" You");
            j++;
            if(j== array.length-1) j=0;
            start();
        }
    }.start();

это - простой способ решить эту проблему.

0
ответ дан 23 November 2019 в 01:10
поделиться

Я Абстрагирую Таймер далеко и сделал его отдельным классом:

Timer.java

import android.os.Handler;

public class Timer {

    IAction action;
    Handler timerHandler = new Handler();
    int delayMS = 1000;

    public Timer(IAction action, int delayMS) {
        this.action = action;
        this.delayMS = delayMS;
    }

    public Timer(IAction action) {
        this(action, 1000);
    }

    public Timer() {
        this(null);
    }

    Runnable timerRunnable = new Runnable() {

        @Override
        public void run() {
            if (action != null)
                action.Task();
            timerHandler.postDelayed(this, delayMS);
        }
    };

    public void start() {
        timerHandler.postDelayed(timerRunnable, 0);
    }

    public void stop() {
        timerHandler.removeCallbacks(timerRunnable);
    }
}

И Извлечение основное действие от Timer класс как

IAction.java

public interface IAction {
    void Task();
}

И я использовали его точно так же, как это:

MainActivity.java

public class MainActivity extends Activity implements IAction{
...
Timer timerClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
        ...
        timerClass = new Timer(this,1000);
        timerClass.start();
        ...
}
...
int i = 1;
@Override
public void Task() {
    runOnUiThread(new Runnable() {

        @Override
        public void run() {
            timer.setText(i + "");
            i++;
        }
    });
}
...
}

я Надежда Это Помогает 😊👌

0
ответ дан 23 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: