手機直播原始碼,驗證碼自動讀秒倒數計時

zhibo系統開發發表於2022-03-08

手機直播原始碼,驗證碼自動讀秒倒數計時實現的相關程式碼

一、CountDownTimer類介紹

CountDownTimer類是一個抽象類,需要寫一個子類來繼承,如:

class TimeCount extends CountDownTimer {
 
        public TimeCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
 
        @Override
        public void onTick(long millisUntilFinished) {
            mSend.setBackgroundColor(Color.parseColor("#B6B6D8"));
            mSend.setClickable(false);
            mSend.setText(millisUntilFinished / 1000 + " 秒後可重新傳送");
        }
 
        @Override
        public void onFinish() {
            mSend.setText("重新獲取驗證碼");
            mSend.setClickable(true);
            mSend.setBackgroundColor(Color.parseColor("#4EB84A"));
 
        }
    }

其中在構造方法中,引數millisInFuture代表設定倒數計時的總時間(毫秒),引數countDownInterval代表設定每次減去的時間(毫秒)。onTick()方法是進行倒數計時的時候開始執行的,onFinish()方法是倒數計時結束之後執行的。

另外,CountDownTimer類還有start()和cancle()兩個方法,呼叫start()方法會開始倒數計時,呼叫cancle()方法取消當前任務。

二、實現倒數計時按鈕

    
private TimeCount time;
private Button mSend;
@Override
    protected void onCreateView(Bundle savedInstanceState) {
        super.onCreateView(savedInstanceState);
        setContentView(R.layout.fragment_phone);
        mSend = (Button) findViewById(R.id.btn_send);
        time = new TimeCount(60000, 1000);
        mSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                phone = mEtPhone.getText().toString();
                if (TextUtils.isEmpty(phone)) {
                    CustomToast.showShortError(getApplicationContext(), "請輸入賬號");
                    return;
                }
                if (!CheckUtil.isPhoneLegal(phone)) {
                    CustomToast.showShortError(getApplicationContext(), "手機格式不合法");
                    return;
                }
                //傳送請求
                LoginHttpClient.getClient().sms(getApplicationContext(), phone, Constants.SMS_TYPE_MESSAGE, mScene, new ResponseListener<ResponseInfo>() {
                    @Override
                    public void onSuccess(ResponseInfo info) {
                        switch (info.errno) {
                            case Errno.OK:
                                Bundle bundle = new Bundle();
                                bundle.putString(Constants.BUNDLE_KEY_PHONE, phone);
                                bundle.putInt(Constants.BUNDLE_KEY_SCENE, mScene);
                                CustomToast.showShortComplete(getApplicationContext(), "簡訊驗證碼已傳送");
                                //開啟倒數計時
                                time.start();
                                break;
                            case Errno.ACCOUNT_NOT_EXISTS:
                                CustomToast.showShortError(getApplicationContext(), "該使用者未註冊");
                                break;
                            default:
                                CustomToast.showShortError(getApplicationContext(), info.msg);
                                break;
                        }
                    }
 
                    @Override
                    public void onFail(Throwable throwable) {
                        CustomToast.showShortError(getApplicationContext(), "請稍後重試");
                    }
                });
 
            }
        });
 @Override
    public void onDestroy() {
        time.cancel();
        super.onDestroy();
    }


    當傳送請求時呼叫time.start()方法,開始倒數計時60秒,並執行onTick()方法,改變button的樣式,60秒倒數計時結束的時候呼叫onFinish()方法。注意:不呼叫time.start()方法的話是不會開啟倒數計時的。在銷燬activity的時候,呼叫cancle()方法,以防止記憶體洩漏和出現如空指標等異常。

以上就是 手機直播原始碼,驗證碼自動讀秒倒數計時實現的相關程式碼,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2867393/,如需轉載,請註明出處,否則將追究法律責任。

相關文章