博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 实时显示系统时间
阅读量:7058 次
发布时间:2019-06-28

本文共 2279 字,大约阅读时间需要 7 分钟。

      我们知道,用System.currentTimeMillis()可以获取系统当前的时间,我们可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间。

  我们开启一个线程,线程每隔一秒发送一次消息,我们在消息中更新TextView上显示的时间就ok了。

  首先我们在布局文件中放一个TextView用来显示时间,如下所示:

  

<?xml version="1.0" encoding="utf-8"?>

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

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:background="@android:color/white">

<TextView

  android:id="@+id/mytime"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:gravity="center"

  android:textColor="@android:color/black"

  android:textSize="36sp"/>

</LinearLayout>

  主要思想是写一个线程,线程里面无限循环,每隔一秒发送一个消息,在主线程里面处理消息并更新时间

  

  整个Activity的代码:

import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.annotation.SuppressLint;import android.app.Activity;import android.text.format.DateFormat;import android.widget.TextView;public class TestActivity extends Activity {    private TextView tvTime;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        tvTime = (TextView) findViewById(R.id.mytime);        new TimeThread().start(); //启动新的线程    }    class TimeThread extends Thread {        @Override        public void run() {            do {                try {                    Thread.sleep(1000);                    Message msg = new Message();                    msg.what = 1;  //消息(一个整型值)                    mHandler.sendMessage(msg);// 每隔1秒发送一个msg给mHandler                } catch (InterruptedException e) {                    e.printStackTrace();                }            } while (true);        }    }   //在主线程里面处理消息并更新UI界面    private Handler mHandler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {            case 1:                long sysTime = System.currentTimeMillis();                CharSequence sysTimeStr = DateFormat.format("hh:mm:ss", sysTime);                tvTime.setText(sysTimeStr); //更新时间             break;         default:           break;             }        }    };}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/adm1989/archive/2012/07/13/2590231.html

你可能感兴趣的文章
Android apk打包及反编译
查看>>
借助 SublimeLinter 编写高质量的 JavaScript & CSS 代码
查看>>
dos删除文件包括权限有问题的文件
查看>>
Jquery——动画效果
查看>>
mysql存储过程获取sqlstate message_text
查看>>
My97DatePicker控件
查看>>
shell--read命令
查看>>
职称考试
查看>>
[转]HIVE UDF/UDAF/UDTF的Map Reduce代码框架模板
查看>>
OA系统配置文件
查看>>
我想知道的是这个月哪种商品销售量最高,比上个月怎么样?销量近几个月的走势是什么?有没有未达标的?有没有超额完成的?超额完成了多少?我可不关心这个月到底售出了多少件,几点售出的,谁买的(转)...
查看>>
百度面试
查看>>
Oracle数据库备份、恢复及常见问题
查看>>
把博客园的博客导出为MovableType的文本格式
查看>>
Entity Framework 6 Recipes 2nd Edition(10-9)译 -> 在多对多关系中为插入和删除使用存储过程...
查看>>
广告点击率预估中的特征选择
查看>>
LeetCode-Range Sum Query - Immutable
查看>>
VPython 3D图形库
查看>>
svn:revert to this version 和 revert changes from this version的区别 假设我们有许多个版本,版本号分别是1-10...
查看>>
中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)--中断中的延迟delay与printk函数的冲突【转】...
查看>>