博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android闹钟(三):实现时钟功能
阅读量:5374 次
发布时间:2019-06-15

本文共 2206 字,大约阅读时间需要 7 分钟。

 

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中停止发送消息,不再刷新时间。

转载于:https://www.cnblogs.com/2015android/p/4667967.html

你可能感兴趣的文章
如何让一个div的大小,从某一个特定值开始,随内容的增加而自动变化?
查看>>
P1977 出租车拼车(DP)
查看>>
iOS开发--完整项目
查看>>
我的博客园皮肤模板
查看>>
正则表达式
查看>>
java基础:不同进制的表现形式
查看>>
Base64转换为blob对象
查看>>
gulp自动化压缩合并、加版本号解决方案
查看>>
windows下面安装Python和pip教程
查看>>
Java 动态向 JTable 中添加数据
查看>>
平安科技移动开发二队技术周报(第九期)
查看>>
Oracle【二维表管理:约束】
查看>>
2017-2018-1 20155307 《信息安全系统设计基础》第5周学习总结
查看>>
微软职位内部推荐-Principal Dev Manager for Windows Phone Apps
查看>>
jquery改变元素属性值(转)
查看>>
《额尔古纳河右岸》读书笔记
查看>>
C#Virtual和Override的几种组合
查看>>
JavaScript总结之DOM基本操作(三)
查看>>
为Vmware硬盘减肥瘦身
查看>>
python-flask学习
查看>>