Chronometer控件实现的Android计时器
16lz
2021-12-04
本文为大家演示了如何使用Chronometer控件实现Android计时器的实例。
先贴上最终的实现效果图:
Android计时器实现思路
使用Chronometer控件实现计器的操作。通过设置setBase(long base)来设置初始时间,然后为其添加一个 setOnChronometerTickListener(Chronometer.OnChronometerTickListener l)事件来判断时间是否到了,然后再调用其stop()方法实现停止计时。
Android计时器实现代码
main.xml:
XML/HTML代码- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="@drawable/back"
- android:gravity="center"
- android:orientation="vertical">
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="10dip"
- android:orientation="horizontal">
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="4"
- android:gravity="center"
- android:text="设置时间:"/>
- <EditText
- android:id="@+id/edt_settime"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:inputType="number"/>
- </LinearLayout>
- <Chronometer
- android:id="@+id/chronometer"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:textColor="#ff0000"
- android:textSize="60dip"/>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="10dip"
- 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/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>
Activity代码:
Java代码- packagecom.jiahui.chronometer;
- importandroid.app.Activity;
- importandroid.app.AlertDialog;
- importandroid.app.Dialog;
- importandroid.content.DialogInterface;
- importandroid.os.Bundle;
- importandroid.os.SystemClock;
- importandroid.text.format.Time;
- importandroid.view.View;
- importandroid.widget.Button;
- importandroid.widget.Chronometer;
- importandroid.widget.EditText;
- publicclassChronometerDemoActivityextendsActivity{
- privateintstartTime=0;
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- finalChronometerchronometer=(Chronometer)findViewById(R.id.chronometer);
- ButtonbtnStart=(Button)findViewById(R.id.btnStart);
- ButtonbtnStop=(Button)findViewById(R.id.btnStop);
- ButtonbtnRest=(Button)findViewById(R.id.btnReset);
- finalEditTextedtSetTime=(EditText)findViewById(R.id.edt_settime);
- btnStart.setOnClickListener(newView.OnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- System.out.println("--开始记时---");
- Stringss=edtSetTime.getText().toString();
- if(!(ss.equals("")&&ss!=null)){
- startTime=Integer.parseInt(edtSetTime.getText()
- .toString());
- }
- //设置开始讲时时间
- chronometer.setBase(SystemClock.elapsedRealtime());
- //开始记时
- chronometer.start();
- }
- });
- btnStop.setOnClickListener(newView.OnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //停止
- chronometer.stop();
- }
- });
- //重置
- btnRest.setOnClickListener(newView.OnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- chronometer.setBase(SystemClock.elapsedRealtime());
- }
- });
- chronometer
- .setOnChronometerTickListener(newChronometer.OnChronometerTickListener(){
- @Override
- publicvoidonChronometerTick(Chronometerchronometer){
- //如果开始计时到现在超过了startime秒
- if(SystemClock.elapsedRealtime()
- -chronometer.getBase()>startTime*1000){
- chronometer.stop();
- //给用户提示
- showDialog();
- }
- }
- });
- }
- protectedvoidshowDialog(){
- AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
- builder.setIcon(R.drawable.eb28d25);
- builder.setTitle("警告").setMessage("时间到")
- .setPositiveButton("确定",newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- }
- });
- AlertDialogdialog=builder.create();
- dialog.show();
- }
- }
更多相关文章
- Android(安卓)ImageView实现上一页,下一页图片切换
- 安卓第三天---ViewPager控件实现滑动切换图片
- Android使用FFmpeg(三)--ffmpeg实现视频播放
- [android] PhoneGap 在 android 下的实现原理
- Animator记录一次属性动画实现的逐渐出现和逐渐消失的动画
- Android(安卓)kotlin上传头像实现
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
- Android基于PinnedSectionListView实现联系人通讯录
- Android实现九宫格