How can I set the start time for a chronometer

2019-07-06 11:11发布

I have an application that has a chronometer, I need to set the start time to a difference between to dates

How can I do that?

1条回答
你好瞎i
2楼-- · 2019-07-06 11:33

One way of doing this is to extends the Chronometer class... something like this:

public class MyChronometer extends Chronometer {

    public int msElapsed;
    public boolean isRunning = false;

    public MyChronometer(Context context) {
        super(context);
    }

    public int getMsElapsed() {
        return msElapsed;
    }

    public void setMsElapsed(int ms) {
        setBase(getBase() - ms);
        msElapsed  = ms;
    }

    @Override
    public void start() {
        super.start();
        setBase(SystemClock.elapsedRealtime() - msElapsed);
        isRunning = true;
    }

    @Override
    public void stop() {
        super.stop();
        if(isRunning) {
            msElapsed = (int)(SystemClock.elapsedRealtime() - this.getBase());
        }
        isRunning = false;
    }
}

You can use setMsElapsed(int ms) to specify your offset. You will probably have to convert your Dates to Long and do the math from there. The class can be used in XML layout if you specify the whole package where the class resides.

查看更多
登录 后发表回答