Android倒计时
因为项目需要,做了一个限时抢购的倒计时,其中是天,时,分,上面上截图和代码:这个是活动结束了。。
public class Tasktimer extends Chronometer { public Tasktimer(Context context, AttributeSet attrs) { super(context, attrs); mTimeFormat = new SimpleDateFormat("hh:mm:ss"); this.setOnChronometerTickListener(listener); } private long mTime; private long mNextTime; private OnTimeCompleteListener mListener; private SimpleDateFormat mTimeFormat; public Tasktimer(Context context) { super(context); } /** * 设置时间格式 * * @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) { Tasktimer.this.stop(); if (null != mListener) mListener.onTimeComplete(); } mNextTime = 0; updateTimeText(); return; } mNextTime--; updateTimeText(); } }; //初始化时间(秒) public void initTime(long _time_s) { mTime = mNextTime = _time_s; updateTimeText(); } //初始化时间(分秒) public void initTime(long _time_h, long _time_m, long _time_s) { initTime(_time_h * 3600 + _time_m * 60 + _time_s); } private void updateTimeText() { this.setText(FormatMiss(mNextTime)); } // 将秒转化成小时分钟秒 public static String FormatMiss(long miss) { String hh = miss / 3600 > 9 ? miss / 3600 + "" : "0" + miss / 3600; String mm = (miss % 3600) / 60 > 9 ? (miss % 3600) / 60 + "" : "0" + (miss % 3600) / 60; String ss = (miss % 3600) % 60 > 9 ? (miss % 3600) % 60 + "" : "0" + (miss % 3600) % 60; return hh + ":" + mm + ":" + ss; } public interface OnTimeCompleteListener { void onTimeComplete(); } }
这个是之前百度到某位仁兄的一个类,不好意思找不到链接。不然就给你贴上去了。接着上代码:
新建一个activity,
private String time;//倒计时
private Tasktimer mTasktimer;
mTasktimer = (Tasktimer) findViewById(R.id.task_timer_textview);
if (time != null) { mTasktimer.initTime(Long.parseLong(time)); mTasktimer.start(); mTasktimer.setOnTimeCompleteListener(new Tasktimer.OnTimeCompleteListener() { @Override public void onTimeComplete() { freeBtn.setBackgroundResource(R.drawable.btn_unable);//对倒计时结束时做的操作 } }); }
基本搞定了,方便大家,贴上xml文件。
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="10dp" android:gravity="right" android:orientation="horizontal"> <TextView android:id="@+id/deadline_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="距离结束还有" android:textColor="@color/fuzhutitle" android:textSize="12sp" /> <com.example.utils.Tasktimer//这个是你自己包的路径 android:id="@+id/task_timer_textview" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerInParent="true" android:layout_marginRight="20px" android:textColor="@color/text_color" android:textSize="12sp" /> </LinearLayout>
注意一下,这边的time是后台返回的秒数,我觉得着这样子比较安全,就不在本地做计算时间的操作了。