虽然大家倒计时功能可以用handler等多线程功能来完成,但未免有点繁琐,所有今天的功能可以简化大家的代码,实现你所需要的功能。
如果不知道怎么配置XUI框架的,可以看我一篇博客配置XUI框架
过程还算详细,如果有什么问题可以问我。还是一样的,建议测试的时候自己先新建一个页面,或者项目,避免发生其他因素而导致实现结果不了。
首先看一下效果吧,因为缩短时间,所有设置为5s:
第一步:配置XUI框架。
配置环境的博客在配置XUI框架,这里就不细说了,不会可以去看一下,过程还算详细,不懂可以问我,我们一起讨论。
配置完成后我们进行第二步
第二步:编写倒计时Buton的xml页面。
代码如下:
<com.xuexiang.xui.widget.button.CountDownButton
android:id="@+id/bt_countdown4"
style="@style/Button.Blue"
android:layout_marginStart="107dp"
android:layout_marginTop="188dp"
android:text="获取验证码"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
代码解析:
如果你想了解更多属性,可以看XUI框架之Button,下面是属性截图:
第三步:获取Button的值。
虽然上面我们可以实现Button的特效功能,但是只有皮,没有肉也是没有什么用的。例如我们获取验证码,有时间的话就说一下怎么用mob平台获取验证码。
代码如下:
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.xuexiang.xui.utils.CountDownButtonHelper;
import com.xuexiang.xui.widget.button.CountDownButton;
public class Main2Activity extends AppCompatActivity {
private CountDownButton button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
button=findViewById(R.id.bt_countdown4);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(Main2Activity.this,button.getText().toString(), Toast.LENGTH_SHORT).show();
final CountDownButtonHelper countDownButtonHelper=new CountDownButtonHelper(button,60,10);
//CountDownButtonHelper的三个属性 需要显示倒计时的Button,countDownTime 需要进行倒计时的最大值,单位是秒。 interval time获取倒计时倒计时的间隔,单位是秒
countDownButtonHelper.start(); //开始倒计时
countDownButtonHelper.setOnCountDownListener(new CountDownButtonHelper.OnCountDownListener() {
@Override
public void onCountDown(int time) {
Toast.makeText(Main2Activity.this,button.getText().toString(),Toast.LENGTH_SHORT).show();
}
@Override
public void onFinished() {
countDownButtonHelper.cancel(); //取消倒计时
countDownButtonHelper.recycle(); //资源回收
button.setText("重试"); //倒计时结束后设置为重置
Toast.makeText(Main2Activity.this,"finish",Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
代码还是比较简单,如果不懂的话,可以按住ctrl键进入调用代码所在页面,XUI的作者在里面有详细的解析。
更多关于XUI框架的知识:
XUI框架实现自带的tablayout(TabBar指示器)+viewpage实现页面切换?
XUI框架实现比原生框架更好看并且功能更齐全的EditText框?,以及如何获取EditText的值?
XUI框架之FlowTagLayout流标签的使用,实现原生android没有的功能?
持续更新中。。。