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

2020-11-01 15:16:03 浏览数 (1)

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

MainActivity:

代码语言:javascript复制
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); 
} 
} 
} 
} 

布局文件:

代码语言:javascript复制
<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  

以上就是本文的全部内容,希望对大家的学习有所帮助。

0 人点赞