android實現計時器(轉)
阿新 • • 發佈:2021-06-18
新建佈局檔案activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btnOk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="開始計時" android:textSize="15dp" /> <TextView android:id="@+id/tvTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15dp" /> </LinearLayout>
新建MainActivity.java
package com.example.administrator.timer; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnOk; private TextView tvTime; private boolean bStart=false; private Handler mHander=new Handler(); private int mCount=0; private Runnable mCounter=new Runnable() { @Override public void run() { mCount++; tvTime.setText("當前計數值:"+mCount); mHander.postDelayed(this,1000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { btnOk = (Button) findViewById(R.id.btnOk); tvTime = (TextView) findViewById(R.id.tvTime); btnOk.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnOk: if (bStart==false){ btnOk.setText("停止計時"); mHander.post(mCounter); }else{ btnOk.setText("開始計時"); mHander.removeCallbacks(mCounter); } bStart=!bStart; break; } } }
發中經常利用Handler啟動任務。下面是Handler處理Runnable任務的常見方法說明:
●post: 立即啟動Runnable任務。
●postDelayed:延遲若干時間後啟動Runnable任務。
●postAtTime:在指定時間啟動Runnable任務。
●removeCallbacks: 移除指定的Runnable任務。
原文:https://www.cnblogs.com/ldy731729142/p/12608820.html