Android自定义视图,具有基于时间的更新

时间:2013-08-23 01:56:42

标签: android

我知道有一个可用的数字时钟小部件,但出于学习目的,我决定通过扩展View类来创建一个自定义小部件。我成功地将时间花在屏幕上,但我不知道让视图每秒更新时间的正确方法。

我需要能够告诉视图每秒重绘一次以更新时间的东西。什么是正确的方法呢?

2 个答案:

答案 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 );

}