作者:程序员小冰,GitHub主页:https://github.com/QQ986945193

新浪微博:http://weibo.com/mcxiaobing

首先给大家看一下我们今天这个最终实现的效果图:

界面效果有点丑,不过功能齐全。大家如果需要,可以集成到自己的项目中。

首先说明,其实这个很简单的,利用了一个定时器而已。不过我这里进行了

输入的时间进行判断,比如不是Int类型均不可以进行倒计时。还有防止

多次点击开始计时,最后就是进行了回收对象。好了给大家看一下代码吧。

xml布局比较简单,几个button与textview,edittext实现的。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <EditText
android:id="@+id/et_timer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入计时时间" /> <Button
android:id="@+id/btn_get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="获取计时时间" /> <TextView
android:id="@+id/tv_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="计时时间" /> <Button
android:id="@+id/btn_go"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始计时" /> <Button
android:id="@+id/btn_stop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="停止计时" /> </LinearLayout>

下面是java类中的代码:

package davidtimerdown.qq986945193.com.davidtimerdown;

import java.util.Timer;
import java.util.TimerTask; import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; /**
* @author :程序员小冰
* @新浪微博 :http://weibo.com/mcxiaobing
* @GitHub: https://github.com/QQ986945193
* @CSDN博客: http://blog.csdn.net/qq_21376985
* @码云OsChina :http://git.oschina.net/MCXIAOBING
*/
public class MainActivity extends Activity implements OnClickListener {
protected static final int MSG_WHAT = 0;
//开始倒计时
private Button btn_go;
//获取到输入的时间
private Button btn_get;
//停止倒计时
private Button btn_stop;
//输入的时间
private static EditText et_time;
//时间
private static TextView tv_time; private Timer timer;
private static int time; private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
tv_time.setText(time + "");
switch (msg.what) {
case MSG_WHAT:
if (time > 0) {
time--;
} else {
Toast.makeText(MainActivity.this, "倒计时完成", Toast.LENGTH_SHORT).show();
if (timer != null) { timer.cancel();
timer = null;
}
}
break; default:
break;
}
} ;
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_go = (Button) findViewById(R.id.btn_go);
btn_get = (Button) findViewById(R.id.btn_get);
btn_stop = (Button) findViewById(R.id.btn_stop);
et_time = (EditText) findViewById(R.id.et_timer);
tv_time = (TextView) findViewById(R.id.tv_time);
btn_go.setOnClickListener(this);
btn_get.setOnClickListener(this);
btn_stop.setOnClickListener(this); } @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
//获得倒计时间
case R.id.btn_get:
if (et_time.getText().toString().trim() != null && !(et_time.getText().toString().trim().equals(""))) {
try {
time = Integer.parseInt(et_time.getText().toString());
tv_time.setText(et_time.getText().toString());
} catch (NumberFormatException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "时间格式不正确", Toast.LENGTH_SHORT).show();
return;
}
}
break;
//开始倒计时
case R.id.btn_go:
if (timer == null) {
timer = new Timer();
timer.schedule(new TimerTask() { @Override
public void run() {
// TODO Auto-generated method stub
mHandler.sendEmptyMessage(MSG_WHAT); }
}, 0, 1000);
} else {
Toast.makeText(MainActivity.this, "请勿多次点击", Toast.LENGTH_SHORT).show();
return;
} break;
//停止倒计时
case R.id.btn_stop:
if (timer != null) { timer.cancel();
timer = null;
}
break; default:
break;
}
} }

好了,教程到此结束。如果此文章帮到了你,欢迎点赞。

源代码需要的可自行下载:

(AndroidStudio版)github下载地址:

https://github.com/QQ986945193/DavidTimerDown

(AndroidStudio版)Git开源中国下载地址:

http://git.oschina.net/MCXIAOBING/DavidTimerDown

