Android 倒计时器 00:00:00格式

这篇博客介绍了如何在Android应用中创建一个倒计时器,显示为00:00:00格式。通过自定义`MyCount`类继承自`AdvancedCountdownTimer`,并重写`onTick`和`onFinish`方法,实现了倒计时功能。当倒计时结束时,会跳转到新的活动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能:

倒计时


类:MainActivity(主类)

       MyCount(实现倒计时功能的类)

       AdvancedCountdownTimer(消息机制的抽象类)


代码如下:

       package com.example.daojishiqi;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView txt_time;
    private MyCount count = null;
    Button breStart;
    Button bcancle;
    //时间变量
    private long hour = 0;//时
    private long minute = 0;//分
    private long second = 0;//秒  
    private long time = 0;//总时间  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txt_time = (TextView) findViewById(R.id.tv_time);
        breStart = (Button) findViewById(R.id.button2);
        bcancle = (Button) findViewById(R.id.button3);


        hour = Long.parseLong("00");  
        minute = Long.parseLong("02");  
        second = Long.parseLong("00");  
        time = (hour * 3600 + minute * 60 + second) * 1000;  //因为以ms为单位,所以乘以1000.
        count = new MyCount(time, 1000);//延时时间为1s
        txt_time.setText("剩余时间00:00:00");
        txt_time.setTextSize(30);


    }
    public void startTime(View view){
        count.start();  //开始计时  !!!!!!!!!!
    }

    public void restartTime(View view){
        count.resume();//重新计时
    }
    public void cancleTime(View view){
        count.cancel();//取消计时
    }

    /**
     * 实现倒计时功能的类
     */
    class MyCount extends AdvancedCountdownTimer{
        public MyCount(long millisInFuture, long countDownInterval) {  //这两个参数在AdvancedCountdownTimer.java中均有(在“构造函数”中).
            super(millisInFuture, countDownInterval);  
        }  

        @Override  
        public void onFinish() {   
//            txt_time.setText("剩余时间00:00:00");   

            Intent intent = new Intent(MainActivity.this,WelcomeActivity.class);
            startActivity(intent);
            finish();

        }

        //更新剩余时间  
        String a = null;
        @Override  
        public void onTick(long millisUntilFinished, int percent) {  
            long myhour = (millisUntilFinished / 1000) / 3600;  
            long myminute = ((millisUntilFinished / 1000) - myhour * 3600) / 60;  
            long mysecond = millisUntilFinished / 1000 - myhour * 3600  
                    - myminute * 60;
            if(mysecond<10){
                a = "0" + mysecond;
                txt_time.setText("剩余时间" + "0"+ myhour + ":" +"0"+myminute + ":" + a);
            }else{
                
                txt_time.setText("剩余时间" + "0"+ myhour + ":" +"0"+myminute + ":" + mysecond);
            }
            
            txt_time.setTextSize(30);
        }

    }
}


package com.example.daojishiqi;

import android.os.Handler;
import android.os.Message;

public abstract class AdvancedCountdownTimer {
    private static final int MSG_RUN = 1;
    private final long mCountdownInterval;//定时间隔,以毫秒计
    private long mTotalTime;// 定时时间  
    private long mRemainTime;// 剩余时间
    //构造函数  
    public AdvancedCountdownTimer(long millisInFuture, long countDownInterval) {  
        mTotalTime = millisInFuture;  
        mCountdownInterval = countDownInterval;  
        mRemainTime = millisInFuture;  
    }  
    //开始计时  
    public synchronized final AdvancedCountdownTimer start() {  
        if (mRemainTime <= 0) {// 计时结束后返回  
            onFinish();  
            return this;  
        }  
        // 设置计时间隔  
        mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RUN),  
                mCountdownInterval);  
        return this;  
    }  
    // 暂停计时  
    public final void cancel() {  
        mHandler.removeMessages(MSG_RUN);  
    
    }  

    // 重新开始计时  
    public final void resume() {  
        mHandler.sendMessageAtFrontOfQueue(mHandler.obtainMessage(MSG_RUN));  
    }  

    public abstract void onTick(long millisUntilFinished, int percent); // 计时中  

    public abstract void onFinish();// 计时结束  

    // 通过handler更新android UI,显示定时时间  
    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);  
                    }  
                }   
            }  
        }  
    };  

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值