代码比较简单,不废话了。
xml布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dip" android:orientation="horizontal" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="设置时间" /> <EditText android:id="@+id/setTimeEdit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="10" android:ems="10" android:inputType="number" > <requestFocus /> </EditText> </LinearLayout> <Chronometer android:id="@+id/chronometer1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:textColor="#ff0000" android:textSize="60sp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btnStart" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="开始" /> <Button android:id="@+id/btnPC" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="暂停" /> <Button android:id="@+id/btnStop" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="停止" /> <Button android:id="@+id/btnReset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="重置" /> </LinearLayout> </LinearLayout>java代码:
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; 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; import android.widget.EditText; public class Test extends Activity implements OnClickListener { private int startTime = 0; private boolean PAUSE = false; //从开始到暂停的时间差 private long rangeTime; private Chronometer chronometer; private Button btnPC; private Button btnStart; private Button btnStop; private Button btnRest; private EditText edtSetTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_aa); initView(); chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) { // 如果开始计时到现在超过了startime秒 if (SystemClock.elapsedRealtime() - chronometer.getBase() > startTime * 1000) { chronometer.stop(); // 给用户提示 showDialog(); } } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnStart: rangeTime = 0; String ss = edtSetTime.getText().toString(); if (!(ss.equals("") && ss != null)) { startTime = Integer.parseInt(edtSetTime.getText().toString()); } // 设置开始计时时间 chronometer.setBase(SystemClock.elapsedRealtime()); // 开始记时 chronometer.start(); //开始按钮不可用 btnStart.setEnabled(false); btnPC.setEnabled(true); btnStop.setEnabled(true); btnRest.setEnabled(true); PAUSE=false; btnPC.setText("暂停"); break; case R.id.btnPC: //暂停计时 if (!PAUSE) { btnPC.setText("继续"); //从开始计时计时器运行的时间差。。。。。关键 rangeTime = SystemClock.elapsedRealtime() - chronometer.getBase(); chronometer.stop(); } else { //继续计时 btnPC.setText("暂停"); //设置计时器的基时间。。。。。关键 chronometer.setBase(SystemClock.elapsedRealtime() - rangeTime); chronometer.start(); } PAUSE = !PAUSE; break; case R.id.btnStop: chronometer.stop(); btnStart.setEnabled(true); PAUSE=false; btnPC.setText("暂停"); btnPC.setEnabled(false); break; case R.id.btnReset: chronometer.stop(); chronometer.setBase(SystemClock.elapsedRealtime()); btnStart.setEnabled(true); PAUSE=false; btnPC.setText("暂停"); btnPC.setEnabled(false); break; } } protected void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.mipmap.ic_launcher); builder.setTitle("警告").setMessage("时间到") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); AlertDialog dialog = builder.create(); dialog.show(); } private void initView() { chronometer = (Chronometer) findViewById(R.id.chronometer1); btnStart = (Button) findViewById(R.id.btnStart); btnPC = (Button) findViewById(R.id.btnPC); btnStop = (Button) findViewById(R.id.btnStop); btnRest = (Button) findViewById(R.id.btnReset); edtSetTime = (EditText) findViewById(R.id.setTimeEdit); btnStart.setOnClickListener(this); btnPC.setOnClickListener(this); btnStop.setOnClickListener(this); btnRest.setOnClickListener(this); btnPC.setEnabled(false); btnStop.setEnabled(false); btnRest.setEnabled(false); } }