Android小实验时钟模拟器

  1. 实例概述:Android UI设计模拟时钟AnalogClock和数字时钟DigitalClock,在本软件中,首先展示的是AnalogClock模拟时钟,模拟时钟随系统时间的改变而更新,然后在AnalogClock下面显示的是DigitalClock数字时钟,同样随系统时间的改变而更新,在DigitalClock下面为TextView控件,此控件动态显示系统时间。
  2. 运行效果
    本案例运行效果如下图所示:
    在这里插入图片描述

3.技术实现
在本软件中实现模拟时间只需直接加入控件就可以动态显示系统时间,而实现TextView动态显示时间就比较复杂。实现TextView的时候首先要创建一个线程类,通过此线程的Handler发送消息,主控类接受消息重新获取时间,然后再赋值给TextView,从而实现词控件的动态显示。

  1. 核心代码
    1)布局,activity_main.xml
<?xml version="1.0" encoding="utf-8"?>

<AnalogClock
        android:id="@+id/AnalogClock01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="90dp"
        android:layout_marginTop="30dp"
        >
</AnalogClock>
    <DigitalClock
        android:text="@+id/DigitalClock01"
        android:textSize="25dp"
        android:id="@+id/DigitalClock01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="120dp"
        >
    </DigitalClock>
    <TextView
        android:id="@+id/TextView01"
        android:textSize="25dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:gravity="center"
        android:layout_marginTop="20dp"
        >
    </TextView>
</LinearLayout>
  1. MainActivity.java
    package com.example.asus.time;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import java.util.Calendar;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.widget.TextView;
    public class MainActivity extends AppCompatActivity {

     public int mHour;
     public int mMinute;
     public int mSecond;
    
     Handler hd=new Handler()
     {
         @Override
         public void handleMessage(Message msg)
         {
             switch(msg.what)
             {
                 case 0:
                     long time=System.currentTimeMillis();
                     final Calendar c=Calendar.getInstance();
                     c.setTimeInMillis(time);
                     mHour=c.get(Calendar.HOUR);
                     mMinute=c.get(Calendar.MINUTE);
                     mSecond=c.get(Calendar.SECOND);
    
                     TextView tv=(TextView)findViewById(R.id.TextView01);
                     tv.setText("现在时间是"+String.valueOf(mHour)+":"+String.valueOf(mMinute)+":"+String.valueOf(mSecond));
             }
         }
     };
    
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
    
         MyThread thread=new MyThread(this);
         thread.start();
     }
    

    }

  2. 线程类MyThread.java
    package com.example.asus.time;
    public class MyThread extends Thread
    {
    boolean flag=true;//flag为True
    MainActivity activity;
    public MyThread(MainActivity activity)//构造器
    {
    this.activity=activity;//为当前的activity赋值
    }

     @Override
     public void run()//重写的run方法
     {
         while(flag)
         {
             try
             {
                 MyThread.sleep(1000);//休息1000ms
             }
             catch(Exception e)//捕获异常
             {
                 e.printStackTrace();//打印堆栈信息
             }
             activity.hd.sendEmptyMessage(0);//发送消息0
         }
     }
    

    }
    5.实验心得
    略。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值