countdown timer plus_android studio计时器

countdown timer plus_android studio计时器Inthisandroidcountdowntimerexample,we’llimplementatimerobjecttodisplaytheprogressinaProgressBar.Theapplicationwe’llbuildinthistutorialisausefulcomponentinQuizappswhere…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

In this android countdown timer example, we’ll implement a timer object to display the progress in a ProgressBar. The application we’ll build in this tutorial is a useful component in Quiz apps where the time left to complete the level is displayed graphically to enhance the user experience.

在此android countdown计时器示例中,我们将实现一个timer对象以在ProgressBar中显示进度 。 我们将在本教程中构建的应用程序是测验应用程序中的有用组件,其中,完成关卡所需的时间以图形方式显示,以增强用户体验。

Android CountDownTimer (Android CountDownTimer)

Android CountDownTimer class is used to schedule a countdown until a time in the future defined by the user, with regular notifications on intervals along the way. This class is an abstract class whose methods need to be overridden to implement it in our project. The following line needs to be added in our activity to import the class :

Android CountDownTimer类用于安排倒计时,直到用户定义未来的某个时间为止,并定期通知间隔时间。 此类是一个抽象类,其方法必须重写才能在我们的项目中实现。 在我们的活动中需要添加以下行以导入该类:

import android.os.CountDownTimer;

import android.os.CountDownTimer;

The relevant methods of the CountDownTimer Class are given below.

CountDownTimer类的相关方法如下。

  1. synchronized final void cancel() : This is used to cancel the countdown

    synchronized final void cancel() :用于取消倒计时

  2. abstract void onFinish() : This callback method is fired when the timer finishes

    abstract void onFinish() :计时器结束时会触发此回调方法

  3. abstract void onTick(long millisUntilFinished) : This callback method is fired on regular intervals

    abstract void onTick(long millisUntilFinished) :定期触发此回调方法

  4. synchronized final CountDownTimer start() : This method is used to start the countdown

    synchronized final CountDownTimer start() :此方法用于启动倒计时

The signature of the public constructor of the CountDownTimer class is given below.

CountDownTimer类的公共构造函数的签名如下所示。

CountDownTimer(long millisInFuture, long countDownInterval)

CountDownTimer(long millisInFuture, long countDownInterval)

The parameters of the constructors are defined as follows :

构造函数的参数定义如下:

  • millisInFuture : The number of milli seconds in the future from the call to start() until the countdown is done and onFinish() is called

    millisInFuture :从调用start()到倒计时完成并调用onFinish()以后的毫秒数。

  • countDownInterval : The interval along the way to receive onTick(long) callbacks

    countDownInterval :接收onTick(long)回调的时间间隔

In this project we’ll update the time values in a ProgressBar as the onTick() method is invoked repeatedly.

在此项目中,由于onTick()方法被重复调用,我们将更新ProgressBar中的时间值。

Android倒数计时器示例项目结构 (Android Countdown Timer Example Project Structure)

Android倒数计时器代码 (Android Countdown Timer Code)

The activity_main.xml consists of two buttons i.e. the start and stop timer buttons and a ProgressBar to display the time.

activity_main.xml由两个按钮组成,即开始和停止计时器按钮以及用于显示时间的ProgressBar。

activity_main.xml

activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="false"
        android:max="10"
        android:minHeight="50dp"
        android:minWidth="200dp"
        android:progress="0"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Timer"
        android:id="@+id/button"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="61dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Stop Timer"
        android:id="@+id/button2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="46dp"
        android:layout_below="@+id/progressBar" />

</RelativeLayout>

The MainActivity.java is given below :

MainActivity.java如下所示:

package com.journaldev.countdowntimer;

import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    ProgressBar progressBar;
    Button start_timer,stop_timer;
    MyCountDownTimer myCountDownTimer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progressBar=(ProgressBar)findViewById(R.id.progressBar);
        start_timer=(Button)findViewById(R.id.button);
        stop_timer=(Button)findViewById(R.id.button2);

        start_timer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                myCountDownTimer = new MyCountDownTimer(10000, 1000);
                myCountDownTimer.start();

            }
        });

        stop_timer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                myCountDownTimer.cancel();

            }
        });

    }

    public class MyCountDownTimer extends CountDownTimer {

        public MyCountDownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {

            int progress = (int) (millisUntilFinished/1000);

            progressBar.setProgress(progressBar.getMax()-progress);
        }

        @Override
        public void onFinish() {
            finish();
        }
    }
}

