广告
返回顶部
首页 > 资讯 > 移动开发 >Android 中不用线程如何实现倒计时
  • 356
分享到

Android 中不用线程如何实现倒计时

倒计时线程Android 2022-06-06 04:06:54 356人浏览 泡泡鱼
摘要

需求: 有多个组件可以开启倒计时,正常情况下默认倒计时时间终了后更新UI,另,用户可以取消指定倒计时。 这里使用CountDownTimer进行倒计时,其中回调函数onFini

需求:

有多个组件可以开启倒计时,正常情况下默认倒计时时间终了后更新UI,另,用户可以取消指定倒计时。

这里使用CountDownTimer进行倒计时,其中回调函数onFinish是在倒计时终了时回调,onTick是在倒计时开始时回调,用户可以使用CountDownTimer对象的cancel方法取消倒计时。

这样做的好处:不需要使用繁琐的线程去控制倒计时,更方便的进行UI更新。

上代码:

MainActivity


package test.demo.countdowntest;
import Android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  private Button bt1, bt2, bt3;
  private ProgressBar pb1, pb2, pb3;
  private MyCount mc1,mc2, mc3;
  private boolean mc1Click = false;
  private boolean mc2Click = false;
  private boolean mc3Click = false;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt1 = ((Button) findViewById(R.id.bt1));
    bt2 = ((Button) findViewById(R.id.bt2));
    bt3 = ((Button) findViewById(R.id.bt3));
    bt1.setOnClickListener(this);
    bt2.setOnClickListener(this);
    bt3.setOnClickListener(this);
    pb1 = ((ProgressBar) findViewById(R.id.pb1));
    pb2 = ((ProgressBar) findViewById(R.id.pb2));
    pb3 = ((ProgressBar) findViewById(R.id.pb3));
    mc1 = new MyCount(30000, 1000);
    mc1.setPb(bt1, pb1);
    mc2 = new MyCount(30000, 1000);
    mc2.setPb(bt2, pb2);
    mc3 = new MyCount(30000, 1000);
    mc3.setPb(bt3, pb3);
  }
  @Override
  public void onClick(View view) {
    switch (view.getId()) {
      case R.id.bt1:
        if (mc1Click) {
          mc1.cancel();
          pb1.setVisibility(View.GoNE);
          mc1Click = false;
        } else {
          pb1.setVisibility(View.VISIBLE);
          mc1.start();
          mc1Click = true;
        }
        break;
      case R.id.bt2:
        if (mc2Click) {
          pb2.setVisibility(View.GONE);
          mc2.cancel();
          mc2Click = false;
        } else {
          pb2.setVisibility(View.VISIBLE);
          mc2.start();
          mc2Click = true;
        }
        break;
      case R.id.bt3:
        if (mc3Click) {
          pb3.setVisibility(View.GONE);
          mc3.cancel();
          mc3Click = false;
        } else {
          pb3.setVisibility(View.VISIBLE);
          mc3.start();
          mc3Click = true;
        }
        break;
    }
  }
  
  class MyCount extends CountDownTimer {
    Button mBt;
    ProgressBar mPb;
    public MyCount(long millisInFuture, long countDownInterval) {
      super(millisInFuture, countDownInterval);
    }
    public void setPb(Button bt, ProgressBar pb) {
      mBt = bt;
      mPb = pb;
    }
    @Override
    public void onFinish() {
      mPb.setVisibility(View.GONE);
    }
    @Override
    public void onTick(long millisUntilFinished) {
      mBt.setText("请等待30秒(" + millisUntilFinished / 1000 + ")...");
      Toast.makeText(MainActivity.this, millisUntilFinished / 1000 + "", Toast.LENGTH_LONG).show();
    }
  }
}

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:orientation="vertical"
  tools:context="cn.sh.changxing.countdowntest.MainActivity">
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
      android:id="@+id/bt1"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="测试启动1"/>
    <ProgressBar
      android:id="@+id/pb1"
      style="?android:attr/progressBarStyleSmall"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:indeterminate="true"/>
  </LinearLayout>
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
      android:id="@+id/bt2"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="测试启动2"/>
    <ProgressBar
      android:id="@+id/pb2"
      style="?android:attr/progressBarStyleSmall"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:indeterminate="true"/>
  </LinearLayout>
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
      android:id="@+id/bt3"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="测试启动3"/>
    <ProgressBar
      android:id="@+id/pb3"
      style="?android:attr/progressBarStyleSmall"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:indeterminate="true"/>
  </LinearLayout>
</LinearLayout>

以上所述是小编给大家介绍的Android 中不用线程如何实现倒计时,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

您可能感兴趣的文章:android使用AsyncTask实现多线程下载实例android主线程和子线程之间消息传递详解Android线程实现图片轮播Android使用listview实现分页刷新(线程休眠模拟)Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析Android 中通过实现线程更新Progressdialog (对话进度条)Android实现网络多线程断点续传下载实例Android 开发中线程的分析


--结束END--

本文标题: Android 中不用线程如何实现倒计时

