TimeView.java

package com.mytest.myclock;import java.util.Calendar;import android.content.Context;import android.opengl.Visibility;import android.os.Handler;import android.util.AttributeSet;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;public class TimeView extends LinearLayout {    private TextView timeText;    public TimeView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub    }    public TimeView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub    }    public TimeView(Context context) {        super(context);        // TODO Auto-generated constructor stub    }    @Override    protected void onFinishInflate() {        // TODO Auto-generated method stub        super.onFinishInflate();        timeText = (TextView) findViewById(R.id.tv_time);        timeHandler.sendEmptyMessage(0);    }    private void refreshTime() {        Calendar cal = Calendar.getInstance();        String timeStr = String.format("%d:%d:%d", cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE),                cal.get(Calendar.SECOND));        timeText.setText(timeStr);        //System.out.println("timeStr============>" + timeStr);    }    @Override    protected void onVisibilityChanged(View changedView, int visibility) {        // TODO Auto-generated method stub        super.onVisibilityChanged(changedView, visibility);        if (getVisibility() == View.VISIBLE) {            timeHandler.sendEmptyMessageDelayed(0, 1000);        } else {            timeHandler.removeMessages(0);        }    }    private Handler timeHandler = new Handler() {        public void handleMessage(android.os.Message msg) {            refreshTime();            if (getVisibility() == View.VISIBLE) {                // 每隔一秒给自己发送消息                timeHandler.sendEmptyMessageDelayed(0, 1000);            }        };    };}
View Code

小结:

1、在onFinishInflate中发送消息,实现时间的第一次显示。后来又在handler的handleMessage方法中发送消息,有点相当于调用死循环来刷新时间。

2、当用户切换后,时钟tab不可见时,记得onVisibilityChanged中停止发送消息,不再刷新时间。

更多相关文章

  1. Android时间倒计时的简单实线
  2. android时间控件DatePicker使用实例
  3. Android 时间、日期处理 DateUtils、SystemClock、DateFormat
  4. 8.1.2 Android中的13种Drawable小结 Part 2
  5. android 自定义时间控件
  6. Android Studio 常见问题小结
  7. 【Android】Android处理Home键方法小结

随机推荐

  1. Android(安卓)修炼之路
  2. 史上最强整理:多达2987页的Android面试宝
  3. 大量正规厂商进驻Android(安卓)Market,请
  4. android自学笔记(1):android简介
  5. Android开发规范(编码+性能+UI)
  6. 用Android(安卓)Studio 运行ndk 程序
  7. Android之布局属性重点
  8. Android(安卓)11适配指南之系统相机拍照
  9. Android(安卓)Fresco图片加载库基础使用
  10. Android应用程序与SurfaceFlinger服务的