Timer + TimerTask 实现数字时钟

文章讲述了在Android开发中遇到的两个问题:一是如何正确设置AndroidStudio中的系统时区,特别是在API8.0以后,需使用如Asia/Shanghai这样的时区ID;二是介绍了如何在应用中更改数字字体,通过创建新的font资源目录并引用到XML布局文件中。示例代码展示了具体实现方法。
摘要由CSDN通过智能技术生成

任务:


自己完成的:

 

遇到的问题:

1.Android Studio 中 calendar设置系统时区无效的问题



14:50它显示为06:50,时间显示错误,这是因为时区不同。

在8.0以后设置时区,有所改动,不能直接设置 比如GMT+8:00这样的时区了,要设置 时区的id。

id要设置为 比如 北京时间 为:Asia/Shanghai 这就是北京时间的时区id

Android Studio 中 calendar设置时区无效的问题,改成下面这种形式便可解决:

//设置系统时区
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

2.怎么更改数字字体


原:  现在: 


操作:

打开res,新建一个new Resource Directory,更改Resource type为font.然后导入字体进这个文件夹。

 命名这个字体为font,如图。然后在layout文件夹里对所需要改变的文本增加一行代码:

android:fontFamily="@font/font"

总代码:

 TimerDemoActivity01


package com.example.helloandroid2;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

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

import java.util.Calendar;
import java.util.TimeZone;
import java.util.Timer;
import java.util.TimerTask;

public class TimerDemoActivity01 extends AppCompatActivity {

    private Timer timer;
    private TimerTask task;
    private TextView tv1,tv2,tv3,tv4,tv5;
    Calendar cal;

    public void init() {
        timer = new Timer();
        String[] weeks = {"周日","周一","周二","周三","周四","周五","周六"};

        tv1 = (TextView) findViewById(R.id.textView1);
        tv2 = (TextView) findViewById(R.id.textView2);
        tv3 = (TextView) findViewById(R.id.textView3);
        tv4 = (TextView) findViewById(R.id.textView4);
        tv5 = (TextView) findViewById(R.id.textView5);

        //设置系统时区
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

        task = new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() { //在定时任务线程中再启动一个runOnUiThread 线程去更新UI
                    @Override
                    public void run() {
                        cal = Calendar.getInstance();//能获取当前的时间,一定要换在TimerTask()里面,这样每回才会刷新
                        tv1.setText(
                                String.format("%02d:%02d",cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE))
                        );
                        tv2.setText(
                                //判断当前时间是上午还是下午----0为上午,1为下午
                                cal.get(Calendar.AM_PM)==0?"AM":"PM"
                        );
                        tv3.setText(
                                String.format("%02d",cal.get(Calendar.SECOND))
                        );
                        tv4.setText(
                                //获取对应日期是该周的第几天
                                weeks[cal.get(Calendar.DAY_OF_WEEK) - 1]
                        );
                        tv5.setText(
                                //获取对应日期的月份,月份从0开始,故为cal.get(Calendar.MONTH)+1
                                String.format("%4d/%d/%d",cal.get(Calendar.YEAR),cal.get(Calendar.MONTH)+1,cal.get(Calendar.DATE))
                        );
                    }

                });//end runOnUiThread
            }
        };
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_timer_demo01);

        init();

        timer.schedule(task,0,1000);

        ActionBar actionBar = getSupportActionBar(); //获取ActionBar
        actionBar.setTitle("TimerDemo01"); //设置标题
    }
}

layout文件:activity_timer_domo01.xml


