Android利用Chronometer實現倒計時功能_Android

來源:互聯網
上載者:User

項目需要實現一個計時的功能,利用Chronometer雖然可以很方便的實現計時功能,但需要的卻是一個倒計時控制項。

百度了一下方法不少,倒計時的卻沒有,於是用Chronometer封裝了一個倒計時的類,本著開源的精神,分享給大家!

廢話不說了,進入主題

首先xml布局如下:

<com.example.anticlockwisedemo.Anticlockwise  android:id="@+id/id_timer"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:textSize="66sp" /> 

繼承Chronometer封裝好的類:

package com.example.anticlockwisedemo;  import java.text.SimpleDateFormat; import java.util.Date; import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; import android.widget.Chronometer;   /***  *  * @author 張小_懶 2015/02/07  *  */ @SuppressLint( { "ViewConstructor", "SimpleDateFormat" }) public class Anticlockwise extends Chronometer {  public Anticlockwise(Context context, AttributeSet attrs)  {  super(context, attrs);  // TODO 自動產生的建構函式存根  mTimeFormat = new SimpleDateFormat("mm:ss");  this.setOnChronometerTickListener(listener);  }   private long mTime;  private long mNextTime;  private OnTimeCompleteListener mListener;  private SimpleDateFormat mTimeFormat;   public Anticlockwise(Context context)  {  super(context);   }   /**  * 重新啟動計時  */  public void reStart(long _time_s)  {  if (_time_s == -1)  {  mNextTime = mTime;  } else  {  mTime = mNextTime = _time_s;  }  this.start();  }   public void reStart()  {  reStart(-1);  }   /**  * 繼續計時  */  public void onResume()  {  this.start();  }   /**  * 暫停計時  */  public void onPause()  {  this.stop();  }   /**  * 設定時間格式  *  * @param pattern  * 計時格式  */  public void setTimeFormat(String pattern)  {  mTimeFormat = new SimpleDateFormat(pattern);  }   public void setOnTimeCompleteListener(OnTimeCompleteListener l)  {  mListener = l;  }   OnChronometerTickListener listener = new OnChronometerTickListener()  {  @Override  public void onChronometerTick(Chronometer chronometer)  {  if (mNextTime <= 0)  {  if (mNextTime == 0)  {  Anticlockwise.this.stop();  if (null != mListener)  mListener.onTimeComplete();  }  mNextTime = 0;  updateTimeText();  return;  }   mNextTime--;   updateTimeText();  }  };   /**  * 初始化時間  * @param _time_s  */  public void initTime(long _time_s)  {  mTime = mNextTime = _time_s;  updateTimeText();  }   private void updateTimeText()  {  this.setText(mTimeFormat.format(new Date(mNextTime * 1000)));  }   interface OnTimeCompleteListener  {  void onTimeComplete();  }  } 

效果圖:

程式很簡單,我就不做過多的解釋。

詳細的大家可以看Demo,已封裝,可直接使用,下載地址:http://xiazai.jb51.net/201611/yuanma/androidChronometer(jb51.net).rar

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.