当前位置:首页 > 代码 > 正文

android计时器代码(安卓计时器简洁版)

admin 发布:2022-12-19 13:31 116


今天给各位分享android计时器代码的知识,其中也会对安卓计时器简洁版进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

android studio怎么编写计时器

类似iOS中的NSTimer 定时器功能,开关控制随机几秒钟执行指定功能;

平台:Android

开发环境:android Studio

代码实现:

一. 创建Handler对象和Runnable对象

[java] view plain copy print?

Handler handler = new Handler();

Runnable runnable = new Runnable() {

@Override

public void run() {

if (mPageOpen){

if (interstitialAd.isLoaded()){ //示例-谷歌插页广告

interstitialAd.show();

}else {

AdRequest adRequest = new AdRequest.Builder().build();

interstitialAd.loadAd(adRequest);

}

int random = (int)(Math.random() * 10 +20)*1000; //随机时间循环执行

handler.postDelayed(this, random);

}

}

};

二. 开关控制

[java] view plain copy print?

Switch mSwith = (Switch) findViewById(R.id.switchPage);

mSwith.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked) {

mPageOpen = true;

} else {

mPageOpen = false;

}

handler.postDelayed(runnable, 15000); //开关控制执行

}

});

三. 移除定时器

[java] view plain copy print?

handler.removeCallbacks(runnable);

android中使用chronometer怎样创建倒计时器问题

在Android中,可以使用计时器来实现对时间的监测,这个类所实现的功能有开始计时,停止计时,重新计时,设置计时模式,下面列出计时器方法的原型:

long getBase();//返回基地的时间,由setBase(long)设置的

String getFormat();//返回当前字符串格式,此格式是通过setFormat()实现的

void setBase(long base);//设置时间,计数定时器指定的值

void setFormat(String format);//设置显示的内容,计时器将会显示这个参数所对应的值得,如果字符串的值

//为null,那么返回的值为MM:SS格式的

下面就来介绍一个实例:

package com.example.android.apis.view;

// Need the following import to get access to the app resources, since this

// class is in a sub-package.

import com.example.android.apis.R;

import android.app.Activity;

import android.os.Bundle;

import android.os.SystemClock;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Chronometer;

public class ChronometerDemo extends Activity {

Chronometer mChronometer;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.chronometer);

Button button;

mChronometer = (Chronometer) findViewById(R.id.chronometer);

// Watch for button clicks.

button = (Button) findViewById(R.id.start);

button.setOnClickListener(mStartListener);//对应的是开始计时

button = (Button) findViewById(R.id.stop);

button.setOnClickListener(mStopListener); //对应的是停止计时

button = (Button) findViewById(R.id.reset);

button.setOnClickListener(mResetListener);//对应的是重新置数

button = (Button) findViewById(R.id.set_format);

button.setOnClickListener(mSetFormatListener);//对应的是设置时间的显示格式

button = (Button) findViewById(R.id.clear_format);

button.setOnClickListener(mClearFormatListener);//对应的是使用非格式的计时显示功能

}

View.OnClickListener mStartListener = new OnClickListener() {

public void onClick(View v) {

mChronometer.start();

}

};

View.OnClickListener mStopListener = new OnClickListener() {

public void onClick(View v) {

mChronometer.stop();

}

};

View.OnClickListener mResetListener = new OnClickListener() {

public void onClick(View v) {

mChronometer.setBase(SystemClock.elapsedRealtime());

}

};

View.OnClickListener mSetFormatListener = new OnClickListener() {

public void onClick(View v) {

mChronometer.setFormat("Formatted time (%s)");

}

};

View.OnClickListener mClearFormatListener = new OnClickListener() {

public void onClick(View v) {

mChronometer.setFormat(null);

}

};

}

Android开发——定时器处理

  开发中经常遇到用计时器的时候,例如:每秒输出一次log,这时候就要用到延时操作,这里总结了几种常用的方法。

   AlarmManager 是Android的全局定时器,可以在指定时间执行定时任务。定时任务通过PendingIntent 的 getActivity()、getService()或 getBroadcast() 来执行。简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent出来,在接收到设定的Intent时执行定时任务。

(2) setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

该方法用于设置重复闹钟,其中参数说明如下:

type:闹钟类型

startTime:首次执行闹钟的时间

intervalTime:两次执行闹钟的时间间隔

pi:闹钟响应动作

(3) setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

该方法也用于设置重复闹钟,与第二个方法相似,区别在于其两次闹钟执行的间隔时间不是固定的。

   AlarmManager实现定时的方法,我还没有用到过,以上内容是在网上查找资料后自己在一个小demo中小小试验了的,有错误或描述不清的地方请见谅。下面是我参考的介绍AlarmManager的三篇文章。

android中怎么使timecount自动开始计时

android计时器,时间计算器的实现方法,需要的朋友可以参考一下

需求:默认为"00:00:00",点击开始按钮时清零后开始计时,出现如10:28:34。点击停止的时候停止计时。

问题:使用Calendar

DateFormat的方法,不设置时区获取到的小时是本地时区的(东八区的就是8),设置成GMT标准时区获取到的时间是12小时(12:00:00),设置24小时制无效。

在开始时间加减各种小时都无效,而且计时只能到12小时就自动跳上去了,始终无法出现默认状态00:00:00开始计时的效果。

尝试各种时间设置方法无效后只能自己写一个根据秒数转换时间格式字符串的方法了,经过测试是没问题的,两位数只能显示99小时为最大,如需要更大小时数需要改改方法。

