android 计时器
<?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: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/btntimeopp" 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>
package com.example.yanlei.yl; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Chronometer; import android.widget.EditText; public class MainActivity extends AppCompatActivity { // 设置初始时间 private int startTime = 0; // 声明计时器Chronomete对象 private Chronometer chronometer; // 定义计时器操作按钮 private Button btnOperate; // 定义计时器重置按钮 private Button btnRest; // 定义到达时间的edittext private EditText edtSetTime; // 开始boolOperate=true,停止boolOperate=false private Boolean boolOperate = true; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 得到布局中的所有对象 findView(); // 设置对象的监听器 setListener(); } // 得到布局中的所有对象 private void findView() { // TODO Auto-generated method stub chronometer = (Chronometer) findViewById(R.id.chronometer); btnOperate = (Button) findViewById(R.id.btntimeopp); btnRest = (Button) findViewById(R.id.btnReset); edtSetTime = (EditText) findViewById(R.id.edt_settime); } // 得到布局中的所有对象 private void setListener() { // TODO Auto-generated method stub btnRest.setOnClickListener(listener); btnOperate.setOnClickListener(listener); chronometer .setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) { // 如果开始计时到现在超过了startime秒 if (SystemClock.elapsedRealtime() - chronometer.getBase() > startTime * 1000) { // 计时器停止 chronometer.stop(); // 给用户提示 showDialog(); } } }); } OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { // 开始按钮 case R.id.btntimeopp: // 如果boolOperate==true,说明计时开始 if (boolOperate) { String ss = edtSetTime.getText().toString(); // 把到达时间转化为Int类型 if (!(ss.equals("") && ss != null)) { startTime = Integer.parseInt(edtSetTime.getText() .toString()); } // 设置开始时间 chronometer.setBase(SystemClock.elapsedRealtime()); // 开始记时 chronometer.start(); boolOperate = false; // eidttext不可点 edtSetTime.setClickable(false); btnOperate.setText("点击停止"); } // 如果boolOperate==false,说明计时结束 else { // 计时停止 chronometer.stop(); boolOperate = true; // eidttex可点 edtSetTime.setClickable(true); btnOperate.setText("点击开始"); } break; // 重置按钮 case R.id.btnReset: chronometer.setBase(SystemClock.elapsedRealtime()); break; default: break; } } }; protected void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("闫磊温馨提醒你").setMessage("设置:"+startTime+"秒,时间到了") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); AlertDialog dialog = builder.create(); dialog.show(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2013-12-01 认识一个人靠缘分;了解一个人靠耐心;征服一个人靠智慧;处好一个人靠包容。人,相互帮扶才感到温暖;事,共同努力才感到简单;路,有伴同行才感到平坦;友,相互牵挂才感到情深。坚持与人为善,不遗余力地成就他人,也将在不知不觉中成就自己。一人亦人,众人为天;谍事在人,成事在天。