gpt4 book ai didi

java - 按钮倒计时 - Android

转载 作者:行者123 更新时间:2023-11-29 03:50:01 25 4
gpt4 key购买 nike

我想实现一个按下时倒计时的按钮。这个想法是允许用户取消按钮的激活。按下后,我希望按钮变为红色并显示“CANCEL (3)”和“CANCEL (0)”倒计时,如果再次按下,倒计时将停止,什么也不会发生。如果不取消,应用会在时间到后进入下一界面。有没有办法每秒更新按钮的文本(用于倒计时)并更改其功能?

谢谢

最佳答案

您可以在 Handler 上使用 postDelayed 稍后在 UI 线程上调用您的方法,以便更新 UI。

实际上已经有一篇非常好的文章介绍了如何在 Android 上完成此操作:http://developer.android.com/resources/articles/timed-ui-updates.html

您可以通过在 UI 线程上运行的代码中创建处理程序,或通过在 View (例如您的按钮本身)上调用 getHandler() 来获取处理程序。

我会提供一个例子,但链接的文章已经非常详细和清晰地提供了例子,所以我会遵从它。

编辑:这是对它的外观的粗略概述。我现在没有安装 Android SDK,所以我无法验证它是否有效。

public class CountdownButton extends Button {
private boolean isCounting = false;
private int count;

private final Runnable countdownRunnable = new Runnable() {
@Override
public void run() {
setText(Integer.toString(count));
if (count > 0) {
count--;
getHandler().postDelayed(countdownRunnable, 1000);
} else {
// count reached zero
isCounting = false;
setText("boom");
}
}
}

private final View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCounting) {
// stop counting
isCounting = false;
getHandler().removeCallbacks(countdownRunnable);
setText("cancelled");
} else {
// start counting
isCounting = true;
count = 10;
countdownRunnable.run();
}
}
}

public CountdownButton(Context context) {
super(context);
setOnClickListener(onClickListener);
}

public CountdownButton(Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(onClickListener);
}

public CountdownButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setOnClickListener(onClickListener);
}
}

时间可能并不完美(尤其是当有很多其他 CPU 工作正在进行时),但它应该足以满足您的目的。

关于java - 按钮倒计时 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com