本文实例为大家分享了Android实现简单计时器的具体代码,供大家参考,具体内容如下

布局

在res/layout 下进行布局

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent" tools:layout_editor_absoluteY="0dp"

tools:layout_editor_absoluteX="0dp">

android:text="00:00:00"

android:textSize="60sp"

android:gravity="center"

android:layout_width="match_parent"

android:layout_height="wrap_content" android:id="@+id/timeView"/>

android:text="start"

android:onClick="onClickStart"

android:layout_width="match_parent"

android:layout_height="wrap_content" android:id="@+id/start"/>

android:text="stop"

android:onClick="onClickStop"

android:layout_width="match_parent"

android:layout_height="wrap_content" android:id="@+id/stop"/>

android:text="reset"

android:onClick="onClickReset"

android:layout_width="match_parent"

android:layout_height="wrap_content" android:id="@+id/reset"/>

MainActivity

package com.test;

import android.os.Handler;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private int seconds = 0;

private boolean running = false; //计时状态

private boolean wasRunning = false; //保存running的状态

//app进入后台,暂停计时

@Override

protected void onStop() {

super.onStop();

wasRunning = running;

running = false;

}

//重新进入app,开始计时

@Override

protected void onStart() {

super.onStart();

if(wasRunning) running = true;

}

//失去焦点(如分屏),暂停计时

@Override

protected void onPause() {

super.onPause();

wasRunning = running;

running = false;

}

//获得焦点,重新开始计时

@Override

protected void onResume() {

super.onResume();

if(wasRunning) running = true;

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//获取保存的状态

if(savedInstanceState!=null){

seconds = savedInstanceState.getInt("seconds");

running = savedInstanceState.getBoolean("running");

wasRunning = savedInstanceState.getBoolean("wasRunning");

}

runTime();

}

/**

*保存状态

*/

@Override

public void onSaveInstanceState(Bundle saveInstanceState) {

super.onSaveInstanceState(saveInstanceState);

saveInstanceState.putInt("seconds",seconds);

saveInstanceState.putBoolean("running",running);

saveInstanceState.putBoolean("wasRunning",wasRunning);

}

/**

* 响应button的onClick事件

* 方法名和onClick的值一致

*/

public void onClickStart(View button){

running = true;

}

public void onClickStop(View button){

running = false;

}

public void onClickReset(View button){

running = false;

seconds = 0;

}

/**

* 注意 ui线程不能被堵塞,因此不能在ui线程中调用sleep方法

* 只允许ui线程更新界面,不能在后台线程更新界面

*

* ** 使用ui线程的Handler定时更新 **

* 将任务封装到 Runnable的run方法中 ,通过Handler的

* post(立即提交任务)或postDelayed(实现定时调度)方法提交到ui线程

*/

private void runTime(){

final Handler handler = new Handler();

handler.post(new Runnable() {

@Override

public void run() {

final TextView textView = findViewById(R.id.timeView);

int hour = seconds /3600%24;

int minute = seconds%3600/60;

String time = String.format("%02d:%02d:%02d",hour,minute,seconds%60);

textView.setText(time);

if(running) seconds++;

handler.postDelayed(this,1000);

}

}

);

}

}

测试

完成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android平台的计时功能,Android实现简单计时器功能相关推荐

  1. Android平台开发指导(Android Porting Guide)

    本文为Android平台开发人员和Android设备制造商提供了底层开发指导.如果你对Android的上层应用开发很感兴趣,请访问Android Developers Site. 关于这份指导书 这份 ...

  2. android平台 arcgisr_ArcGIS Runtime For Android 开发 (7)

    第七课 图层管理 在前边的课程中,我们学习了如何加载图层,符号化图层,那么如果一个项目里边包含了很多的图层,但又需要进行查看特定的图层,怎么办?是的,我们需要对加载的图层进行管理. 那么如何来实现图层 ...

  3. android平台应用技术特点,Android平台应用安全关键技术研究

    摘要: 最近几年来,随着智能手机的普及和移动互联网技术的发展,手机成了人们日常生活中不可缺少的一部分.在众多的智能手机操作系统里面,Android系统以其开源,自由,免费等特点占有着很大的市场占有率. ...

  4. php聊天功能_php实现简单聊天功能

    搜索热词 1.创建聊天消息表,其表的字段有消息内容,发送时间和发送者的名称: CREATE TABLE `guanhui`.`message` ( `id` INT(10) NOT NULL AUTO ...

  5. html页面中加入评论功能,JavaScript实现简单评论功能

    本文实例为大家分享了JavaScript实现简单评论功能的具体代码,供大家参考,具体内容如下 body{ /*background-image: url(../img/91R58PIC3n2_1024 ...

  6. Html秒表计时代码,js实现秒表计时器功能代码示例

    本文实例为大家分享了带有开始.暂停.清除功能的js计时器,供大家参考,具体内容如下 计时器 var hour,minute,second;//时 分 秒 hour=minute=second=0;// ...

  7. 爬虫软件python功能_python实现简单爬虫功能的示例

    python开源工具列表[持续更新] 以下是个人在工作中整理的一些python wheel,供参考.这个列表包含与网页抓取和数据处理的Python库 网络 通用urllib -网络库(stdlib). ...

  8. Windows下Android平台搭建_1

    Windows下Android平台搭建_1 一.  Android平台综述 Windows下Android平台搭建需要的软件和工具 1.     JDK        JDK(Java Develop ...

  9. 基于android平台的语音机器人服务娱乐系统

    分 类 号:TP311 学校代码:11460 学 号:10130920 本科生毕业论文 基于android平台的语音机器人服务娱乐系统 Robot Entertainment Service Syst ...

最新文章

  1. 172. 阶乘后的零
  2. 浙大超重力离心模拟与实验装置有望年底开建 释放五大利好
  3. ElasticSearch6 查询模板的创建使用
  4. (十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】
  5. 加快网站访问速度--jquery.js
  6. chromebook刷_使用Chromebook编码
  7. 购物网站php模版,运动服装购物网站模板
  8. VMware Workstation不可恢复错误: (vcpu-0)
  9. [Luogu] P4626 一道水题 II
  10. html JS实现下拉菜单,vue.js怎么实现下拉框
  11. C# 中文简体中文繁体转换_ChineseConverter
  12. 如何获取到电脑所连接Wifi的密码
  13. android rn热更新闪退,react-native 导致热更新失败的问题之一
  14. 小程序任务栏「最近使用」变两行,张小龙说得对,这里确实不是「入口」
  15. 这样给宝宝起小名,好听不俗气
  16. DynaSLAM源码笔记-检测动态物体部分梳理
  17. C#判断某一年是 “平年”||“闰年”,一月有多少天。
  18. 如何将电脑上的音乐传到苹果手机上?电脑音乐导入苹果手机
  19. 房企买房送车位的涉税风险
  20. Matlab 2018a与SolidWorks联合仿真——如何将SolidWorks模型以xml格式导出至Matlab中

热门文章

  1. HDUOJ---------2255奔小康赚大钱
  2. 一个软件测试员的工作与学习(二)
  3. HDU 1576 A/B(数论简单题,求逆元)
  4. 计算机基础17秋在线作业3,南开17秋学期《计算机应用基础》在线作业3
  5. linux mutt 使用指南,linux mutt详解
  6. android小球移动代码,Android中如何绘制一个跟随手指移动的小球
  7. python import from区别_python中import与from方法总结(推荐)
  8. liunx 加入域控_[整理篇]linux加入windows域之完美方案
  9. 亲密关系-【认知情绪】-每一次生气的背后有什么
  10. 浅谈:python自动化测试中使用异步