Android使用handler可以UI显示的计时器
时间: 2023-12-16 13:05:01 浏览: 79
以下是一个使用handler进行UI显示的计时器的示例代码:
```
public class MainActivity extends AppCompatActivity {
private TextView textViewTimer;
private Handler handler = new Handler();
private int seconds = 0;
private boolean isRunning = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewTimer = findViewById(R.id.textViewTimer);
runTimer();
}
public void onClickStart(View view) {
isRunning = true;
}
public void onClickPause(View view) {
isRunning = false;
}
public void onClickReset(View view) {
isRunning = false;
seconds = 0;
}
private void runTimer() {
handler.post(new Runnable() {
@Override
public void run() {
int hours = seconds / 3600;
int minutes = (seconds % 3600) / 60;
int secs = seconds % 60;
String time = String.format("%d:%02d:%02d", hours, minutes, secs);
textViewTimer.setText(time);
if (isRunning) {
seconds++;
}
handler.postDelayed(this, 1000);
}
});
}
@Override
protected void onPause() {
super.onPause();
isRunning = false;
}
@Override
protected void onResume() {
super.onResume();
isRunning = true;
}
}
```
在这个示例中,我们使用了一个handler对象来更新UI中的计时器。计时器的值由一个整数变量seconds表示,每秒钟增加1。当用户点击“开始”按钮时,isRunning标志设置为true,计时器开始增加。当用户点击“暂停”按钮时,isRunning标志设置为false,计时器停止增加。当用户点击“重置”按钮时,isRunning标志设置为false,计时器重置为0。计时器的值被格式化为小时:分钟:秒,并显示在textViewTimer TextView中。handler.postDelayed()方法使用延迟1秒钟的Runnable对象来更新计时器。在onPause()和onResume()方法中,我们设置isRunning标志以控制计时器的运行状态。
阅读全文