Java三秒倒计时
我正在开发一个非常简单的纸牌战争游戏应用程序,我想在文本视图上显示(3,2,1->WAR!)。 我尝试过这种方法:Java三秒倒计时,java,android,countdown,stopwatch,Java,Android,Countdown,Stopwatch,我正在开发一个非常简单的纸牌战争游戏应用程序,我想在文本视图上显示(3,2,1->WAR!)。 我尝试过这种方法: public void doCounting(){ for(int i=3;i>=0;i--) { if(i!=0){ waitTv.setText("Wait "+i); SystemClock.sleep(1000); }else{ waitTv.setText("WA
public void doCounting(){
for(int i=3;i>=0;i--)
{
if(i!=0){
waitTv.setText("Wait "+i);
SystemClock.sleep(1000);
}else{
waitTv.setText("WAR!");
}
}
}
它不起作用,只是让我的应用程序卡住3秒钟,然后进入活动并在文本视图中放置“WAR!”。您可以使用以下代码:
CountDownTimer countDownTimer = new CountDownTimer(3, 1000){
@Override
public void onTick(long millisUntilFinished) {
waitTv.setText("Wait " + millisUntilFinished/1000);
}
@Override
public void onFinish() {
waitTv.setText("WAR!");
}
}.start();
正确的方法是使用
Thread.sleep(长毫秒)
,尽管此方法可能会引发异常,因此您需要像这样将其包围在try-and-catch中
try{
Thread.sleep(3000);
}catch(Exception e){
e.printStackTrace();
}
已经在Stackoveflow上了它只会让我的应用程序卡住三秒。这是正确的,因为您在UI线程上调用sleep,它也负责drawWell,您将主线程置于睡眠状态三秒钟,因此就是这样。使用AsyncTask或Runnable/Handlers.oh。。那我该怎么做呢?
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class Stopwatch {
static int interval;
static Timer timer;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Input seconds => : ");
String secs = sc.nextLine();
int delay = 1000;
int period = 1000;
timer = new Timer();
interval = Integer.parseInt(secs);
System.out.println(secs);
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println(setInterval());
}
}, delay, period);
}
private static final int setInterval() {
if (interval == 1)
timer.cancel();
return --interval;
}
}