Android Chronometer计时器

}Chronometer是一个简单的计时器,你可以给它一个开始时间,并以计时,或者如果你不给它一个开始时间,它将会使用你的时间通话开始。在默认情况下,Chronometer组件只输出MM:SS或H:MM:SS的时间格式。例如,当计时到1分20秒时,Chronometer组件会显示01:20。如果想改变显示的信息内容,可以使用Chronometer类的setFormat方法。该方法需要一个String变量,并使用"%s"表示计时信息。例如,使用setFormat("计时信息:%s")设置显示信息,Chronometer组件会显示如下计时信息:


       计时信息:10:20

android:format;//定义时间的格式如:hh:mm:ss
 setFormat("计时:%s");  //设置显示格式
 setFormat(String format);//设置显示时间的格式。 
start();//开始计时 
stop();//停止计时

setBase();//设置基地时间,一般都是SystemClock.elapsedRealtime()  
setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener);//当计时器改变时调用。


案例:

1.定义布局文件chronometer.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
   <Chronometer 
        android:id="@+id/chronometer"
        android:layout_width="match_parent" 
	    android:layout_height="wrap_content"
	 />
   <Button 
        android:id="@+id/chronometer_start"
        android:layout_width="match_parent" 
	    android:layout_height="wrap_content"
	    android:text="开始计时"
	/>
   <Button 
        android:id="@+id/chronometer_end"
        android:layout_width="match_parent" 
	    android:layout_height="wrap_content"
	    android:text="停止计时"
	    
	/>
   <Button 
        android:id="@+id/chronometer_null"
        android:layout_width="match_parent" 
	    android:layout_height="wrap_content"
	    android:text="重新开始计时"
	    
	/>
</LinearLayout>

2.java代码文件:ChronometerDemo.java

package com.test;

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;

public class ChronometerDemo extends Activity {
	
	private Chronometer  chronometer;
	
	private Button  button_start, button_end,button_bull;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.chronometer);
		
		chronometer =(Chronometer)findViewById(R.id.chronometer);
		button_start =(Button)findViewById(R.id.chronometer_start);
		button_end =(Button)findViewById(R.id.chronometer_end);
		button_bull =(Button)findViewById(R.id.chronometer_null);
		
		button_start.setOnClickListener(clickListener);
		button_end.setOnClickListener(clickListener);
		button_bull.setOnClickListener(clickListener);
	}

	private  OnClickListener  clickListener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			
			switch (v.getId()) {
			case R.id.chronometer_start:
				//调用start()方法开始计时
				chronometer.start();
				button_start.setText("正在计时...");
				break;
			case R.id.chronometer_end:
				//调用stop()方法停止计时
				chronometer.stop();
				button_start.setText("继续计时");
				break;
			case R.id.chronometer_null:
				//调用stop()方法停止计时
				chronometer.setBase(SystemClock.elapsedRealtime());
				chronometer.start();
				button_start.setText("正在计时...");
				break;

			default:
				break;
			}
		}
	};
}

3> 运行效果:




有一个问题就是,计时器开始计时后,一段时间之后,点击停止计时,一段时间后,点击继续计时,但是这个时间的不是停止后的那个时间。说明停止之后,计时器还在后台运行。

















转载于:https://my.oschina.net/amigos/blog/59315

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的chronometer计时器的代码示例: XML布局文件: ```xml <Chronometer android:id="@+id/chronometer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" /> <Button android:id="@+id/start_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start" /> <Button android:id="@+id/stop_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop" /> ``` Java代码: ```java public class MainActivity extends AppCompatActivity { Chronometer chronometer; Button startButton, stopButton; boolean isRunning = false; long elapsedTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取布局中的控件 chronometer = findViewById(R.id.chronometer); startButton = findViewById(R.id.start_button); stopButton = findViewById(R.id.stop_button); // 设置计时器的格式 chronometer.setFormat("Time: %s"); // 设置开始按钮的点击事件 startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 如果计时器没有在运行中 if (!isRunning) { // 如果已经有过计时,则先设置起始时间为上次的计时时间 if (elapsedTime != 0) { chronometer.setBase(SystemClock.elapsedRealtime() - elapsedTime); } else { chronometer.setBase(SystemClock.elapsedRealtime()); } chronometer.start(); // 开始计时 isRunning = true; // 更新状态 } } }); // 设置停止按钮的点击事件 stopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 如果计时器在运行中 if (isRunning) { chronometer.stop(); // 停止计时 elapsedTime = SystemClock.elapsedRealtime() - chronometer.getBase(); // 记录已经过去的时间 isRunning = false; // 更新状态 } } }); } } ``` 这个示例中,我们使用了`Chronometer`控件来实现计时器的显示,而按钮则用来控制计时器的开始和停止。`isRunning`变量用来记录计时器是否在运行中,`elapsedTime`则用来记录已经过去的时间。在开始按钮的点击事件中,我们通过`SystemClock.elapsedRealtime()`方法来获取系统当前时间,然后设置为计时器的起始时间;在停止按钮的点击事件中,我们记录当前已经过去的时间,并更新`elapsedTime`变量的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值