实用技巧——获取验证码的倒计时
2016-05-12 16:45
302 查看
实用技巧——获取验证码的倒计时
效果图
源码:GitHub
CountDownTimer
创建对象,调用start的方法,开始倒计时/** * 第一个参数:总时长(毫秒) * 第二个参数:多久执行一次回调(毫秒) */ new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { // TODO 显示倒计时 } @Override public void onFinish() { // TODO 倒计时结束 } }.start();
封装
package kong.qingwei.countdowntimerdemo; import android.os.CountDownTimer; import android.widget.Button; /** * Created by kqw on 2016/5/11. * TimeCountUtil */ public class TimeCountUtil extends CountDownTimer { private Button mButton; public TimeCountUtil(Button button, long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); this.mButton = button; } @Override public void onTick(long millisUntilFinished) { // 按钮不可用 mButton.setEnabled(false); String showText = millisUntilFinished / 1000 + "秒后可重新发送"; mButton.setText(showText); } @Override public void onFinish() { // 按钮设置可用 mButton.setEnabled(true); mButton.setText("重新获取验证码"); } }
Code(参考)
测试类
package kong.qingwei.countdowntimerdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button mButton; private TimeCountUtil mTimeCountUtil; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button) findViewById(R.id.button); mTimeCountUtil = new TimeCountUtil(mButton, 5000, 1000); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mTimeCountUtil.start(); // TODO 请求验证码 Toast.makeText(getApplicationContext(), "请求验证码", Toast.LENGTH_SHORT).show(); } }); } }
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="kong.qingwei.countdowntimerdemo.MainActivity"> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/selector_button" android:text="点击发送验证码"/> </RelativeLayout>
drawable
selector_button.xml<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 可用状态 --> <item android:drawable="@drawable/shape_button_type1" android:state_enabled="true" /> <!-- 不可用状态 --> <item android:drawable="@drawable/shape_button_type2" android:state_enabled="false" /> </selector>
shape_button_type1.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF4583C9"/> <corners android:radius="5dp"/> <stroke android:width="1px" android:color="#FF4583C9" /> </shape>
shape_button_type2.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFDDDDDD"/> <corners android:radius="5dp"/> <stroke android:width="1px" android:color="#FFDDDDDD" /> </shape>
相关文章推荐
- java自动生成验证码插件-kaptcha
- Delphi实现毫秒级别的倒计时实例代码
- javascript 宝宝出生倒计时实现代码
- 如何识别高级的验证码的技术总结第1/4页
- C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
- 详解C#中的定时器Timer类及其垃圾回收机制
- C#使用timer实现的简单闹钟程序
- C#中timer定时器用法实例
- C#自定义基于控制台的Timer实例
- android倒计时控件示例
- C#中的Timer和DispatcherTimer使用实例
- PHP 验证码不显示只有一个小红叉的解决方法
- php实现的Timer页面运行时间监测类
- .NET中的Timer类型用法详解
- C#基于TimeSpan实现倒计时效果的方法
- asp汉字中文图片验证码
- asp.net生成字母和数字混合图形验证码
- PHP实现简单汉字验证码
- php生成动态验证码gif图片
- php生成验证码函数