我知道有一个可用的数字时钟小部件,但出于学习目的,我决定通过扩展 View 类来创建一个自定义小部件。我成功地将时间绘制到屏幕上,但我不知道让 View 每秒更新时间的正确方法。
我需要一些东西来告诉 View 每秒重新绘制一次以更新时间。正确的做法是什么?
最佳答案
你在使用定时器吗?如果你是那么你可以这样做:
private Timer timer;
private int seconds;
...
seconds = 0;
timer = new Timer();
timer.scheduleAtFixedRate(new UpdateViewTask(), 0, 1000);
//1000 is in milliseconds so this is one second
...
private class UpdateViewTask extends TimerTask{
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
seconds++;
//update view here
view.setText(secondsToHHMMSS(seconds));
}
});
}
}
public static String secondsToHHMMSS(int secs) {
int hours = secs / 3600;
int remainder = secs % 3600;
int minutes = remainder / 60;
int seconds = remainder % 60;
return ( (hours < 10 ? "0" : "") + hours
+ ":" + (minutes < 10 ? "0" : "") + minutes
+ ":" + (seconds< 10 ? "0" : "") + seconds );
}
关于具有基于时间更新的 Android 自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393462/