Android 时间计时器控件 Chronometer

   当你想要显示时间的推移而不是进程的增加的时候,可以使用Chronometer作为一个计时器。当需要记录用户进行某项操作所消耗的时间的时候,或者在游戏中需要限制时间时候,它将非常实用。

       这里,Chronometer对象的format属性可以用来设置显示时间周围的文字。并且只有它的start()在被调用之后才会显示时间及附加文字,要停止计时器可以调用stop()方法。setBase()方法用来设定设置计时器的起点,当将计时器几点设置为0的时候,计时器将从手机上次重启的时刻开始计时。

方法简介:

   long getBase(); //返回基地的时间,由setBase(long)设置的,可以是SystemClock.elapsedRealtime()  

   String getFormat();//返回当前字符串格式,此格式是通过setFormat()实现的
   void setBase(long base);//设置时间,计数定时器指定的值
   void setFormat(String format);//设置显示的内容,计时器将会显示这个参数所对应的值得,如果字符串的值
                                                为null,那么返回的值为MM:SS格式的



chronometer是一个计时器,我们可以通过其进行设置。主要的方法有

Chronometer类有3个重要的方法:start、stop和setBase,其中start方法表示开始计时;stop表示停止计时;setBase方法表示重新计时。start和stop方法没有任何参数,setBase方法有参数,表示开始计时的基准时间。如果要从当前时刻重新计时,可以将该参数值设为temClock.elapsedRealtime()。

还可以对Chronometer组件做进一步设置。在默认情况下,Chronometer组件只输出MM:SS:MM:SS的时间格式。例如,当计时到1分20秒时,Chronometer组件会显示01:20。如果变显示的信息内容,可以使用Chronometer类的setFormat方法。该方法需要一个String变并使用“%s”表示计时信息。例如,使用setFormat(“计时信息:%s”)设置显示信息,Chronometer会显示计时信息:(计时信息:10:20)。

Chronometer组件还可以通过onChronometerTick事件方法来捕捉计时动作。该方法1秒调一次。要想使用onChronometerTick事件方法,必须实现接口:android.widget.Chronometer.OnChronometerTickListener

ChronometerDemo.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class ChronometerDemo extends Activity {
    private Chronometer mChronometer;//创建一个计时器对象
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chronometer);
        mChronometer = (Chronometer) findViewById(R.id.chronometer);//将计时器对象实体化
    }
    /**初始化按钮Button组件*/
    public void initWidget(){
    	// Watch for button clicks.
        button = (Button) findViewById(R.id.start);
        button.setOnClickListener(mStartListener);
 
        button = (Button) findViewById(R.id.stop);
        button.setOnClickListener(mStopListener);
 
        button = (Button) findViewById(R.id.reset);
        button.setOnClickListener(mResetListener);
 
        button = (Button) findViewById(R.id.set_format);
        button.setOnClickListener(mSetFormatListener);
 
        button = (Button) findViewById(R.id.clear_format);
        button.setOnClickListener(mClearFormatListener);
    }
 
    View.OnClickListener mStartListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.start();//计时器开始
        }
    };
 
    View.OnClickListener mStopListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.stop();//计时器暂停
        }
    };
 
    View.OnClickListener mResetListener = new OnClickListener() {
        public void onClick(View v) {
        	//计时器重置为0
            mChronometer.setBase(SystemClock.elapsedRealtime());
        }
    };
 
    View.OnClickListener mSetFormatListener = new OnClickListener() {
        public void onClick(View v) {
        	//改变计时器显示内容方式
            mChronometer.setFormat("Formatted time (%s)");
        }
    };
 
    View.OnClickListener mClearFormatListener = new OnClickListener() {
        public void onClick(View v) {
        	//恢复原来计时器显示方式
            mChronometer.setFormat(null);
        }
    };
}

chronometer.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:padding="4dip" android:gravity="center_horizontal"
	android:layout_width="fill_parent" android:layout_height="fill_parent">
	<Chronometer android:id="@+id/chronometer"
		android:format="@string/chronometer_initial_format"
		android:layout_width="wrap_content" android:layout_height="wrap_content"
		android:layout_weight="0" android:paddingBottom="30dip"
		android:paddingTop="30dip" />
	<Button android:id="@+id/start" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="@string/chronometer_start">
		<requestFocus />
	</Button>
	<Button android:id="@+id/stop" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="@string/chronometer_stop">
	</Button>
	<Button android:id="@+id/reset" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="@string/chronometer_reset">
	</Button>
	<Button android:id="@+id/set_format" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="@string/chronometer_set_format">
	</Button>
	<Button android:id="@+id/clear_format" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="@string/chronometer_clear_format">
	</Button>
</LinearLayout>

string.xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="hello">Hello World, ChronometerDemo!</string>
    <string name="app_name">ChronometerDemo</string>
    <string name="chronometer_start">Start</string>
    <string name="chronometer_stop">Stop</string>
    <string name="chronometer_reset">Reset</string>
    <string name="chronometer_set_format">Set format string</string>
    <string name="chronometer_clear_format">Clear format string</string>
    <string name="chronometer_initial_format">Initial format: <xliff:g id="initial-format">%s</xliff:g></string>
</resources>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值