有个CountDownTimer类,重写这个类可以实现自己的时间倒计时,我实现的代码如下:

public class MyCount extends CountDownTimer{ //构造函数,都是毫秒为单位 public MyCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); // TODO Auto-generated constructor stub } @Override public void onFinish() { // TODO Auto-generated method stub //倒计完成 } @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub mTimeLabel.setText("Left: " + millisUntilFinished / 1000); } }

开始和取消调用其已有的方法start和cancel。

这里有别人写的一个类,很不错

import android.os.Handler; import android.os.Message; public abstract class AdvancedCountdownTimer { private final long mCountdownInterval; private long mTotalTime; private long mRemainTime; public AdvancedCountdownTimer(long millisInFuture, long countDownInterval) { mTotalTime = millisInFuture; mCountdownInterval = countDownInterval; mRemainTime = millisInFuture; } public final void seek(int value) { synchronized (AdvancedCountdownTimer.this) { mRemainTime = ((100 - value) * mTotalTime) / 100; } } public final void cancel() { mHandler.removeMessages(MSG_RUN); mHandler.removeMessages(MSG_PAUSE); } public final void resume() { mHandler.removeMessages(MSG_PAUSE); mHandler.sendMessageAtFrontOfQueue(mHandler.obtainMessage(MSG_RUN)); } public final void pause() { mHandler.removeMessages(MSG_RUN); mHandler.sendMessageAtFrontOfQueue(mHandler.obtainMessage(MSG_PAUSE)); } public synchronized final AdvancedCountdownTimer start() { if (mRemainTime <= 0) { onFinish(); return this; } mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RUN), mCountdownInterval); return this; } public abstract void onTick(long millisUntilFinished, int percent); public abstract void onFinish(); private static final int MSG_RUN = 1; private static final int MSG_PAUSE = 2; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { synchronized (AdvancedCountdownTimer.this) { if (msg.what == MSG_RUN) { mRemainTime = mRemainTime - mCountdownInterval; if (mRemainTime <= 0) { onFinish(); } else if (mRemainTime < mCountdownInterval) { sendMessageDelayed(obtainMessage(MSG_RUN), mRemainTime); } else { onTick(mRemainTime, new Long(100 * (mTotalTime - mRemainTime) / mTotalTime) .intValue()); sendMessageDelayed(obtainMessage(MSG_RUN), mCountdownInterval); } } else if (msg.what == MSG_PAUSE) { } } } }; }

更多相关文章

  1. C语言函数的递归(上)
  2. Android(安卓)Audio代码分析13 - AudioTrack::getPosition函数
  3. Android下获取设备唯一标识(UDID, DeviceID...)
  4. Android常用控件-DatePicker以及对话框的两种使用方法
  5. Android(安卓)ListView拖动时背景颜色会变成黑色 的解决办法
  6. Android(安卓)Service不被杀死
  7. 解决Error:Android(安卓)Dex: com.android.dex.DexIndexOverflow
  8. Android(安卓)标题栏上加一个返回按钮 超简单的返回
  9. Android在标准linux基础上对休眠唤醒的实现(一)

随机推荐

  1. Android初始化语言 (init.*.rc、init.con
  2. 淘便宜:背弃其他手机厂商将是Android的灾
  3. Android(安卓)IPC机制(三)——利用AIDL实现
  4. Android中的Handler总结
  5. Android(安卓)开发者的 Flutter(四) —— F
  6. Android(安卓)Button按钮控件美化方法
  7. Android之matrix类控制图片的旋转、缩放
  8. [转]Android(安卓)多个APK共享数据(Share
  9. Android中Handler的使用方法——在子线程
  10. Android(安卓)APK反编译得到Java源代码和