首页 > 系统 > Android > 正文

Android使用CountDownTimer类实现倒计时闹钟

2019-10-22 18:16:17
字体:
来源:转载
供稿:网友

下面使用CountDownTimer类实现倒计时小闹钟,CountDownTimer类其实很简单,一般只需重写其onFinish和onTick方法就可以实现倒计时小闹钟,代码如下:

MainActivity:

package com.home.brewclock;  import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;  public class MainActivity extends Activity implements OnClickListener {   private Button addTimeBtn;   private Button decreaseTimeBtn;   private Button startBtn;   private Button closeMusicBtn;   private TextView timeText;    private int brewTime = 3;   private CountDownTimer countDownTimer;   private boolean isBrewing = false;   private MediaPlayer alarmMusic;    @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);      addTimeBtn = (Button) findViewById(R.id.main_btn_up);     decreaseTimeBtn = (Button) findViewById(R.id.main_btn_down);     startBtn = (Button) findViewById(R.id.main_start);     closeMusicBtn = (Button) findViewById(R.id.main_btn_close_music);     timeText = (TextView) findViewById(R.id.main_tv);     addTimeBtn.setOnClickListener(this);     decreaseTimeBtn.setOnClickListener(this);     startBtn.setOnClickListener(this);     closeMusicBtn.setOnClickListener(this);     setBrewTime(3);   }    /**    * 设置闹钟倒计时初始值    *    * @param minutes    */   public void setBrewTime(int minutes) {     if (isBrewing)       return;     brewTime = minutes;      if (brewTime < 1) {       brewTime = 1;     }     timeText.setText(String.valueOf(brewTime) + "m");   }    /**    * 开启闹钟    */   public void startBrew() {     // 创建一个CountDownTimer对象记录闹钟时间     countDownTimer = new CountDownTimer(brewTime * 60 * 1000, 1000) {       @Override       public void onTick(long millisUntilFinished) {         timeText.setText(String.valueOf(millisUntilFinished / 1000)             + "s");       }        @Override       public void onFinish() {         isBrewing = false;         timeText.setText(brewTime + "m");         startBtn.setText("Start");         // 加载指定音乐,并为之创建MediaPlayer对象         alarmMusic = MediaPlayer.create(MainActivity.this, R.raw.music);         // 设置为循环播放         alarmMusic.setLooping(true);         // 播放音乐         alarmMusic.start();         closeMusicBtn.setVisibility(0);       }     };     countDownTimer.start();     startBtn.setText("Stop");     isBrewing = true;   }    /**    * 停止计时    */   public void stopBrew() {     if (countDownTimer != null) {       countDownTimer.cancel();     }     isBrewing = false;     startBtn.setText("Start");   }    @Override   public void onClick(View v) {     if (v == addTimeBtn) {       setBrewTime(brewTime + 1);     } else if (v == decreaseTimeBtn) {       setBrewTime(brewTime - 1);     } else if (v == startBtn) {       if (isBrewing) {         stopBrew();       } else {         startBrew();       }     } else if (v == closeMusicBtn) {       if (alarmMusic != null) {         alarmMusic.stop();         closeMusicBtn.setVisibility(8);       }     }   } } 

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"   android:layout_height="match_parent" >    <Button     android:id="@+id/main_btn_close_music"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="关闭音乐"     android:visibility="gone" />    <LinearLayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_centerInParent="true"     android:gravity="center"     android:orientation="horizontal" >      <Button       android:id="@+id/main_btn_down"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="-"       android:textSize="40dp" />      <TextView       android:id="@+id/main_tv"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:padding="10dp"       android:text="0:00"       android:textSize="40dp" />      <Button       android:id="@+id/main_btn_up"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="+"       android:textSize="40dp" />   </LinearLayout>    <Button     android:id="@+id/main_start"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_alignParentBottom="true"     android:text="Start" />  </RelativeLayout> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表