gpt4 book ai didi

java - Android 使用两个倒数计时器

转载 作者:太空狗 更新时间:2023-10-29 13:10:19 25 4
gpt4 key购买 nike

在我的应用中,我使用了两个具有相同值的不同 CountDownTimers。我有两个按钮来控制它们,但是当我按两次按钮时,它会从头开始。我想保留它的最后一个值。

这是我的代码:

t1 = new CountDownTimer(white, 1000) {
@Override
public void onTick(long l) {
btnWhite.setText("seconds remaining: " + l / 1000);
white = l;
}

@Override
public void onFinish() {

}
};

t2 = new CountDownTimer(black, 1000) {
@Override
public void onTick(long l) {
btnBlack.setText("seconds remaining: " + l / 1000);
black = l;
}

@Override
public void onFinish() {

}
};

btnBlack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
t1.start();
t2.cancel();
}
});

btnWhite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
t2.start();
t1.cancel();
}
});

最佳答案

我已经测试过了,它有效!

我有两个 TextView 和两个 Button。黑色按钮位于黑色 TextView 旁边,白色按钮位于白色 TextView 旁边。

首先我声明了重要的常量。

//contains the elapsed time for each of the timers
long blackElapsed=0,whiteElapsed=0;

//contains the total time with which we start new timers
long totalWhite = 30000;
long totalBlack = 30000;

接下来我初始化 CountDownTimers。无论你在这里放什么都没关系。我只有这个,以便计时器将被初始化为一些值。原因是它们必须被初始化,以便稍后在 OnClickListener.cancel() 它们。

black = new CountDownTimer(totalWhite, 1000){
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
}
};
white = new CountDownTimer(totalBlack, 1000){
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
}
};

最后是按钮的 OnClickListener。 (W 是白色 textView,B 是黑色 textView,b 是黑色按钮,w 是白色按钮)

w.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
black.cancel();
//using the elapsed time to start a new timer
totalBlack = totalBlack - blackElapsed;
//this preserves milliseconds by ticking every millisecond
white = new CountDownTimer(totalBlack, 1){
@Override
public void onTick(long l) {
B.setText(l+"");
blackElapsed=totalBlack-l; //updating the elapsed time
}
@Override
public void onFinish() {
}
}.start();
}
});
//we do a similar thing with the other player's button
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
white.cancel();
totalWhite = totalWhite - whiteElapsed;
black = new CountDownTimer(totalWhite, 1){
@Override
public void onTick(long l) {
W.setText(l+"");
whiteElapsed=totalWhite-l;
}
@Override
public void onFinish() {
}
}.start();
}
});

关于java - Android 使用两个倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41908611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com