我有一个带有计时器的应用程序,我需要将开始时间设置为日期之间的差异

我怎样才能做到这一点?

最佳答案

这样做的一种方法是扩展 Chronometer 类......像这样:

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;
    }
}

您可以使用 setMsElapsed(int ms) 来指定您的偏移量。您可能必须将日期转换为 Long 并从那里进行数学计算。如果您指定类所在的整个包,则可以在 XML 布局中使用该类。

10-08 08:45