Android倒计时

来源:互联网 发布:皇帝岛 珊瑚岛 pp 知乎 编辑:程序博客网 时间:2024/06/11 00:32

因为项目需要,做了一个限时抢购的倒计时,其中是天,时,分,上面上截图和代码:这个是活动结束了。。



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是后台返回的秒数,我觉得着这样子比较安全,就不在本地做计算时间的操作了。


原创粉丝点击