Может ли кто-нибудь привести простой пример обновления текстового поля примерно каждую секунду?
I хочу сделать летающий мяч и мне нужно вычислять / обновлять координаты мяча каждую секунду, поэтому мне нужен какой-то таймер.
Я ничего не получаю от здесь .
Я использую этот путь:
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();
это - простой способ решить эту проблему.
Я Абстрагирую Таймер далеко и сделал его отдельным классом:
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++;
}
});
}
...
}
я Надежда Это Помогает рџЉрџ‘Њ