Order:
Recently more and more apps are registered with mobile phone number, one for the convenience of user memory, the second is to increase the security of user accounts. We need to enter the SMS verification code when we are doing the trading operation or changing the password. This control will need to have a countdown function, here is the main summary of several common implementation methods.
The method of realizing the countdown in 1.Android the first kind: directly using handler's message mechanism to implement
This feeling is the most primitive, not much to say here.
The second type: Timer and TimerTask
Basic use: Get Timer and TimerTask object, then start, Countdown logic written in Handler
Private timer mtimer=new timer ();
Private TimerTask mtimertask= New TimerTask () {
@Override
public void Run () {
Mhandler.sendemptymessage (Counttime);
}
};
Countdown task Start
Mtimer.schedule (mtimertask, 0, Monetime);
Be aware of the release of resources here: emptying resources where appropriate
/*** Clear Time */
private void Cleartimer () {
if (mtimertask! = null) {
Mtimertask.cancel ();
Mtimertask = null;
}
if (Mtimer! = null) {
Mtimer.cancel ();
Mtimer = null;
}
}
Third: Use the native Countdown class directly from Android (also using handler)
Btngetverificationcode.setonclicklistener (New Onclicklistener () {
@Override
public void OnClick (View v) {
This is the native Countdown class, the first parameter is the total number of milliseconds, the second is the number of milliseconds to Countdown.
New Countdowntimer (10000, 1000) {
@Override
public void OnTick (long millisuntilfinished) {
The method in the countdown
Btngetverificationcode.setenabled (FALSE);
Btngetverificationcode.settext (millisuntilfinished/1000 + "SEC");
}
@Override
public void OnFinish () {
The method after the countdown is over
Btngetverificationcode.setenabled (TRUE);
Btngetverificationcode.settext ("Duplicate Access Verification Code");
}
}.start ();//How to start the countdown
}
});
This approach seems to be the simplest, but there are several obvious flaws:
1. The number of seconds displayed at the beginning of a countdown may not be accurate
2. The countdown process may be lost in one second
3. Countdown to the last display "1 seconds", then will be 1 seconds, not expected 0 seconds. The lag is only displayed after 1 seconds.
2. Mall Countdown Library
Here is a countdown library on GitHub: Commodity Countdown Library
3. Custom Countdown Control
To simplify the use of the countdown control, reference the commodity Countdown Library and write a custom control. The effect is as follows
The specific implementation principle is: Inherit TextView, re-Ontouch () method, use timer to Countdown.
4. Custom Countdown Control basic Use the first step: Add the control to the layout:
<android:id= "@+id/msgctv"
Android:layout_width= "Wrap_content"
Android:layout_gravity= "Center_horizontal"
android:layout_height= "Wrap_content"
android:padding= "16DP"/>
Step two: Join in the right place
Msgcounttimeview.isallowrun (TRUE);//Allow starting Countdown
Description of some APIs
counttimeview.settotaltime (10000);//Set total time in milliseconds
setinittext (" ")//Set the initialized text
setprefixruntext (" Code remaining Time ")//Set the text prefix of the runtime
setsuffixruntext (" ")//Set the suffix of the text at run time
setfinishtext (" code regain ")//text after set end
Settimecolor (color.bluelight);//sets the color of the run-time number of seconds
5. Source Address
Custom Countdown Control
Android Custom Countdown Control