<?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"
    android:background="@color/black"
    tools:context=".TimerDemoActivity01">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/font"
        android:text="20:19"
        android:textColor="@color/white"
        android:textSize="96sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.352"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.409" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="PM"
        android:textColor="@color/white"
        android:textSize="24sp"
        app:layout_constraintBottom_toTopOf="@+id/textView3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.192"
        app:layout_constraintStart_toEndOf="@+id/textView1"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.973" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/font"
        android:text="49"
        android:textColor="@color/white"
        android:textSize="48sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/textView1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.106"
        app:layout_constraintStart_toEndOf="@+id/textView1" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="100dp"
        android:text="周五"
        android:textColor="@color/white"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView1"
        app:layout_constraintVertical_bias="0.0" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2023/3/7"
        android:textColor="@color/white"
        android:textSize="24sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/textView4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.46"
        app:layout_constraintStart_toEndOf="@+id/textView4" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="-1dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

@感谢大佬指正

羚羊挂角.
关注 关注
  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 数字时钟实现
04-17 1014
package com.readystatesoftware.viewbadger; import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Paint; import android.g
TimerTaskTimer设计时间监控
06-28
Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务和调度。这两个类在处理需要定期执行的任务时非常有用,例如数据刷新、任务调度或者周期性的系统检查等。本篇文章将深入探讨`TimerTask`...
Android Studio编写的简单数字时钟
11-09
Android Studio 3.2.1编写的简单数字时钟(用子线程发送消息到主线程的方式实现,有丰富的注释,方便理解)。
Timer实现数字时钟
wxx614817的专栏
01-23 2877
最近在做一个GPS的应用,其中界面使用Fragment实现切换。其中一个Fragment中实现数字时钟,即每一秒就更新数字显示那种~~结果在切换Fragment时,出现了下面的错误:01-23 14:54:19.891: D/AndroidRuntime(32574): Shutting down VM 01-23 14:54:19.891: E/AndroidRuntime(32574): FA
Java语言中Timer类的简洁用法
01-25 1195
所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 J2SE 或者 J2ME 日历应用程序需要根据用户的约定计划闹铃时间。不过,标准的调度类 TimerTimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复
小项目开发——Timer + TimerTask 实现数字时钟
最新发布
Re.Gin的博客
03-29 1210
在AS中实现数字时钟
使用java代码中的timer+timertask,在Android studio app中实现数字时钟,要求能在自定义app中以液晶时钟的形式显示
03-20
可以使用以下代码实现: ``` import java.util.Timer; import java.util.TimerTask; public class DigitalClock { private Timer timer; public DigitalClock() { timer = new Timer(); timer....
Android studio项目里用timertimertask做一个样式好看显示时间日期和今天是星期几的数字时钟
03-20
可以使用以下代码实现: ``` import java.util.Timer; import java.util.TimerTask;...这段代码使用 TimerTimerTask 实现了一个数字时钟,每秒钟更新一次时间和星期几,并且可以自定义时间格式。
java实现数字时钟
05-24
Java 实现数字时钟是一种常见的编程练习,它可以帮助开发者熟悉日期和时间处理、线程以及用户界面设计等概念。在这个项目中,我们将讨论如何利用Java语言来创建一个实时更新的数字时钟,显示电脑的当前时间。 首先...
在as项目里用timertimertask做一个样式好看显示时间日期和今天是星期几的数字时钟
03-20
可以使用以下代码实现: ``` import flash.utils.Timer; import flash.events.TimerEvent; import flash.text.TextField; var clock:TextField = new TextField(); addChild(clock); var timer:Timer = new Timer...
android仿锤子数字时钟
01-02
android仿锤子数字时钟。上一次这个例子有点小bug修改了。再上传。本人博客是:day_moon开发工具是e
Android源码数字液晶时钟Demo
10-14
Android源码数字液晶时钟Demo,博客地址:http://blog.csdn.net/yayun0516
Android 实现电子时钟效果
09-12
详细的效果图可以见我的博文:http://blog.csdn.net/jiezhi2013/article/details/39209249
Android Studio代码】数字时钟
09-02
Android Studio 2.3.3做的数字时钟例子,主要用到的代码有:mTextView_Time = (TextView)findViewById(R.id.TextView_Time);、 mRunnable = new Runnable()、public void handleMessage(Message message)、new Thread(mRunnable).start();。
Android液晶字体、LED数字时钟显示
07-11
Android液晶字体、LED数字时钟显示,添加到资源库,可实现安卓电子时钟效果
Timer+TimerTask详解
听海的博客
06-05 638
本篇讲解如何使新创建的Timer为守护线程。先看一下API中提供的一个方法。 对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。如果调用者想要快速终止计时器的任务执行线程,那么调用者应该调用计时器的
开发数字时钟桌面小控件
孤云博客
07-18 3860
随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 所谓桌面小控件,就是指能直接显示在Android系统桌面的小程序,比如模拟时钟等。桌面小控件是通过Broadcast的形式来进行控制的,每个桌面小控件都对应一个BroadcastReceiver。Android提供...
Timer+TimeTask+注解+反射打造定时轮循器
梁超杰
12-24 536
假如现在有一个需求 页面有一个TextView,为了保证文本数据内容和服务器数据相同,需要实时刷新,展示最新的数据内容 除了服务端推送过来消息这种方法之外,我们也可以采用定时轮询请求服务器的方法来实现。先看下整体的流程图:一个TextView存在于Activity之中,而Activity存在于UI线程中,我们使用定时器Timer去周期性执行任务,Timer内部是新开了一个线程去周期性执行Time
用DOS命令打造桌面动态时钟
朩冰雲的专栏
06-18 4934
经常看到别人的电脑桌面上的侧边栏上有个动态数字时钟,今天突发奇想,试着用DOS命令做了一个。 打开记事本,输入以下内容。 @echo off title 动态时钟 color 1f mode con cols=20 lines=8 echo. echo 现在的时间是 echo. echo %date% echo %time:~0,-3% ping -n 2 127.1>nul cls %0 将它另
写文章

热门文章

  • Android Studio音乐播放器 2880
  • Timer + TimerTask 实现数字时钟 1806
  • androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.widget.TextView 1768
  • 关于R.layout.标红问题 1047
  • 快速上手Nestjs+Prisma 1005

分类专栏

  • nest 1篇

最新评论

  • 关于R.layout.标红问题

    weixin_39672929: 哭了,终于找到好使的了表情包表情包表情包

  • 关于R.layout.标红问题

    Ninth_sea_: 你太有实力了,困扰我好久这个问题

  • Android Studio音乐播放器

    CanLee.: 太棒啦

  • Android Studio音乐播放器

    ( ¨̮ )133: 哇,姐姐写的真是太好啦

最新文章

  • 快速上手Nestjs+Prisma
  • Error: @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependen
  • Android Studio音乐播放器
2024年1篇
2023年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家商场玻璃钢花盆颜色铜陵玻璃钢雕塑制作深圳步行街玻璃钢雕塑联系方式黑龙江佛像玻璃钢雕塑玻璃钢草菇雕塑青浦玻璃钢雕塑厂家金昌广场玻璃钢雕塑价格济南人物玻璃钢雕塑优势玻璃钢泡沫雕塑公司江苏知名玻璃钢雕塑在线咨询铜仁玻璃钢雕塑厂家哪家好吉林人物玻璃钢雕塑订做价格玻璃钢雕塑支架洛阳公园景观玻璃钢仿铜雕塑兰州玻璃钢雕塑加工厂家人物迎宾户外园林玻璃钢雕塑运城泡沫校园玻璃钢雕塑厂家浙江超市商场美陈销售企业劲松商场美陈宣威市玻璃钢雕塑订做深圳玻璃钢雕塑在哪里开原玻璃钢门头雕塑湘潭商场美陈雕塑厂家随州商场美陈花器镇江玻璃钢人物雕塑电话江苏大型商场美陈价格商场美陈图片6内蒙古卡通玻璃钢雕塑制作伊春玻璃钢雕塑生产厂家翔安园林玻璃钢雕塑批发香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化