作者:程序员小冰,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. 一文学会MySQL的explain工具

    开篇说明 (1) 本文将细致介绍MySQL的explain工具,是下一篇<一文读懂MySQL的索引机制及查询优化>的准备篇. (2) 本文主要基于MySQL5.7版本(https://de ...

  2. 【BZOJ4318】OSU! 题解(期望)

    题目链接 题目大意:给定$n$个操作的成功率$p[i]$.连续成功操作$m$次可以贡献$m^3$的分数.问期望分数. 对于$(x+1)^3$ $=x^3+3x^2+3x+1$ 每多连续成功一次,对答案 ...

  3. "点"醒自己

    回顾: 过去的经历 从18年开始在某机构进行了测试培训,9月正式加入测试小白大军,中间也经历了半年的空窗期,入职2个月应能力不够被公司辞退,后通过培训班的朋友内推到一家软件外包公司,工作到现在. 思考 ...

  4. 消息队列和事件循环(Event Loop)

    产生原因 为什么会有消息队列和事件循环呢?首先最关键的一点在于JS是个单线程,并且主线程非常繁忙,既要处理 DOM,又要计算样式,还要处理布局,同时还需要处理 JavaScript 任务以及各种输入事 ...

  5. 家庭记账本APP开发准备(三)

    单选框(RadioButton) 通过设置单选框,可以将非此即彼的问题进行解决,成功学会并应用了手机端单项选择框; 复选框(CheckBox) 学习复选框是为了给使用软件的人更多的选择,在其他选择框后 ...

  6. Android常用布局和控件

    一.Android常用布局属性 1. LinearLayout的特有属性 android:orientation:设置布局排列方式   android:layout_weight:设置所占布局的权重  ...

  7. C#设计模式之1-工厂方法模式

    工厂方法模式(Factory Method Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/389 访问 ...

  8. JVM中对象模型及相应名词概念

    JVM中对象模型及相应名词概念 java对象在jvm中的模型是OOP-Klass 模型: klass klass对应元数据,包括常量池.字段.方法等.是在加载class阶段创建instanceKlas ...

  9. POJ2806 Square

    题目描述 给定\(2*1\)和\(2 * 2\)两种规格的地砖,请问\(2 * n\)的地面总共有多少种方法? 下面是铺满\(2*17\)的地面的示意图. 输入输出格式 输入 多组数据,每组数据包括1 ...

  10. asp.net core mvc和angular项目的一些问题

    最近公司布置任务,用asp.net core mvc和angular改写原来的一个用Silverlight做的项目.从来没搞过,找了两本书看了一天,又看了一天代码,大致心里有底了,就开始动手.没想到一 ...