前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android使用CountDownTimer类实现倒计时闹钟

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

作者头像
砸漏
发布2020-11-01 15:16:03
7140
发布2020-11-01 15:16:03
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

下面使用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  

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档