Я пытаюсь показать пользователю таймер, который отсчитывает от 3 до 0. Этот таймер должен быть виден, когда пользователь перетаскивает объект в определенном положении, и должен быть остановлен (и сброшен), когда пользователь перетаскивает объект из этой позиции ..
Пока я работаю с Log.d, фактическим отображением таймера, с которым я разберусь позже.
Пока у меня есть (нерабочий код):
public void setX(float x) {
isCheckOut = false;
// if basket is further than slotmargin
if (x + width/2 > SlotManager.SlotmarginX) {
// if basket is NOT in CheckOut area
if (this.Y < MainGamePanel.height - 80 - height/2){
x = SlotManager.SlotmarginX - width/2;
} else {
// if basket IS in CheckOut area
x = MainGamePanel.width - width/2;
isCheckOut = true;
GameManager.CheckOut();
}
}
this.X = x;
}
А в GameManager:
public static void CheckOut() {
Thread t = new Thread(new Runnable() {
public void run() {
while (basket.isCheckOut == true){
for (int i=3;i>3;i--){
final Handler handler = new Handler();
Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
Log.d("", "Countdown " + i);
}
});
}
}, 2000);
}
}
}
});
t.start();
}
Мне кажется, что я куда-то добираюсь, но не могу обернуть голову вокруг комбинации таймера петли. Таймер должен остановиться, когда isCheckOut == false. Теперь я думаю, что запускаю таймер снова и снова ... И я не могу использовать int "i" для отображения текущего обратного отсчета int, потому что он не окончательный?
Помощь высоко ценится!