我有一个从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();
}

10-07 20:00
查看更多