成都网站建设设计

将想法与焦点和您一起共享

android计时,android计时器控件

很火的倒计时软件是什么?

1、美图倒数日

创新互联主营卫辉网站建设的网络公司,主营网站建设方案,成都App制作,卫辉h5微信小程序定制开发搭建,卫辉网站营销推广欢迎卫辉等地区企业咨询

美图倒数日,一款十分方便的倒计时实用软件,在这里你可以将每个重要的日子都记录下来,添加记录后你也可以在桌面添加一个小工具,随时都能够在这里查看记录日期。

2、天天计时

天天计时(Multi Timer:Time Helper)是一款精确度十分高的计时服务软件,时间的记录管理可以让你养成更好的习惯,你可以使用这款软件记录每日的工作、节日、纪念日等等内容,感兴趣的朋友快来下载。

3、日期倒计时

日期倒计时是一款极简风的日期记录软件,支持进行多种内容、格式记录,同时提醒的铃声以及内容都是可以进行自由设置的,软件也提供了多种主题供用户进行挑选。

4、小时光

生活是需要一定仪式感的,比如跨年的那一刻、你生日的那一刻,都可以用这款小时光app来进行倒计时!操作起来没有任何的难度,意义十足,喜欢的小伙伴快来试一试!

5、网红生日倒计时

网红生日倒计时制作器要不要来了解一下呢!想要完成这个东西其实只要下载视+AR就可以进行制作了。

Android倒计时怎么实现

有三种实现方式:

第一种:通过Timer与TimerTask结合的方式进行实现

第二种:通过Handler与Message方式进行实现

第三种:通过CountdownTimer进行实现

示例

第一种:

timer.schedule(task, 1000, 1000); // timeTask ,一秒执行一次,

TimerTask task = new TimerTask() {

@Override

public void run() {

}

}

第二种:

handler.sendMessageDelayed(message, 1000); //1秒后发送消息

final Handler handler = new Handler(){

public void handleMessage(Message msg){ // handle message

switch (msg.what) {

case 1:

recLen--;

if(recLen 0){ //如果倒计时没到

Message message = handler.obtainMessage(1);

handler.sendMessageDelayed(message, 1000); // 1秒后发送消息

}

}

super.handleMessage(msg);

}

};

第三种:

new CountdownTimer(30000, 1000) { //30秒倒计时,没秒执行一次

public void onTick(long millisUntilFinished) { //每秒执行一次进该方法

mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);

}

public void onFinish() { //倒计时结束。

mTextField.setText("done!");

}

}.start();

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中怎么实现倒计时怎么按照小时分钟

Android实现计时与倒计时的五种方法:

方法一

Handler与Message(不用TimerTask)

public class timerTask extends Activity{

private int recLen = 11;

private TextView txtView;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);

txtView = (TextView)findViewById(R.id.txttime);

Message message = handler.obtainMessage(1); // Message

handler.sendMessageDelayed(message, 1000);

}

final Handler handler = new Handler(){

public void handleMessage(Message msg){ // handle message

switch (msg.what) {

case 1:

recLen--;

txtView.setText("" + recLen);

if(recLen 0){

Message message = handler.obtainMessage(1);

handler.sendMessageDelayed(message, 1000); // send message

}else{

txtView.setVisibility(View.GONE);

}

}

super.handleMessage(msg);

}

};

}

linux

方法二

Handler与Thread(不占用UI线程)

public class timerTask extends Activity{

private int recLen = 0;

private TextView txtView;

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);

txtView = (TextView)findViewById(R.id.txttime);

new Thread(new MyThread()).start(); // start thread

}

final Handler handler = new Handler(){ // handle

public void handleMessage(Message msg){

switch (msg.what) {

case 1:

recLen++;

txtView.setText("" + recLen);

}

super.handleMessage(msg);

}

};

public class MyThread implements Runnable{ // thread

@Override

public void run(){

while(true){

try{

Thread.sleep(1000); // sleep 1000ms

Message message = new Message();

message.what = 1;

handler.sendMessage(message);

}catch (Exception e) {

}

}

}

}

}

方法三

Timer与TimerTask(Java实现)

public class timerTask extends Activity{

private int recLen = 11;

private TextView txtView;

Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);

txtView = (TextView)findViewById(R.id.txttime);

timer.schedule(task, 1000, 1000); // timeTask

}

TimerTask task = new TimerTask() {

@Override

public void run() {

runOnUiThread(new Runnable() { // UI thread

@Override

public void run() {

recLen--;

txtView.setText(""+recLen);

if(recLen 0){

timer.cancel();

txtView.setVisibility(View.GONE);

}

}

});

}

};

}

方法四

TimerTask与Handler(不用Timer的改进型)

public class timerTask extends Activity{

private int recLen = 11;

private TextView txtView;

Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);

txtView = (TextView)findViewById(R.id.txttime);

timer.schedule(task, 1000, 1000); // timeTask

}

final Handler handler = new Handler(){

@Override

public void handleMessage(Message msg){

switch (msg.what) {

case 1:

txtView.setText(""+recLen);

if(recLen 0){

timer.cancel();

txtView.setVisibility(View.GONE);

}

}

}

};

TimerTask task = new TimerTask() {

@Override

public void run() {

recLen--;

Message message = new Message();

message.what = 1;

handler.sendMessage(message);

}

};

}

方法五

Handler与Runnable(最简单型)

public class timerTask extends Activity{

private int recLen = 0;

private TextView txtView;

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);

txtView = (TextView)findViewById(R.id.txttime);

handler.postDelayed(runnable, 1000);

}

Handler handler = new Handler();

Runnable runnable = new Runnable() {

@Override

public void run() {

recLen++;

txtView.setText("" + recLen);

handler.postDelayed(this, 1000);

}

};

}

计时与倒计时

方法1,方法2和方法3,都是倒计时

方法4,方法5,都是计时

计时和倒计时,都可使用上述方法实现(代码稍加改动)

UI线程比较

方法1,方法2和方法3,都是在UI线程实现的计时;

方法4和方法5,是另开Runnable线程实现计时

实现方式比较

方法1,采用的是Java实现,即Timer和TimerTask方式;

其它四种方法,都采用了Handler消息处理

推荐使用

如果对UI线程交互要求不很高,可以选择方法2和方法3

如果考虑到UI线程阻塞,严重影响到用户体验,推荐使用方法4,另起线程单独用于计时和其它的逻辑处理

方法5,综合了前几种方法的优点,是最简的

android 怎么在button上添加倒计时

最简单的两种方法吧

开启一个定时器 (timer 、 countDownTimer) 然后每隔1s 通过handler 让button 里面的文字改变一下 就是倒计时了

基本跟第一个相同。自定义一个类 继承button 然后 里面写定时器 settext()


当前文章:android计时,android计时器控件
当前路径:http://chengdu.cdxwcx.cn/article/dscsdeo.html