Android 倒计时器工具类

简介

安卓提供了一个可以用来计算倒计时的类——CountDownTimer,用来设置倒计时

import android.annotation.SuppressLint;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.TextView;

public class CountDownTimerUtils {
    @SuppressLint("StaticFieldLeak")
    private static CountDownTimer timer;

    /**
     * 由于该倒计时类会存在不会显示0秒,且最后1秒实际是接近2秒的时间,因此处理时将剩余秒数多减了一秒
     * 在创建timer时,倒计时的秒数应该多加1秒,自动计时类计时时会产生毫秒值得误差,如果去整数的值
     * 在计算时可能会出现跳秒的情况(实际倒计时的秒数差的不大,就几十毫秒),为了给计秒做补偿,多加500毫秒
     * 保证误差同时也能保证计秒准确
     *
     * @param second      需要设置的倒计时秒数
     * @param view        倒计时运行时需要设置文本变化的控件TextView或者Button
     * @param defaultText 计时结束后view上显示的内容
     */
    public static void getTimer(int second, final View view, final String defaultText) {
        timer = new CountDownTimer(second * 1000 + 1500, 1000) {
            @SuppressLint("DefaultLocale")
            @Override
            public void onTick(long millisUntilFinished) {
                long remainderTime = millisUntilFinished / 1000 - 1;
                //判断view是否是TextView,如果是就设置显示倒计时的文本(Button是TextView子类)
                //如果是TextView的话,设置显示倒计时同时设置view不可点击
                if (view instanceof TextView) {
                    ((TextView) view).setText(String.format("%ds", remainderTime));
                }
                if (remainderTime == 0) {
                    //判断为1秒时,结束计时,并恢复view可以点击
                    onFinish();
                    cancel();
                }
            }

            @Override
            public void onFinish() {
                view.setClickable(true);
                if (view instanceof TextView) {
                    ((TextView) view).setText(defaultText);
                }
            }
        };
        //开启计时器
        timer.start();
        //设置不能被点击
        view.setClickable(false);
    }

    /**
     * 取消计时器计时
     */
    public static void cancelTimer() {
        if (timer != null) {
            timer.cancel();
            timer.onFinish();
        }
    }
}

参考文章:倒计时器CountDownTimer使用_玩偶的心的博客-CSDN博客

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Android 中提供了 CountDownTimer 类来实现倒计时功能。 首先,在布局文件中添加一个 TextView 用于显示倒计时时间: ``` <TextView android:id="@+id/countdown_timer" android:layout_width="wrap_content" android:layout_height="wrap_content"/> ``` 然后在 Activity 或 Fragment 中获取 TextView 实例,并创建 CountDownTimer 对象: ``` TextView countdownTimer = findViewById(R.id.countdown_timer); CountDownTimer timer = new CountDownTimer(60000, 1000) { public void onTick(long millisUntilFinished) { // 每秒钟更新一次倒计时时间 countdownTimer.setText("倒计时:" + millisUntilFinished / 1000 + "秒"); } public void onFinish() { // 倒计时结束时的操作 countdownTimer.setText("倒计时结束"); } }; ``` 其中 `CountDownTimer` 构造函数的第一个参数表示倒计时总时间,单位为毫秒;第二个参数表示倒计时间隔,单位同样为毫秒。在 `onTick()` 方法中更新 TextView 显示的倒计时时间,`onFinish()` 方法在倒计时结束时调用。 最后,在需要开始倒计时的地方调用 `start()` 方法即可: ``` timer.start(); ``` ### 回答2: Android倒计时控件是一种用于显示倒计时时间的界面元素,它可以提供一个倒计时功能,帮助用户在特定的时间段内进行倒计时操作。 在Android中,可以通过使用CountDownTimer类来实现倒计时功能。CountDownTimer类是Android提供的一个抽象类,它可以帮助我们实现倒计时功能。 使用CountDownTimer类,我们可以传入两个参数:倒计时总时间和倒计时间隔。倒计时总时间表示倒计时的总时长,而倒计时间隔表示每隔多长时间更新一次倒计时状态。通过重写CountDownTimer类的onTick()方法和onFinish()方法,我们可以在倒计时过程中进行相应的操作。 在onTick()方法中,我们可以更新倒计时界面的显示内容,例如更新TextView控件中的文字内容,显示当前的倒计时时间。 在onFinish()方法中,我们可以进行倒计时结束后的操作,例如更新按钮状态,显示倒计时结束的提示信息等。 除了使用CountDownTimer类外,我们还可以使用Handler类和Runnable接口来实现倒计时功能。通过Handler类和Runnable接口,我们可以实现自定义的倒计时功能,并更新UI界面。 总之,Android倒计时控件是一种非常实用的界面元素,可以帮助我们实现倒计时功能,提醒用户在特定时间内进行相关操作。无论是使用CountDownTimer类还是Handler类和Runnable接口,都可以实现倒计时功能,开发者可以根据具体的需求选择合适的实现方式。 ### 回答3: Android倒计时控件是一种在Android应用中用于显示倒计时的控件。它通常被用于倒计时功能,比如在游戏中显示剩余时间,或者在计时器应用中显示倒计时Android系统提供了几种不同的方式来实现倒计时控件。 一种简单的实现方式是使用CountDownTimer类。这个类提供了一个倒计时功能,并且可以轻松地实现倒计时控件。我们可以通过继承CountDownTimer类并覆写其中的方法来实现自定义的倒计时控件。在覆写的方法中,我们可以处理倒计时过程中的逻辑,比如更新UI界面。 另一种实现方式是使用Handler和Runnable来实现倒计时功能。我们可以创建一个Handler对象,并使用它来发送延时消息。在延时消息的回调函数中,我们可以更新倒计时控件的UI界面。通过不断地发送延时消息,我们可以实现倒计时的效果。 在实现倒计时控件时,需要注意一些细节。首先是要考虑控件的样式和布局,以便能够适应不同的应用场景。其次是要处理倒计时结束时的逻辑,比如触发某个事件或显示相应的提示信息。另外,还需考虑到倒计时控件在后台运行时的管理,以便能够正确地继续倒计时。 总之,Android倒计时控件是一种在应用程序中实现倒计时功能的重要工具。通过不同的方式实现倒计时控件,我们可以满足不同应用的需求,并提供良好的用户体验。同时,我们还需要注意一些细节,以确保倒计时控件的稳定性和正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TDSSS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值