這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在Android中利用控件實(shí)現(xiàn)一個(gè)驗(yàn)證碼倒計(jì)時(shí)功能,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了羅城免費(fèi)建站歡迎大家使用!
使用方式
CountDownM cdmIdentifyingCode = (CountDownM) findViewById(R.id.cdm_identifying_code); if (cdmIdentifyingCode != null) { cdmIdentifyingCode.setOnClickListener(new CountDownM.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(CountDownMTestActivity.this, "驗(yàn)證碼發(fā)送成功", Toast.LENGTH_SHORT).show(); } }); }
以上幾行代碼即可實(shí)現(xiàn)倒計(jì)時(shí)的功能,這里面我們可以設(shè)置背景色以及倒計(jì)時(shí)的總時(shí)長(zhǎng)。
實(shí)現(xiàn)方法
/** * Created by landptf on 2017/03/15. * 獲取驗(yàn)證碼倒計(jì)時(shí)控件 */ public class CountDownM extends ButtonM { private OnClickListener onClickListener = null; private CountDownTimer countDownTimer; /** * 倒計(jì)時(shí)總時(shí)長(zhǎng) */ private int countDownSeconds = 60; /** * 按鈕的背景色 */ private int backColor = 0; public interface OnClickListener{ void onClick(View v); } public CountDownM(Context context) { this(context, null); } public CountDownM(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CountDownM(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.countDownM, defStyle, 0); if (a != null) { //設(shè)置背景色 ColorStateList colorList = a.getColorStateList(R.styleable.countDownM_backColor); if (colorList != null) { backColor = colorList.getColorForState(getDrawableState(), 0); if (backColor != 0) { setBackColor(backColor); } } else { setBackColor(getResources().getColor(R.color.mainColor)); } //獲取倒計(jì)時(shí)總時(shí)長(zhǎng) int countDownSeconds = a.getInteger(R.styleable.countDownM_countDownSeconds, 60); setCountDownSeconds(countDownSeconds); a.recycle(); } //設(shè)置文字顏色 setTextColor(getResources().getColor(android.R.color.white)); //設(shè)置位置相關(guān)屬性 setGravity(Gravity.CENTER); setPadding(ConvertM.dp2px(context, 8), 0, ConvertM.dp2px(context, 8), 0); setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onClickListener != null) { onClickListener.onClick(v); } //點(diǎn)擊后開(kāi)始計(jì)時(shí) start(); } }); } /** * 設(shè)置倒計(jì)時(shí)總時(shí)長(zhǎng) * @param countDownSeconds */ public void setCountDownSeconds(int countDownSeconds){ this.countDownSeconds = countDownSeconds; } /** * 設(shè)置背景色 * @param backColor */ @Override public void setBackColor(int backColor) { this.backColor = backColor; super.setBackColor(backColor); } /** * 停止倒計(jì)時(shí) */ public void stop(){ countDownTimer.cancel(); resetButton(); } public void setOnClickListener(OnClickListener l){ this.onClickListener = l; } private void start(){ setEnabled(false);//設(shè)置不能點(diǎn)擊 countDownTimer = new CountDownTimer(countDownSeconds * 1000, 1000) { @Override public void onTick(long millisUntilFinished) { setText(millisUntilFinished / 1000 + getResources().getString(R.string.count_down_m_recapture_after));//設(shè)置倒計(jì)時(shí)時(shí)間 //設(shè)置按鈕為灰色,這時(shí)是不能點(diǎn)擊的 CountDownM.super.setBackColor(Color.GRAY); Spannable span = new SpannableString(getText().toString());//獲取按鈕的文字 span.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//講倒計(jì)時(shí)時(shí)間顯示為紅色 setText(span); } @Override public void onFinish() { resetButton(); } }; countDownTimer.start(); } private void resetButton(){ setText(getResources().getString(R.string.count_down_m_recapture)); setEnabled(true);//重新獲得點(diǎn)擊 if (backColor != 0) { setBackColor(backColor);//還原背景色 } else { setBackColor(getResources().getColor(R.color.mainColor));//還原背景色 } } }
上述就是小編為大家分享的怎么在Android中利用控件實(shí)現(xiàn)一個(gè)驗(yàn)證碼倒計(jì)時(shí)功能了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。