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;
}
}
Je veux définir un délai entre la commande entre le changement d'arrière-plan. J'ai essayé d'utiliser un minuteur de fil et j'ai essayé d'utiliser run and catch. Mais ça ne marche pas. J'ai essayé ça
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);
Mais il ne fait que devenir noir.
Vous pouvez utiliser
CountDownTimer
ce qui est beaucoup plus efficace que toute autre solution publiée. Vous pouvez également produire des notifications régulières à intervalles réguliers en utilisant saonTick(long)
méthodeJetez un œil à cet exemple montrant un compte à rebours de 30 secondes
la source
Si vous utilisez fréquemment le délai dans votre application, utilisez cette classe d'utilitaire
Usage:
la source
En utilisant la
Thread.sleep(millis)
méthode.la source
Si vous voulez faire quelque chose dans l'interface utilisateur à des intervalles de temps réguliers, une très bonne option est d'utiliser CountDownTimer:
la source
Réponse du gestionnaire à Kotlin:
1 - Créez une fonction de niveau supérieur dans un fichier (par exemple un fichier contenant toutes vos fonctions de niveau supérieur):
2 - Ensuite, appelez-le partout où vous en avez besoin:
la source
Vous pouvez utiliser ceci:
et pour le retard lui-même, ajoutez:
où la
delay
variable est en millisecondes; par exemple réglédelay
sur 5000 pour un délai de 5 secondes.la source
Voici un exemple où je change l'image d'arrière-plan de l'une à l'autre avec un délai de fondu alpha de 2 secondes dans les deux sens - un fondu de 2s de l'image d'origine en un fondu de 2s dans la 2ème image.
la source