当前位置:首页 » 安卓系统 » android倒计时实现

android倒计时实现

发布时间: 2022-10-25 11:59:14

Ⅰ android 倒计时器 设计

有三种实现方式:

第一种:通过Timer与TimerTask结合的方式进行实现
第二种:通过Handler与Message方式进行实现
第三种:通过CountdownTimer进行实现
示例
第一种:
timer.schele(task, 1000, 1000); // timeTask ,一秒执行一次,
TimerTask task = new TimerTask() {
@Override
public void run() {
}
}
第二种:
handler.sendMessageDelayed(message, 1000); //1秒后发送消息
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
if(recLen > 0){ //如果倒计时没到
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // 1秒后发送消息
}
}
super.handleMessage(msg);
}
};
第三种:
new CountdownTimer(30000, 1000) { //30秒倒计时,没秒执行一次
public void onTick(long millisUntilFinished) { //每秒执行一次进该方法
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() { //倒计时结束。
mTextField.setText("done!");
}
}.start();

Ⅱ Android倒计时怎么实现

有三种实现方式:

第一种:通过Timer与TimerTask结合的方式进行实现
第二种:通过Handler与Message方式进行实现
第三种:通过CountdownTimer进行实现
示例
第一种:
timer.schele(task, 1000, 1000); // timeTask ,一秒执行一次,
TimerTask task = new TimerTask() {
@Override
public void run() {
}
}
第二种:
handler.sendMessageDelayed(message, 1000); //1秒后发送消息
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
if(recLen > 0){ //如果倒计时没到
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // 1秒后发送消息
}
}
super.handleMessage(msg);
}
};
第三种:
new CountdownTimer(30000, 1000) { //30秒倒计时,没秒执行一次
public void onTick(long millisUntilFinished) { //每秒执行一次进该方法
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() { //倒计时结束。
mTextField.setText("done!");
}
}.start();

Ⅲ android中怎么实现倒计时怎么按照小时分钟

Android实现计时与倒计时的五种方法:

方法一
Handler与Message(不用TimerTask)

public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

Message message = handler.obtainMessage(1); // Message
handler.sendMessageDelayed(message, 1000);
}

final Handler handler = new Handler(){

public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
txtView.setText("" + recLen);

if(recLen > 0){
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // send message
}else{
txtView.setVisibility(View.GONE);
}
}

super.handleMessage(msg);
}
};
}
linux

方法二
Handler与Thread(不占用UI线程)

public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

new Thread(new MyThread()).start(); // start thread
}

final Handler handler = new Handler(){ // handle
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
recLen++;
txtView.setText("" + recLen);
}
super.handleMessage(msg);
}
};

public class MyThread implements Runnable{ // thread
@Override
public void run(){
while(true){
try{
Thread.sleep(1000); // sleep 1000ms
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}catch (Exception e) {
}
}
}
}
}

方法三
Timer与TimerTask(Java实现)

public class timerTask extends Activity{

private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

timer.schele(task, 1000, 1000); // timeTask
}

TimerTask task = new TimerTask() {
@Override
public void run() {

runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen--;
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
});
}
};
}
方法四
TimerTask与Handler(不用Timer的改进型)

public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

timer.schele(task, 1000, 1000); // timeTask
}

final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
}
};

TimerTask task = new TimerTask() {
@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}
方法五
Handler与Runnable(最简单型)

public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

handler.postDelayed(runnable, 1000);
}

Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
recLen++;
txtView.setText("" + recLen);
handler.postDelayed(this, 1000);
}
};
}
计时与倒计时

方法1,方法2和方法3,都是倒计时

方法4,方法5,都是计时

计时和倒计时,都可使用上述方法实现(代码稍加改动)

UI线程比较

方法1,方法2和方法3,都是在UI线程实现的计时;

方法4和方法5,是另开Runnable线程实现计时

实现方式比较

方法1,采用的是Java实现,即Timer和TimerTask方式;

其它四种方法,都采用了Handler消息处理

推荐使用

如果对UI线程交互要求不很高,可以选择方法2和方法3

如果考虑到UI线程阻塞,严重影响到用户体验,推荐使用方法4,另起线程单独用于计时和其它的逻辑处理

方法5,综合了前几种方法的优点,是最简的

热点内容
c语言稀疏矩阵转置矩阵 发布:2025-02-01 03:47:57 浏览:530
坦克世界挂机脚本有哪些 发布:2025-02-01 03:07:41 浏览:133
串口编程at 发布:2025-02-01 03:06:05 浏览:908
合资汽车配置有什么 发布:2025-02-01 02:56:07 浏览:78
wifi共享精灵源码 发布:2025-02-01 02:40:15 浏览:973
java软件怎么安装 发布:2025-02-01 02:40:09 浏览:549
河北税务局电子密码是什么 发布:2025-02-01 02:40:07 浏览:835
检查服务器设置是什么意思 发布:2025-02-01 02:31:26 浏览:185
神偷四第四章密码是多少 发布:2025-02-01 02:07:29 浏览:13
qq登录在哪个文件夹 发布:2025-02-01 01:57:59 浏览:627