java - 如何让程序读取秒表,然后在时间到达那一秒时在另一个 TextView 框中打印语句

标签 java android if-statement timer

我想做一个秒表。当我的秒表到达 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正是您要找的。

它扩展了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");
        }
    }
});

您不必处理 HandlerRunnable用这种方法

关于java - 如何让程序读取秒表,然后在时间到达那一秒时在另一个 TextView 框中打印语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604434/

相关文章:

java - Ant -e 仅用于 java 任务

java - ResultSet.insertRow() VS Statement.executeUpdate ("INSERT INTO...")。使用哪个更好?

Android 模拟器遇到加载问题

Java 是否嵌套?其他方法?

Java除法循环

java - 如何将十进制转换为二进制并以特定方式格式化?

java - 使用 BufferedReader (Socket) 读取多行

Android TextVIew 基于 View 大小的省略号

Android:以编程方式为自定义 Drawable 设置动画

python - 为字典中的句子赋予值