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时间控件DatePicker使用实例
  2. Android时间倒计时的简单实线
  3. Android(安卓)定时到服务器取数据并刷新
  4. Android下拉/上拉刷新ListView之Android-PullToRefresh
  5. Android(安卓)时间、日期处理 DateUtils、SystemClock、DateForm
  6. Android(安卓)为【apk】文件签名,增加修改系统时间等权限
  7. android 自定义时间控件
  8. 8.1.2 Android中的13种Drawable小结 Part 2
  9. Android多媒体开发高级编程——目录

随机推荐

  1. android 彻底关闭应用程序
  2. Android学习——TextView 设置中划线 下
  3. zxing QRcode
  4. android UI
  5. Android指纹解锁边界性问题
  6. sql 游标的使用—游标FOR循环小例子
  7. 基于SQL Server中char,nchar,varchar,nva
  8. 安装sqlserver2000时出现wowexec.exe无反
  9. 基于B-树和B+树的使用:数据搜索和数据库索
  10. 查询表中某字段有重复记录个数的方法