【Android】Android开发小功能,倒计时的实现。时间计时器倒计时功能。的更多相关文章

  1. Android应用开发-小巫CSDN博客client之嵌入有米广告

    Android应用开发-小巫CSDN博客client之嵌入有米广告 上一篇博客给大家介绍怎样集成友盟社会化组件,本篇继续带来干货,教大家怎样嵌入广告到应用中去.小巫自称专业对接30年,熟悉各大渠道SD ...

  2. Android应用开发-小巫CSDN博客client之获取评论列表

    Android应用开发-小巫CSDN博客客户端之获取评论列表 上一篇博客介绍了博文具体内容的业务逻辑实现,本篇博客介绍小巫CSDN博客客户端的最后一项功能.获取评论列表,这个功能的实现跟前面获取文章列 ...

  3. Android应用开发-小巫CSDN博客clientJsoup篇

    Android应用开发-小巫CSDN博客clientJsoup篇 距上一篇博客已经过去了两个星期,小巫也认为很抱歉,由于在忙着做另外一个项目,差点儿抽不出空来,这不小巫会把剩下的博文全部在国庆补上.本 ...

  4. Android应用开发-小巫CSDN博客client之显示博文具体内容

    Android应用开发-小巫CSDN博客客户端之显示博文具体内容 上篇博文给大家介绍的是怎样嵌入有米广告而且获取收益,本篇博客打算讲讲关于怎样在一个ListView里显示博文的具体信息.这个可能是童鞋 ...

  5. Android应用开发-小巫CSDN博客客户端开发开篇

    2014年9月8日 八月十五 祝各位中秋节快乐 小巫断断续续花了几个星期的时间开发了这么一款应用——小巫CSDN博客,属于私人定制的这样的一款应用,整个客户端的数据全部来自本人博客,是通过爬取本人博客 ...

  6. Android开发学习之路-Android Studio开发小技巧

    上一次发过了一个介绍Studio的,这里再发一个补充下. 我们都知道,Android Studio的功能是非常强大的,也是很智能的.如果有人告诉你学Android开发要用命令行,你可以告诉他Andro ...

  7. android浏览器开发小技巧集锦(转)

    本人和朋友们做了一段时间浏览器,将一些小技巧分享出来,先写一部分,慢慢写,同时也为我们的浏览器打打广告 我们的浏览器将要上线,名叫沙发浏览 1.网页内的右键菜单 public boolean onLo ...

  8. android应用开发小技巧

    1,实现应用可以安装到SD卡里面去:在AndroidManifest.xml文件的manifest里面添加下面一行: 1 android:installLocation="preferExt ...

  9. android studio开发小笔记1

    1.点击空白处隐藏软键盘 /* 隐藏软键盘 * */ public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == ...

随机推荐

  1. 可笑,你竟然不知道 Java 如何生成 UUID

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  2. 在新的线程中使用session 出现的问题

    Exception in thread "Thread-15" java.lang.IllegalStateException: No thread-bound request f ...

  3. 15、Java中级进阶 面向对象 继承

    1.何为面向对象 其本质是以建立模型体现出来的抽象思维过程和面向对象的方法(百度百科)是一种编程思维,也是一种思考问题的方式 如何建立面向对象的思维呢?1.先整体,再局部2.先抽象,再具体3.能做什么 ...

  4. arcgis api for js 之网络分析服务发布

    1.引言 百度地图上有这样的功能:点击两个点,地图上会显示对两个点的路径规划.这个功能能否利用 arcgis api 实现呢?答案是肯定的.不过在实现之前,我们需要将数据发布为网络分析服务,接下来我将 ...

  5. Python实现迪杰斯特拉算法

    首先我采用邻接矩阵法来表示图(有向图无向图皆可) 图的定义如下: class Graph: def __init__(self, arcs=[]): self.vexs = [] self.arcs ...

  6. 2020-06-18:ZK的分布式锁怎么实现?

    福哥答案2020-06-18: Zk分布式锁有两种实现方式一种比较简单,应对并发量不是很大的情况.获得锁:创建一个临时节点,比如/lock,如果成功获得锁,如果失败没获得锁,返回false释放锁:删除 ...

  7. vue 公众号H5 使用微信JSAPI 录音 完整齐全

    官方文档必须首当其冲 1.微信jsAPI 录音文档 2.获取微信临时素材文档 首先H5录音功能的话 对于普通H5网上是有很多的方法 插件  但是兼容性很差 特别是对于ios 一开始想的是用H5 做个通 ...

  8. golang 字符型

    目录 前言 1. 基本 介绍 2. 声明 3. 使用细节 4. 字符类型的本质 跳转 前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的相关知识,也会增加到 ...

  9. HTML5+css3 的开心网游戏页面

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. [netty4][netty-common]netty之ResourceLeakDetector的使用与实现

    netty之ResourceLeakDetector的使用与实现 通过WeakReference和ReferenceQueue做针对需要手动释放的资源的侦测 使用 设置日志级别: ServerBoot ...