Reputation: 199
I have a timer that counts down from 10, when it reaches zero it makes a random imageview in an array turn visible. I just want this timer to reset itself every time it reaches zero. How can I Achieve this?
Current Attempt:
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();
}
}
Any help or advice to improve the code here would be greatly appreciated thank you.
Upvotes: 1
Views: 2702
Reputation: 1008
Create object CountDownTimer outside OnCreate() then .start() again that object after your random is done inside onFinish()
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();
}
Upvotes: 3