问题
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:
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.
来源:https://stackoverflow.com/questions/8896486/how-can-i-set-the-start-time-for-a-chronometer