public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.rollDice:
Random ranNum = new Random();
int number = ranNum.nextInt(6) + 1;
diceNum.setText(""+number);
sum = sum + number;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
int value =(Integer)buttons[i][j].getTag();
if(value==sum){
inew=i;
jnew=j;
buttons[inew][jnew].setBackgroundColor(Color.BLACK);
//I want to insert a delay here
buttons[inew][jnew].setBackgroundColor(Color.WHITE);
break;
}
}
}
break;
}
}
Chcę ustawić opóźnienie między poleceniem między zmianą tła. Próbowałem użyć licznika czasu wątku i próbowałem użyć funkcji run and catch. Ale to nie działa. Próbowałem tego
Thread timer = new Thread() {
public void run(){
try {
buttons[inew][jnew].setBackgroundColor(Color.BLACK);
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
timer.start();
buttons[inew][jnew].setBackgroundColor(Color.WHITE);
Ale zmienia się tylko na czarny.
Możesz użyć tego,
CountDownTimer
co jest znacznie bardziej wydajne niż jakiekolwiek inne opublikowane rozwiązanie. Możesz również generować regularne powiadomienia w odstępach czasu, korzystając z tejonTick(long)
metodySpójrz na ten przykład pokazujący 30-sekundowe odliczanie
źródło
Jeśli często używasz opóźnienia w swojej aplikacji, użyj tej klasy narzędzi
Stosowanie:
źródło
Korzystanie z
Thread.sleep(millis)
metody.źródło
Jeśli chcesz zrobić coś w interfejsie użytkownika w regularnych odstępach czasu, bardzo dobrą opcją jest użycie CountDownTimer:
źródło
Odpowiedź handlera w Kotlinie:
1 - Utwórz funkcję najwyższego poziomu w pliku (na przykład plik zawierający wszystkie funkcje najwyższego poziomu):
2 - Następnie zadzwoń w dowolne miejsce:
źródło
Możesz użyć tego:
a dla samego opóźnienia dodaj:
gdzie
delay
zmienna jest w milisekundach; na przykład ustawionedelay
na 5000 dla 5-sekundowego opóźnienia.źródło
Oto przykład, w którym zmieniam obraz tła z jednego na drugi z 2-sekundowym opóźnieniem zanikania alfa w obie strony - 2-sekundowe zanikanie oryginalnego obrazu na 2-sekundowe zanikanie na drugim obrazie.
źródło