我有一个带有计时器的应用程序,我需要将开始时间设置为日期之间的差异
我怎样才能做到这一点?
最佳答案
这样做的一种方法是扩展 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 布局中使用该类。