我有一个从10开始倒数的计时器,当计时器达到零时,它将使数组中的随机imageview可见。我只希望此计时器在每次到达零时自行重置。我该如何实现?
当前尝试:
public class rear_gunner extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rear_gunner);
View view2 = findViewById(R.id.item_frame);
final ImageView enemy1 = (ImageView) findViewById(R.id.enemy1);
ImageView enemy2 = (ImageView) findViewById(R.id.enemy2);
ImageView enemy3 = (ImageView) findViewById(R.id.enemy3);
ImageView enemy4 = (ImageView) findViewById(R.id.enemy4);
//sets screen orientation on created
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
view2.bringToFront();
final ImageView[] enemies = new ImageView[4];
enemies[0] = enemy1;
enemies[1] = enemy2;
enemies[2] = enemy3;
enemies[3] = enemy4;
Random rand = new Random();
int n = rand.nextInt(20) + 1;
CountDownTimer countDownTimer = new CountDownTimer(10000, 1000) {
@Override
public void onFinish() {
Random rand = new Random();
int n = rand.nextInt(3) + 1;
enemies[n].setVisibility(View.VISIBLE);
}
@Override
public void onTick(long millisUntilFinished) {
}
};
countDownTimer.start();
}
}
感谢您对此处代码改进的任何帮助或建议。
最佳答案
在OnCreate()外部创建对象CountDownTimer,然后在onFinish()中完成随机操作后再次.start()对该对象进行创建
CountDownTimer countDownTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
countDownTimer = new CountDownTimer(2000, 1000) {
@Override
public void onFinish() {
//what you want to do after CountDownTimer is done
countDownTimer.start(); //start again
}
@Override
public void onTick(long millisUntilFinished) {
}
};
countDownTimer.start();
}