计时器Chronometer和时钟(AnalogClock和DigitalClock)

(1)Android提供了两个时钟组件:AnalogClock和DigitalClock,DigitalClock继承了TextView组件,也就是说它本身是一个文本框,只是他里面的内容总是当前时间,所以为DigitalClock设置android:text属性没有作用;AnalogClock继承了View组件,重写了View的OnDraw方法,它会在View上绘制模拟时钟。

(2)AnalogClock与DigitalClock的异同:它们都会显示当前的时间。DigitalClock显示数字时钟,会显示当前时间的秒数;AnalogClock显示模拟时钟,不会显示当前时间的秒数。

(3)Android还提供了一个计时器组件:Chronometer,该组件和DigitalClock都继承自TextView,所以它们都会显示出一段文本,但是Chronometer并不显示当前时间,它显示的是从某一个起始时间开始,一共过去了多长时间。

-------案例:

(1)main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" > <!-- 定义模拟时钟 -->
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> <!-- 定义数字时钟 -->
<DigitalClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14pt"
android:textColor="#f0f"
android:drawableRight="@drawable/ic_launcher"
/> <!-- 计时器 继承自TextView组件,并不是显示当前的时间,显示的是从某个起始时间开始一共过去多长时间-->
<Chronometer
android:id="@+id/meter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> <!-- 点击按钮开始计时 -->
<Button
android:id="@+id/but_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"/> </LinearLayout>

(2)MainActivity.java文件

package com.yby.clock;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener; import com.yby.clock.R; /**
* 时钟AnalogClock和DigitalClock
* @author yinbenyang
* DigitalClock继承自TextView,显示的总是当前的时间,数字时钟,可以显示当前的秒数
* AnalogClock继承自View组件,重写了View的OnDraw方法,绘制模拟时钟,不会显示当前的秒数
*/
public class MainActivity extends Activity{ private Button but_start;
private Chronometer meter; /**
* 案例:手机里的劳力士
* SystemClock是一个获取系统时间的工具类
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
but_start = (Button) findViewById(R.id.but_start);
meter = (Chronometer) findViewById(R.id.meter);
but_start.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//设置开始计时的时间
meter.setBase(SystemClock.elapsedRealtime());
//启动计时器
meter.start();
//将按钮置为禁用
but_start.setEnabled(false);
}
}); //为Chronometer绑定时间监听器
meter.setOnChronometerTickListener(new OnChronometerTickListener() { @Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub
//计时超过20s
if(SystemClock.elapsedRealtime()-meter.getBase()>20*1000){
//停止计时器
meter.stop();
//设置按钮为启用
but_start.setEnabled(true);
}
}
}); }
}

(3)效果图:

计时器Chronometer和时钟(AnalogClock和DigitalClock)的更多相关文章

  1. 时钟AnalogClock和DigitalClock

    <AnalogClock android:layout_width="fill_parent" android:layout_height="fill_parent ...

  2. Android学习笔记(20):时钟(AnalogClock和TextClock)和计时器(Chronometer)

    时钟文本TextClock继承自TextView.是用于显示当前时间的文本框. TextClock支持的XML属性和相关方法 XML属性 相关方法 说明 android:format12Hour se ...

  3. 模拟时钟(AnalogClock)和数字时钟(DigitalClock)

    Demo2\clock_demo\src\main\res\layout\activity_main.xml <LinearLayout xmlns:android="http://s ...

  4. 时钟(AnalogClock和DigitalClock)的功能与用法

    时钟UI组件是两个非常简单的组件,DigitalClock本身就继承了TextView——也就是说它本身就是文本框,只是它里面显示的内容总是当前时间.与TextView不同的是为DigitalCloc ...

  5. Android零基础入门第59节:AnalogClock、DigitalClock和TextClock时钟组件

    原文:Android零基础入门第59节:AnalogClock.DigitalClock和TextClock时钟组件 在前面一期,我们学习了DatePicker和TimePicker,在实际开发中其不 ...

  6. 从零開始学android&lt;AnalogClock与DigitalClock时钟组件.三十一.&gt;

    这两个组件比較交单,大家看下会使用即可了 XML文件配置 <span style="font-size:18px;"><RelativeLayout xmlns: ...

  7. 计时器chronometer补充

    项目中要实现关于安卓控件chronometer这部分的功能需求: 1.计时器的功能对用户答题时间进行时间统计,用户答完该题,进入下一题,计时器接续上一题的结束时间继续计时: 2.用户可以跳出答题界面, ...

  8. UI组件之TextView及其子类(五)计时器Chronometer

    Chronometer直接继承了TextView组件,它会显示一段文本,显示从某个事实上时间開始.一共过了多长时间.我们看Chronometer的源代码: watermark/2/text/aHR0c ...

  9. 计时器Chronometer

    布局文件很简单 <Chronometer android:id="@+id/test" android:layout_width="wrap_content&quo ...

随机推荐

  1. IOS 作业项目(4)步步完成 画图 程序(中)

    一,承接上文,继续本文  [UIButton buttonWithType:UIButtonTypeRoundedRect]; 如此声明的按钮才会有点击闪动的效果!如果直接frame方式声明就不会有. ...

  2. git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解决办法

    最近刚学 git rebase,觉得很牛逼的样子, 结果今天就被打脸了. git pull --rebase 报错: Cannot rebase: You have unstaged changes ...

  3. centOS7 修改hostname

    hostnamectl set-hostname 你要修改到的hostname   localectl set-locale LANG=要修改的语言     介绍个Centos 7很不错的教程网站:h ...

  4. AWK处理日志入门(转)

    前言 这两天自己挽起袖子处理日志,终于把AWK给入门了.其实AWK的基本使用,学起来也就半天的时间,之前总是靠同事代劳,惰性呀. 此文仅为菜鸟入门,运维们请勿围观. 下面是被处理的日志的示例,不那么标 ...

  5. C# 读取文本文档(转)

    1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出. byte[] byData = ...

  6. Java多线程的实现

    记得面试的时候,面试官问了Java多线程实现的方式有几种,它们之间的区别是什么?作为一个Java新手,将最近的学习总结如下: 1.Java多线程实现方式 Java多线程实现方式主要有三种:继承Thre ...

  7. UVa 10120 - Gift?!

    题目大意 美丽的村庄里有一条河,N个石头被放置在一条直线上,从左岸到右岸编号依次为1,2,...N.两个相邻的石头之间恰好是一米,左岸到第一个石头的距离也是一米,第N个石头到右岸同样是一米.礼物被放置 ...

  8. android WebView交互优化

    安卓的WebView一般是嵌套在activity或者fragment中的,但是如果在这种activity页面上点击返回按钮,一般会finish掉当前activity.其实是应该关闭当前的WebView ...

  9. 堆排序(C++版)

    #include <iostream> using namespace std; void HeapAdjust(int* a, int start, int n) { int max=s ...

  10. c 函数及指针学习 7

    1.结构的存储分配 1 2 printf("%d \n",sizeof(char)); printf("%d \n",sizeof(int)); int 类型为 ...