我知道有一个可用的数字时钟小部件,但出于学习目的,我决定通过扩展View类来创建一个自定义小部件。我成功地将时间花在屏幕上,但我不知道让视图每秒更新时间的正确方法。
我需要能够告诉视图每秒重绘一次以更新时间的东西。什么是正确的方法呢?
答案 0 :(得分:0)
可能会使用您的计时器使drawable上的自身无效...您可以查看developer docs以获取详细信息。注意“如果Drawable没有附加回调”,则不执行任何操作,或者什么都不会发生!
答案 1 :(得分:0)
你在使用计时器吗?如果你那么你可以这样做:
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 );
}