Android implementa la función de cuenta regresiva para el envío de códigos de verificación

Una página.xml

1. Escribir texto y controles de botones

            <EditText
                android:id="@+id/phoneVerify"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:layout_gravity="center"
                android:background="@null"
                android:lines="1"
                android:singleLine="true"
                android:gravity="start"
                android:maxLines="1"
                android:inputType="numberPassword"
                android:hint="请输入验证码"
                android:textSize="15sp" />
            <Button
                android:id="@+id/btn_phoneVerify"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="获取验证码"
                android:textColor="#fff"
                android:background="@drawable/verify_style"/>

2. Escribir páginas java

1. Obtenga la identificación del control y la identificación del botón en la página Actividad y configure el evento de clic de la identificación del botón

//获取id
btn_graphVerify = findViewById(R.id.btn_graphVerify);
//button的id的点击事件
btn_phoneVerify.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
        TimeCount helper = new TimeCount(this,60000,btn_phoneVerify);
        helper.start();
        //此方法为我公司点击获取短信验证码接口,这里可以添加自己公司的方法
        getverifyLogin(); 
}

2. Cree una nueva clase auxiliar TimeCount

public class TimeCount extends CountDownTimer {
    private static final int TIME_TASCK = 1000;
    private Button button;
    private Context context;
    public TimeCount(Context context, long millisInFuture, Button view) {
        super(millisInFuture, TIME_TASCK);
        button = view;
        this.context = context;
    }

    @Override
    public void onFinish() {// 计时完毕
        button.setTextColor(context.getResources().getColor(R.color.white));
        button.setBackgroundResource(R.drawable.verify_style);
        button.setText("再次获取");
        button.setClickable(true);
    }

    @Override
    public void onTick(long millisUntilFinished) {// 计时过程
        button.setTextColor(context.getResources().getColor(R.color.white));
        button.setClickable(false);//防止重复点击
        button.setBackgroundResource(R.drawable.unverify_style);
        button.setText(millisUntilFinished / TIME_TASCK+"秒后可重发");
    }
}

Supongo que te gusta

Origin blog.csdn.net/L73748196_/article/details/126042465
Recomendado
Clasificación