Android的学习刚刚起步,这几天都在学习界面编程的一些基础内容。
今天学习的是时钟(AnalogClock和DigitalClock),此外还学习了一个计时器组件:Chronometer(继承TextView),它会显示一段文本,但并不显示当前时间,而是显示从某个起始时间开始,一共过去了多少时间。
书上的例子是通过一个Button按钮来计时,20秒后使计时停止。我觉得这个例子相对比较死板,所以就增添了一个EditText,这样,用户可以输入任意的秒数进行计时,并且在计时停止时给予用户“时间到!”的提示。
代码如下:
package com.example.chronometertest; import android.os.Bundle; import android.os.SystemClock; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.view.Menu; import android.view.View; import android.view.View.*; import android.widget.*; import android.widget.Chronometer.OnChronometerTickListener; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Chronometer ch=(Chronometer) findViewById(R.id.ch); Button start=(Button) findViewById(R.id.start); final EditText edtime=(EditText) findViewById(R.id.time); //定义一个AlertDialog.Builder对象 final Builder builder=new AlertDialog.Builder(this); start.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub //设置开始计时时间 ch.setBase(SystemClock.elapsedRealtime()); //启动开始计时 ch.start(); } }); ch.setOnChronometerTickListener(new OnChronometerTickListener(){//当计时器改变时触发该监听器 @Override public void onChronometerTick(Chronometer arg0) { // TODO Auto-generated method stub //获取输入的时间秒数 final int time=Integer.parseInt(edtime.getText().toString()); if(SystemClock.elapsedRealtime()-ch.getBase()>time*1000){ ch.stop(); builder.setTitle("提示").setMessage("时间到!").setPositiveButton("确定",null).show(); edtime.setText("");//将字段清空 } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }