最近比较忙 就不做说明了,可以实现 00:00:00 格式的计时功能 ,如果有不同之处可以改代码修改一下即可,代码很简单 大家看看就能明白
import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
import java.util.Timer;
import java.util.TimerTask;
public class TimerView extends android.support.v7.widget.AppCompatTextView {
private long mSeconds;
private Handler mHandler = new Handler();
public TimerView(Context context) {
super(context);
}
public TimerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TimerView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void startTimer() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mSeconds++;
calcTime();
startTimer();
}
}, 1000);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mHandler != null) {
mHandler.removeCallbacksAndMessages(null);
}
}
private void calcTime() {
String timeStr = "00:00:00";
if (mSeconds < 60) {
timeStr = "00:00:" + calcTimeFormat(mSeconds);
} else if (mSeconds >= 60 && mSeconds < 3600) {
int second = (int) (mSeconds % 60);
int minute = (int) (mSeconds / 60);
timeStr = "00:" + calcTimeFormat(minute) + ":" + calcTimeFormat(second);
} else if (mSeconds >= 3600) {
int hour = (int) (mSeconds / 3600);
int secondL = (int) (mSeconds % 3600);
String secondStr = "00";
String minuteStr = "00";
if (secondL < 60) {
secondStr = calcTimeFormat(secondL);
} else {
int minute = secondL / 60;
int second = (int) (secondL % 60);
secondStr = calcTimeFormat(second);
minuteStr = calcTimeFormat(minute);
}
timeStr = calcTimeFormat(hour) + ":" + minuteStr + ":" + secondStr;
}
setText(timeStr);
}
private String calcTimeFormat(long timeLong) {
return timeLong >= 10 ? timeLong + "" : "0" + timeLong;
}
}