本文链接: https://www.lsjlt.com/news/22668.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 中不用线程如何实现倒计时
    需求: 有多个组件可以开启倒计时,正常情况下默认倒计时时间终了后更新UI,另,用户可以取消指定倒计时。 这里使用CountDownTimer进行倒计时,其中回调函数onFini...
    99+
    2022-06-06
    倒计时 线程 Android
  • Android中如何实现倒计时验证
    这篇文章主要介绍了Android中如何实现倒计时验证,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。短信验证码功能,这里总结了两种常用的方式,可以直接拿来使用。看图:说明:这里...
    99+
    2023-05-31
    android
  • Android中CountDownTimer 实现倒计时功能
    CountDownTimerCountDownTimer 是android 自带的一个倒计时类,使用这个类可以很简单的实现 倒计时功能CountDownTimer 的实现方式 new CountDownTimer(6000,100...
    99+
    2023-05-31
    countdowntimer 倒计时 tim
  • Android中怎么使用flow实现倒计时
    本篇内容主要讲解“Android中怎么使用flow实现倒计时”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中怎么使用flow实现倒计时”吧!现在因为有了协程和Flow,我们可以借助...
    99+
    2023-06-30
  • Android如何实现抢购倒计时功能
    这篇文章将为大家详细讲解有关Android如何实现抢购倒计时功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、效果图二、思路算多少秒,秒数取余60,(满足分后剩下的秒数)算多少分,秒数除60,再取余6...
    99+
    2023-06-14
  • Android利用Chronometer实现倒计时功能
    项目需要实现一个计时的功能,利用Chronometer虽然可以很方便的实现计时功能,但需要的却是一个倒计时控件。 百度了一下方法不少,倒计时的却没有,于是用Chronomete...
    99+
    2022-06-06
    倒计时 Android
  • Android使用CountDownTimer实现倒计时效果
    在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用Handler + Timer + TimerTask来实现,现在发现了这个类,果断抛弃之前的做...
    99+
    2022-06-06
    倒计时 Android
  • 如何实现在线答题中的倒计时功能
    随着互联网的快速发展和智能设备的普及,越来越多的教育活动也开始向线上迁移,其中包括在线答题。在线答题作为一种新型的教育形式,可以提供更加便捷和灵活的学习方式,受到了越来越多的使用者的青睐。其中一个重要的功能就是倒计时,在规定的时间内完成答题...
    99+
    2023-10-21
    实现 倒计时 在线答题
  • 怎么在Android中实现列表倒计时
    怎么在Android中实现列表倒计时?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。CountDownTimer类用法  private Count...
    99+
    2023-05-30
    android
  • Android中CountDownTimer倒计时器用法实例
    本文实例讲述了Android中CountDownTimer倒计时器用法。分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Andro...
    99+
    2022-06-06
    计时器 Android
  • 如何实现VBS倒计时
    这篇文章给大家分享的是有关如何实现VBS倒计时的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。以下内容为程序代码: <script language="VBScript">...
    99+
    2023-06-08
  • php如何实现倒计时
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php如何实现倒计时?php实时倒计时功能实现方法详解具体如下:这几天公司要做一个限时购物的功能.这就要做到倒计时,要有实时的倒计时.要求:1) 要有小时分钟秒的实时倒计...
    99+
    2015-09-03
    php 倒计时
  • js如何实现倒计时
    这篇文章将为大家详细讲解有关js如何实现倒计时,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先呢,开始写之前一定要理清楚思路,思路清晰了,那写起来就容易多了,下面我分了...
    99+
    2022-10-19
  • jQuery如何实现倒计时
    这篇文章将为大家详细讲解有关jQuery如何实现倒计时,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码如下所示:<!DOCTYPE html>...
    99+
    2022-10-19
  • javascript如何实现倒计时
    这篇“javascript如何实现倒计时”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“javascript如何实现倒计时”文...
    99+
    2023-07-02
  • Android实现计时与倒计时的常用方法小结
    本文实例总结了Android实现计时与倒计时的常用方法。分享给大家供大家参考,具体如下: 方法一 Timer与TimerTask(Java实现) public class t...
    99+
    2022-06-06
    倒计时 小结 方法 Android
  • Android 使用flow实现倒计时的方式
    Android 倒计时一般实现方式: handler+postDelayed() 方式Timer + TimerTask + handler 方式ScheduledExecutorS...
    99+
    2022-11-13
  • 利用Android实现一个倒计时功能
    这篇文章给大家介绍利用Android实现一个倒计时功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先上效果图activity_main.xml<&#63;xml version="1.0&qu...
    99+
    2023-05-31
    android roi
  • Android中Handler实现倒计时的两种方式
    背景:最近项目中,正好做到登录/注册这个功能块。它需要通过发送验证码,在规定的时间内用验证码来完成登录/注册。之前的项目中也有这个功能,但是觉得太复杂了,只好自己重新实现一遍。用Handler来做,觉得代码简介,逻辑也清楚。代码一://在向...
    99+
    2023-05-31
    handler 倒计时 roi
  • Android中怎么实现一个倒计时效果
    今天就跟大家聊聊有关Android中怎么实现一个倒计时效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。需求:a.在后台添加时,如果是今日直播,则需要添加开始时间(精确到秒);b.离...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作