手表样式的时间并且时间是变化的

效果显示图如下

  

 

定义一个Activity

package cn.mw.com;

 

import java.text.SimpleDateFormat; 

import java.util.Calendar;

 

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.AnalogClock;

import android.widget.DigitalClock;

import android.widget.TextView;

 

public class EX02_01Activity extends Activity {

    // 声明两个widget对象

    private static AnalogClock ac;

    private DigitalClock dc;

    private TextView mTextView;

    // 声明一常数作为判别信息用

    protected static final int GUINOTIFIER = 0x1234;

    // 声明与时间相关的变量

    public Calendar mCalendar;

    public int mMinutes;

    public int mHour;

    private int msecond;

 

    // 声明关键 Handler Thread 变量

    public Handler mHandler;

    private Thread mClockThread;

 

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       mTextView = (TextView) findViewById(R.id.tv1);

       ac = (AnalogClock) findViewById(R.id.anclock);

       dc = (DigitalClock) findViewById(R.id.digitalclock01);

       mHandler = new Handler() {

           public void handleMessage(Message msg) {

              // 这里是处理信息的方法

              switch (msg.what) {

              case EX02_01Activity.GUINOTIFIER:

 

                  // 在这里处理TextView对象show时间事件

 

                  mTextView.setText(mHour + " : " + mMinutes);

                  break;

              }

              super.handleMessage(msg);

           }

       };

       /*

        * 通过进程来持续取得系统时间

        */mClockThread = new LooperThread();

       mClockThread.start();

    }

 

    // 改写一个Thread Class 用来持续取得系统时间

    class LooperThread extends Thread {

       public void run() {

           super.run();

           try {

              do {

 

                  // 取得系统时间

                  long time = System.currentTimeMillis();

                  /* 通过Calendar 对象来取得小时与分钟 */

                  final Calendar mCalendar = Calendar.getInstance();

                  mCalendar.setTimeInMillis(time);

                  mHour = mCalendar.get(Calendar.HOUR);

                  mMinutes = mCalendar.get(Calendar.MINUTE);

                  msecond = mCalendar.get(Calendar.MINUTE);

                  // 让进程休息一秒

                  Thread.sleep(1000);

                  Message m = new Message();

                  m.what = EX02_01Activity.GUINOTIFIER;

                  EX02_01Activity.this.mHandler.sendMessage(m);

              } while (EX02_01Activity.LooperThread.interrupted() == false);

              // 当系统发出中断信息后停止本次循环

           } catch (Exception e) {

              e.printStackTrace();

           }

       }

    }

}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <AnalogClock
        android:id="@+id/anclock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <DigitalClock
        android:id="@+id/digitalclock01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

猜你喜欢

转载自m-wen997721750.iteye.com/blog/1933423
今日推荐