In the above code we’ve defined an Anonymous Inner Class called MyCountDownTimer. In this example we’ve set a Timer for 10 seconds that updates after every second. By default the timer displays/updates the time in decreasing order ( as its named CountDown!), Hence to show the progress in increasing order we’ve subtracted the time from the max time.

在上面的代码中,我们定义了一个名为MyCountDownTimer匿名内部类 。 在此示例中,我们将计时器设置为10秒,该计时器每秒钟更新一次。 默认情况下,计时器以降序显示/更新时间(称为CountDown!),因此,为了以升序显示进度,我们从最大时间中减去了时间。

The timer once stopped restarts from the beginning. Below is our android countdown timer app in action.

一旦停止计时器将重新开始。 以下是我们运行中的android倒数计时器应用程序。

This brings an end to countdown timer android tutorial. You can download the final Android CountDownTimer Project from the below link.

这样就结束了倒数计时器Android教程。 您可以从下面的链接下载最终的Android CountDownTimer项目

Reference: Official Documentation

参考: 官方文档

翻译自: https://www.journaldev.com/9896/android-countdowntimer-example

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193419.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android N上一些新特性的介绍「建议收藏」

    Android N上一些新特性的介绍「建议收藏」byLi.zhu随着6月份google的AndroidNpreview4版本的发布,笔者也借着东风在N6P上体验了一把新系统,试玩之后认为有几点新的感受特记录之。1.分屏多任务进入后台多任务管理页面,然后按住其中一个卡片,然后向上拖动至顶部即可开启分屏多任务,支持上下分栏和左右分栏,允许拖动中间的分割线调整两个APP所占的比例。目前,AndroidN开发者

    2025年9月18日
    8
  • CAN总线学习笔记(3)- CAN协议错误帧

    CAN总线学习笔记(3)- CAN协议错误帧依照瑞萨公司的《CAN入门书》的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成笔记。好记性不如烂笔头,加油!1错误帧的帧结构在发送和接收报文时,总线上的节点如果检测出了错误,那么该节点就会发送错误帧,通知总线上的节点,自己出错了。错误帧由错误标志和错误界定符两个部分组成。主动错误标志:6个连续的显性位;被动错误标志:6个连续的隐性位;…

    2022年6月28日
    47
  • 极性电容和非极性电容并联(无极性电容种类)

    一个极性电容和一个无极电容并联在一起这是为了达到什么目的?作者:疯狂的蔬菜链接:https://www.zhihu.com/question/35624312/answer/63821377来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。电路原理图画成一个极性电容和非极性电容并联的形式,更加多地是为了在画板的过程中在PCB的丝印层添加相关的引

    2022年4月12日
    58
  • IAAS云平台搭建详细步骤(云平台openstack)

    先电云iaas(openstack)搭建(一)这里我们首先进行基本环境的配置和安装。由于整个iaas完整安装过程内容过多,我这里将分步进行为了方便操作和更直观的观察我这里包括后续步骤主要使用图片进行操作密码设置000000输入法设置为英文所需环境:virtualbox6.0centos-1511.isoxiandian-iaas.iso…

    2022年4月9日
    77
  • C语言之数组反转

    C语言之数组反转数组反转是数组常见操作。大概来写一写数组反转添加上自己的理解注释。#include<stdio.h>#defineN6intmain(){inta[N]={0,1,2,3,4,5};inti;intt;intj;//反转算法for(i=0;i<N/2;i++){t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;//遍历输出,每对换一对数值就打印一次数组

    2022年6月3日
    31
  • Mac安装ElasticSearch介绍

    Mac安装ElasticSearch介绍原文地址:https://segmentfault.com/a/1190000005792528今日项目需要一个小型的搜索的功能的支持,有很多开源的搜索引擎啦,当然Elasticsearch个人认为上手容易,安装也比较方便。ES安装前需要确认你笔记本上已经安装了java,如果没有安装了,可以oracle官网下载就行了,java弄完后,我们可以在命令后工具中输

    2022年6月21日
    122

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号