android平台的计时功能,Android实现简单计时器功能
本文实例为大家分享了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实现简单计时器功能相关推荐
- Android平台开发指导(Android Porting Guide)
本文为Android平台开发人员和Android设备制造商提供了底层开发指导.如果你对Android的上层应用开发很感兴趣,请访问Android Developers Site. 关于这份指导书 这份 ...
- android平台 arcgisr_ArcGIS Runtime For Android 开发 (7)
第七课 图层管理 在前边的课程中,我们学习了如何加载图层,符号化图层,那么如果一个项目里边包含了很多的图层,但又需要进行查看特定的图层,怎么办?是的,我们需要对加载的图层进行管理. 那么如何来实现图层 ...
- android平台应用技术特点,Android平台应用安全关键技术研究
摘要: 最近几年来,随着智能手机的普及和移动互联网技术的发展,手机成了人们日常生活中不可缺少的一部分.在众多的智能手机操作系统里面,Android系统以其开源,自由,免费等特点占有着很大的市场占有率. ...
- php聊天功能_php实现简单聊天功能
搜索热词 1.创建聊天消息表,其表的字段有消息内容,发送时间和发送者的名称: CREATE TABLE `guanhui`.`message` ( `id` INT(10) NOT NULL AUTO ...
- html页面中加入评论功能,JavaScript实现简单评论功能
本文实例为大家分享了JavaScript实现简单评论功能的具体代码,供大家参考,具体内容如下 body{ /*background-image: url(../img/91R58PIC3n2_1024 ...
- Html秒表计时代码,js实现秒表计时器功能代码示例
本文实例为大家分享了带有开始.暂停.清除功能的js计时器,供大家参考,具体内容如下 计时器 var hour,minute,second;//时 分 秒 hour=minute=second=0;// ...
- 爬虫软件python功能_python实现简单爬虫功能的示例
python开源工具列表[持续更新] 以下是个人在工作中整理的一些python wheel,供参考.这个列表包含与网页抓取和数据处理的Python库 网络 通用urllib -网络库(stdlib). ...
- Windows下Android平台搭建_1
Windows下Android平台搭建_1 一. Android平台综述 Windows下Android平台搭建需要的软件和工具 1. JDK JDK(Java Develop ...
- 基于android平台的语音机器人服务娱乐系统
分 类 号:TP311 学校代码:11460 学 号:10130920 本科生毕业论文 基于android平台的语音机器人服务娱乐系统 Robot Entertainment Service Syst ...
最新文章
- 172. 阶乘后的零
- 浙大超重力离心模拟与实验装置有望年底开建 释放五大利好
- ElasticSearch6 查询模板的创建使用
- (十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】
- 加快网站访问速度--jquery.js
- chromebook刷_使用Chromebook编码
- 购物网站php模版,运动服装购物网站模板
- VMware Workstation不可恢复错误: (vcpu-0)
- [Luogu] P4626 一道水题 II
- html JS实现下拉菜单,vue.js怎么实现下拉框
- C# 中文简体中文繁体转换_ChineseConverter
- 如何获取到电脑所连接Wifi的密码
- android rn热更新闪退,react-native 导致热更新失败的问题之一
- 小程序任务栏「最近使用」变两行,张小龙说得对,这里确实不是「入口」
- 这样给宝宝起小名,好听不俗气
- DynaSLAM源码笔记-检测动态物体部分梳理
- C#判断某一年是 “平年”||“闰年”,一月有多少天。
- 如何将电脑上的音乐传到苹果手机上?电脑音乐导入苹果手机
- 房企买房送车位的涉税风险
- Matlab 2018a与SolidWorks联合仿真——如何将SolidWorks模型以xml格式导出至Matlab中
热门文章
- HDUOJ---------2255奔小康赚大钱
- 一个软件测试员的工作与学习(二)
- HDU 1576 A/B(数论简单题,求逆元)
- 计算机基础17秋在线作业3,南开17秋学期《计算机应用基础》在线作业3
- linux mutt 使用指南,linux mutt详解
- android小球移动代码,Android中如何绘制一个跟随手指移动的小球
- python import from区别_python中import与from方法总结(推荐)
- liunx 加入域控_[整理篇]linux加入windows域之完美方案
- 亲密关系-【认知情绪】-每一次生气的背后有什么
- 浅谈:python自动化测试中使用异步