Android 实现计时器功能,如何在android中使用handler实现一个倒计时功能

如何在android中使用handler实现一个倒计时功能

发布时间:2020-11-25 15:22:57

来源:亿速云

阅读:145

作者:Leah

如何在android中使用handler实现一个倒计时功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

xml

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">

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent" />

java

package com.tcy.handlertest;

import androidx.annotation.NonNull;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.TextView;

import java.lang.ref.WeakReference;

public class MainActivity extends AppCompatActivity {

/**

* 倒计时标记handler code

*/

public static final int COUNT_DOWN_CODE = 10001;

/**

* 倒计时最大值

*/

public static final int MAX_COUNT = 10;

/**

* 倒计时间隔

*/

public static final int DELAY_MILLIS = 1000;

TextView textView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView = findViewById(R.id.text);

CountdownTimeHandler handler = new CountdownTimeHandler(this);

Message message = Message.obtain();

message.what = COUNT_DOWN_CODE;

message.arg1 = MAX_COUNT;

handler.sendMessageDelayed(message, DELAY_MILLIS);

}

public static class CountdownTimeHandler extends Handler {

//弱引用加在上下文上面

final WeakReference weakReference;

//这个方法要改一下,这样就能直接传进来上下文

public CountdownTimeHandler(MainActivity activity) {

this.weakReference = new WeakReference<>(activity);

}

@Override

public void handleMessage(@NonNull Message msg) {

super.handleMessage(msg);

//得到上下文

MainActivity activity = weakReference.get();

switch (msg.what) {

case COUNT_DOWN_CODE:

int value = msg.arg1;

activity.textView.setText(String.valueOf(value--));

if (value >= 0) {

//再把value发出去

Message message = Message.obtain();

message.what = COUNT_DOWN_CODE;

message.arg1 = value;

sendMessageDelayed(message, DELAY_MILLIS);

}

break;

}

}

}

}

看完上述内容,你们掌握如何在android中使用handler实现一个倒计时功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值