Android---25---Chronometer计时器

Chronometer 计时器

它提供了一个android:format属性,用于指定计时器的计时格式

setBase (long base):设置起始时间

setFormat (String format):设置显示时间的格式

start():开始计时

stop ():停止计时

setOnchronometerTickListener():为计时器绑定时间监听器,当计时器改变时触发该监听器

计时20s,当时间到了则停止计时。

MainActivity.java:

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;;

public class MainActivity extends Activity {

	private Chronometer ch;
	private Button button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ch = (Chronometer) findViewById(R.id.test);
		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//设置开始时间
				ch.setBase(SystemClock.elapsedRealtime());
				//开始计时
				ch.start();
				//按钮不可用
				button.setEnabled(false);
			}
		});
		ch.setOnChronometerTickListener(new OnChronometerTickListener() {

			@Override
			public void onChronometerTick(Chronometer chronometer) {
				// TODO Auto-generated method stub
				//如果计时超过20s
				if (SystemClock.elapsedRealtime() - ch.getBase() > 20*1000){
					//停止计时
					ch.stop();
					//按钮可用
					button.setEnabled(true);
				}
			}
		});
	}
}

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.chronometerdemo2.MainActivity" >

    <Chronometer
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="启动" />

</LinearLayout>

用户自定义计时时间:

MainActivity.java:

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;

public class MainActivity extends Activity implements OnClickListener {

	private Chronometer ch;
	private Button start, stop;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ch = (Chronometer) findViewById(R.id.test);
		start = (Button) findViewById(R.id.start);
		stop = (Button) findViewById(R.id.stop);
		start.setOnClickListener(this);
		stop.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.start:
			ch.setBase(SystemClock.elapsedRealtime());
			ch.start();
			start.setEnabled(false);
			break;
		case R.id.stop:
			ch.stop();
			start.setEnabled(true);
			break;
		default:
			break;
		}
	}
}

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.chronometerdemo.MainActivity" >

    <Chronometer
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="启动" />

        <Button
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="停止" />
    </LinearLayout>

</LinearLayout>
时间: 2024-10-12 22:37:10

Android---25---Chronometer计时器的相关文章

从零开始学android&lt;chronometer计时器组件.三十二.&gt;

计时器来计算每个运动员所消耗的时间等,而在Android系统之中,这种计时的功能就可以使用Chronometer组件,此类的继承结构如下所示: 2java.lang.Object ? android.view.View ? android.widget.TextView ? android.widget.Chronometer 常见的方法 1 public Chronometer(Context context) 构造 创建Chronometer对象 2 public long getBase(

android学习笔记——计时器实现

根据android疯狂讲义来写写代码,在博客里面将这些写过的代码汇总一下.实现的功能很简单:就是一个简单的计时器,点击启动按钮会开始计时,当计时到20秒时会自动停止计时. 界面如下: 界面代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="

Chronometer计时器控件

Chronometer ·计时器控件 ·从一个默认的时间或你指定的时间开始计时,并按指定格式显示 ·主要属性: -android:format - ·主要方法: -setFormat(String format) -start()/stop() -setBase(long base) xml布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&qu

android之Chronometer

首先定义activity_main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent&qu

关于Chronometer(计时器)暂停的问题

问题描述: 当通过stop()方法实现计时器暂停时,在通过start()方法继续计时的时候,会出现计时器显示的时间不是暂停前的时间. 问题分析: 查看官方API文档可以发现: publicvoid stop () Added in API level 1 Stop countingup. This does not affect the base as set from setBase(long), just the viewdisplay. This stops the messages to

Android应用增加计时器

昨天写的Sudoku游戏需要增加计时器功能,使用Chronometer实现如下,由于Chronometer自己在调用stop之后后台的计时器还会继续增加,所以暂停功能需要额外实现: 在StartActivity onCreate方法中添加如下代码: textView = (TextView) findViewById(R.id.time_text); timer = (Chronometer) findViewById(R.id.chronometer); timer.setBase(Syste

Android CountDownTimer倒计时器

示例代码如下: int totalTime = 10000; // 总时间 int tickTime = 100; // 滴答时间 CountDownTimer timer = new CountDownTimer(totalTime, tickTime) { @Override public void onTick(long millisUntilFinished) { // 每tickTime执行一次此方法. // millisUntilFinished为距离结束的毫秒数. // 如果单纯执

Android CountDownTimer倒计时器的使用

http://blog.csdn.net/freesonhp/article/details/25904047 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写.现在发现了这个类,大家共享一下: 在一个TextView不断显示剩下的时间,代码如下: [java] view plaincopy private TextView vertifyView; private CountDownTimer timer = new CountDow

拖延症患者的Android开发笔记 - 计时器 widget

一 需求分析 1)需求来源与操作分析与技术分析 Android自带的时钟应用操作非常不人性化,对于常用倒计时和计时的小伙伴简直就是摧残.所以我打算做一个操作非常简单的倒计时widget.操作上类似自带闹钟的设置方式,环形时钟界面,点击某个时间,直接开始倒计时,widget是支持点击事件的,所以需求应该是可以实现的. 2)特别说明,作为拖延症晚期,有可能本文的计划完全不能实现,如果有一天我真的完成了计划.. 等到了那一天再说吧.. 二 开发计划 本app主要是希望开发widget,由于功能过于简单

Android Timer(计时器)

public class MainActivity extends Activity { Timer timer = new Timer(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button1).setOnClickListener(l); }