IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android在TextView中显示电子时钟 -> 正文阅读

[移动开发]Android在TextView中显示电子时钟

今天学习Android,通过百度学习到了如何在TextView中显示电子时钟。期间还遇到如何设置格式的问题,与如何设置文本框内时间的更新速度。这篇博客主要讲这三个问题。

在TextView中显示电子时钟

xml代码

只需要在activity_main.xml中修改TextView标签即可,加入Android:id以及删去Android:text。源代码如下

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/id_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

java代码

代码思路
1.由 protected void onCreate(Bundle savedInstanceState){}中的mHandler.sendEmptyMessageDelayed(MSG_UPDATE_CURRENT_TIME, 500);在500毫秒后发送一个消息。 public void handleMessage(Message msg){}函数处理该消息。
2.public void handleMessage(Message msg){}函数中的activity.updateCurrentTime();将时间送入文本框。sendEmptyMessageDelayed(MSG_UPDATE_CURRENT_TIME, 10);10毫秒发送一个消息。
3.public void handleMessage(Message msg){}函数处理消息,处理消息时又会执行sendEmptyMessageDelayed(MSG_UPDATE_CURRENT_TIME, 10);。如此循环不间断。

package com.example.time;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends AppCompatActivity {
    private Handler mHandler;
    private static final int MSG_UPDATE_CURRENT_TIME = 1;
    private TextView tv_time;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_time = (TextView) this.findViewById(R.id.id_time);//tv_time与文本框绑定
        mHandler = new MyHandler(this);
        mHandler.sendEmptyMessageDelayed(MSG_UPDATE_CURRENT_TIME, 500);
    }

    private static class MyHandler extends Handler {
        private WeakReference<MainActivity> mActivity;

        public MyHandler(MainActivity activity) {
            mActivity = new WeakReference<MainActivity>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            MainActivity activity = mActivity.get();
            switch (msg.what) {
                case MSG_UPDATE_CURRENT_TIME:
                    activity.updateCurrentTime();
                    sendEmptyMessageDelayed(MSG_UPDATE_CURRENT_TIME, 10);//设置文本框内时间的更新速度,现在为10毫秒更新一次
                    break;
                default:
                    break;
            }
        }
    }

    private void updateCurrentTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("  hh:mm:ss:SS");//设置输出格式,当前格式为“时:分:秒:毫秒(前两位)”
        Date curDate = new Date(System.currentTimeMillis());
        String time = simpleDateFormat.format(curDate);
        tv_time.setText(time);
    }
}

设置输出时间格式

yyyy-MM-dd HH:mm:ss:SSS

y 不包含纪元的年份。不具有前导零。

yy 不包含纪元的年份。具有前导零。

yyyy 包括纪元的四位数的年份。

M 月份数字。一位数的月份没有前导零。

MM 月份数字。一位数的月份有一个前导零。

d 月中的某一天。一位数的日期没有前导零。

dd 月中的某一天。一位数的日期有一个前导零。

h 12 小时制的小时。一位数的小时数没有前导零。

hh 12 小时制的小时。一位数的小时数有前导零。

H 24 小时制的小时。一位数的小时数没有前导零。

HH 24 小时制的小时。一位数的小时数有前导零。

m 分钟。一位数的分钟数没有前导零。

mm 分钟。一位数的分钟数有一个前导零。

s 秒。一位数的秒数没有前导零。

ss 秒。一位数的秒数有一个前导零。

SSS 毫秒。可设置1位,最多可设置三位。

由SimpleDateFormat类进行设置。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("  hh:mm:ss:SS");//设置输出格式,当前格式为“时:分:秒:毫秒(前两位)”

设置更新时间

更新时间取决于handler对象发消息的频率。该频率由函数sendMessageDelayed(Message message,long time)确定。

private static final int MSG_UPDATE_CURRENT_TIME = 1;
······
  sendEmptyMessageDelayed(MSG_UPDATE_CURRENT_TIME, 10);//设置文本框内时间的更新速度,现在为10毫秒更新一次

gitee地址

感兴趣的读者可以下载到Android studio中。
网址:https://gitee.com/wsy1328639341/time.git

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:57:05  更:2021-08-06 09:57:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 10:26:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码