另外小时数也不能无限大,超过long数据类型长度会变成负数的,会出现异常的。

显示效果:

测试类:

复制代码

代码如下:

public class TestTime {

public

static void main(String[] args) {

TestTime tt = new

TestTime();

tt.showTimeCount(99*3600000+75*1000);

}

//时间计数器,最多只能到99小时,如需要更大小时数需要改改方法

public String

showTimeCount(long time) {

System.out.println("time="+time);

if(time =

360000000){

return "00:00:00";

}

String

timeCount = "";

long hourc = time/3600000;

String hour =

"0" + hourc;

System.out.println("hour="+hour);

hour =

hour.substring(hour.length()-2, hour.length());

System.out.println("hour2="+hour);

long minuec =

(time-hourc*3600000)/(60000);

String minue = "0" +

minuec;

System.out.println("minue="+minue);

minue =

minue.substring(minue.length()-2, minue.length());

System.out.println("minue2="+minue);

long secc =

(time-hourc*3600000-minuec*60000)/1000;

String sec = "0" +

secc;

System.out.println("sec="+sec);

sec =

sec.substring(sec.length()-2, sec.length());

System.out.println("sec2="+sec);

timeCount = hour + ":" + minue +

":" + sec;

System.out.println("timeCount="+timeCount);

return timeCount;

}

}

实际例子:

复制代码

代码如下:

//时间计数器,最多只能到99小时,如需要更大小时数需要改改方法

public String showTimeCount(long time) {

if(time =

360000000){

return "00:00:00";

}

String

timeCount = "";

long hourc = time/3600000;

String hour =

"0" + hourc;

hour = hour.substring(hour.length()-2,

hour.length());

long minuec =

(time-hourc*3600000)/(60000);

String minue = "0" +

minuec;

minue = minue.substring(minue.length()-2,

minue.length());

long secc =

(time-hourc*3600000-minuec*60000)/1000;

String sec = "0" +

secc;

sec = sec.substring(sec.length()-2, sec.length());

timeCount = hour + ":" + minue + ":" + sec;

return

timeCount;

}

private Handler stepTimeHandler;

private Runnable mTicker;

long startTime = 0;

//开始按钮

class startBtnListener implements OnClickListener {

@Override

public void onClick(View v) {

Button b =

(Button)v;

String buttonText =

b.getText().toString();

if("Start".equalsIgnoreCase(buttonText)){

b.setText("Stop");

// 清零 开始计时

stepTimeTV.setText("00:00:00");

stepTimeHandler = new

Handler();

startTime =

System.currentTimeMillis();

mTicker = new Runnable()

{

public void run() {

String

content = showTimeCount(System.currentTimeMillis() -

startTime);

stepTimeTV.setText(content);

long now =

SystemClock.uptimeMillis();

long next = now + (1000

- now % 1000);

stepTimeHandler.postAtTime(mTicker,

next);

}

};

//启动计时线程,定时更新

mTicker.run();

}else{

b.setText("Start");

//停止计时 Remove

any pending posts of Runnable r that are in the message

queue.

stepTimeHandler.removeCallbacks(mTicker);

}

}

}

用时间格式化的方式测试代码:

复制代码

代码如下:

//开始按钮 通过Calendar时间设置的方式,无法正常显示小时为0

class startBtnListener implements OnClickListener {

@Override

public void onClick(View v) {

Button b =

(Button)v;

String buttonText =

b.getText().toString();

if("Start".equalsIgnoreCase(buttonText)){

b.setText("Stop");

// 清零 开始计时

stepTimeTV.setText("00:00:00");

if (mCalendar == null)

{

mCalendar =

Calendar.getInstance();

TimeZone tz =

TimeZone.getTimeZone("GMT");//GMT+8

mCalendar.setTimeZone(tz);

mCalendar.get(Calendar.HOUR_OF_DAY);//24小时制

}

stepTimeHandler = new Handler();

//System.uptimeMillis()

//记录从机器启动后到现在的毫秒数,当系统进入深度睡眠时,此计时器将会停止

//System.currentTimeMillis()

//返回自1970年1月1日到现在的毫秒数,通常用来设置日期和时间

//System.elapsedRealtime()

//返回从机器启动后到现在的毫秒数,包括系统深度睡眠的时间,api里没有这个方法

//直接取得的是当地时区时间,当地时间跟时区有关,设置GMT后始终多12小时

startTime =

System.currentTimeMillis();//12*3600000 - 36*3600000减掉或者加上12小时都不行

mTicker = new Runnable() {

public

void run() {

//这个减出来的日期是1970年的 时间格式不能出现00:00:00

12:00:00

long showTime = System.currentTimeMillis()

- startTime;

Log.i(TAG,showTime+"");

mCalendar.setTimeInMillis(showTime + 13*3600000 +

1000);

String content = (String)

DateFormat.format(mFormat, mCalendar);

stepTimeTV.setText(content);

long now =

SystemClock.uptimeMillis();

long next = now + (1000

- now % 1000);

stepTimeHandler.postAtTime(mTicker,

next);

}

};

//启动计时线程,定时更新

mTicker.run();

}else{

b.setText("Start");

//停止计时 Remove

any pending posts of Runnable r that are in the message

queue.

stepTimeHandler.removeCallbacks(mTicker);

}

}

}

private Handler stepTimeHandler;

Calendar

mCalendar;

String mFormat = "yyyy-MM-dd hh:mm:ss";//yyyy-MM-dd

long startTime = 0;

private Runnable mTicker;

关于android计时器代码和安卓计时器简洁版的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/8846.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载