我想做一个秒表。当我的秒表到达 1 分钟时,我希望它打印一条语句,我怎样才能做到这一点?
我正在使用 android studio(java),这是我的一些代码:
Button btnStart,btnPause,btnLap;
TextView txtTimer;
Handler customHandler = new Handler();
LinearLayout container;
TextView lt;
long startTime=0L,timeinMilliseconds=0L,timeSwapBuff=0L,updateTime=0L;
Runnable updateTimerThread = new Runnable() {
@Override
public void run() {
timeinMilliseconds = SystemClock.uptimeMillis() -startTime;
updateTime = timeSwapBuff+timeinMilliseconds;
int secs=(int) (updateTime/1000);
int mins=secs/60;
secs%=60;
int milliseconds=(int) (updateTime%1000);
String s = "" + mins + ":" + String.format("%02d",secs) + ":" + String.format("%03d",milliseconds);
txtTimer.setText (s);
customHandler.postDelayed(this,0);
}
};
最佳答案
如果您只想在 X 分钟后设置文本,只需创建一个这样的方法:
private void printText(int minutes) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//do you setText here
}
}, minutes * 1000);
}
并像这样使用它:
printText(1);
更新:
Chronometer正是您要找的。p>
它扩展了TextView
, 所以只需将您的计时器 TextView 替换为 Chronometer
mChronometer = findViewById(R.id.chronometer2);
mChronometer.setBase(SystemClock.elapsedRealtime());
mChronometer.start();
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase();
int secs = (int) (elapsedMillis/1000);
int mins = secs/60;
if (mins == 1) {
mChronometer.stop();
anotherTextVeiw.setText("the 1 minute mark has passed");
}
}
});
您不必处理 Handler
和 Runnable
用这种方法
关于java - 如何让程序读取秒表,然后在时间到达那一秒时在另一个 TextView 框中打印语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604434/