05 - 基本控件:Clock时钟(AnalogClock、DigitalClock)、Chronometer计时器

本文介绍了Android中的两种时钟控件:AnalogClock和DigitalClock,包括它们的布局使用和代码控制。此外,还详细讲解了Chronometer计时器的原理和应用,强调其在计时场景中的作用,如跑步计时器,并说明了如何通过按钮控制计时器的启停。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载注明出处:http://blog.youkuaiyun.com/eana_don/article/details/8281347

参考资料:《疯狂Android讲义》,官网API

一、Clock时钟

1.模拟时钟AnalogClock
AnalogClock是一种模拟时钟,不会显示出秒数,但形成一个动态的时针走向,这是因为它继承了View组件,并重写了OnDraw方法。(当我们需要自定义的组件时,也可以这么做。)
a.布局
<AnalogClock
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        />


b.代码控制
暂无

c.运行结果


2.数字时钟DigitalClock
数字时钟集成了TextView,以文本显示的形式将时间显示出来,它可以显示出具体秒数
a.布局
<DigitalClock 
	    android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
	    android:textSize="14pt"/>


b.代码控制
暂无

c.运行结果


二、Chronometer计时器

计时器是一种不关心当前时间,只关心从某个时间点起,一共过去了多长时间的控件。Chronometer多数情况下需要与按钮结合使用。比如制作一个 跑步计时器,就需要一个按钮点击开始计时,再次点击后结束计时。

a.布局
<ToggleButton 
        android:textOn="停止计时"
        android:textOff="开始计时,20秒后自动停止"
        android:id="@+id/tbtn_toggle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:checked="false"/>
	<Chronometer 
	    android:id="@+id/chronometer"
	    android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/>


b.代码控制
package cn.don.userinterface;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.ToggleButton;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class ClockActivity extends Activity {

	private Chronometer chronmeter;
	private ToggleButton tbtn;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clock);
        chronmeter = (Chronometer) findViewById(R.id.chronometer);
        tbtn = (ToggleButton)findViewById(R.id.tbtn_toggle);
        
        //使用开关按钮开启计时或者关闭及时
        tbtn.setOnCheckedChangeListener(
        			new OnCheckedChangeListener() {
						@Override
						public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
							// TODO Auto-generated method stub
							if(isChecked){
								//设置开始计时的时间
								chronmeter.setBase(SystemClock.elapsedRealtime());
								//启动计时器
								chronmeter.start();
							} else{
								chronmeter.stop();
							}
							
						}
					}
        		);
        
        //响应计时器的Tick事件,可以在这里控制当计时器正在计时时要做的操作
        chronmeter.setOnChronometerTickListener(
        		new OnChronometerTickListener() {
					
					@Override
					public void onChronometerTick(Chronometer chronometer) {
						// TODO Auto-generated method stub
						//设置20秒后自动停止计时器
						if(SystemClock.elapsedRealtime() - chronometer.getBase() > 20 * 1000){
							chronometer.stop();
							//设置开关按钮恢复未开启状态
							tbtn.setChecked(false);
						}
					}
				}
        	);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_clock, menu);
        return true;
    }

    
}


c.运行结果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值