Android开发:验证码倒计时功能实现
来源:互联网 发布:it绩效考核 编辑:程序博客网 时间:2024/06/05 03:21
前言
现在好多个APP里面都有验证码倒计时按钮,实现方式大概有下面几种:
- 1.使用线程和Handler的方式,定时刷新倒计时数字,这种方式容易导致内存泄露,所以一般都使用弱引用,控制数字的刷新。
- 2、自定义倒计时按钮
- 3、使用Android提供的CountDownTimer结合TextView实现倒计时功能
这篇主要就是说下用第三种方式实现,简单好用
效果图
实现
以下是核心代码:
/** * Created by hfs on 2017/5/9. */public class TimeCount extends CountDownTimer { private Button button; private String tickText; private String finishText; /** * @param millisInFuture 倒计时总时长 * @param countDownInterval 倒计时单位 毫秒. */ public TimeCount(long millisInFuture, long countDownInterval, Button button,String tickText,String finishText) { super(millisInFuture, countDownInterval); this.button = button; this.tickText=tickText; this.finishText=finishText; } @Override public void onTick(long millisUntilFinished) { button.setText(millisUntilFinished / 1000 + tickText); button.setEnabled(false); } @Override public void onFinish() { button.setEnabled(true); button.setText(finishText); }}
我自己又简单的封装成了一个自定义的Button,以后直接用着个自定义的Button即可
/** * Created by hfs on 2017/5/9. */public class CountDownButton extends Button { private TimeCount mTimeCount; private long millisInFuture = 60000; private long countDownInterval = 1000; private String mTickText = "s后重新获取"; private String mFinishText = "重新获取"; public CountDownButton(Context context) { super(context); init(context); } public CountDownButton(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private void init(Context context) { } /** * 设置倒计时多少毫秒结束 * 默认60秒 * * @param millisInFuture 毫秒 */ public void setMillisInFuture(long millisInFuture) { this.millisInFuture = millisInFuture; } /** * 设置倒计时间隔 * 默认1秒 * * @param countDownInterval 倒计时间隔 */ public void setCountDownInterval(long countDownInterval) { this.countDownInterval = countDownInterval; } /** * 设置倒计时过程中button显示内容 * @param text 默认 s后重新获取 */ public void setOnTickText(String text) { this.mTickText=text; } /** * 设置倒计时结束button显示内容 * @param finishText 默认 重新获取 */ public void setOnFinishText(String finishText){ this.mFinishText=finishText; } public void startCount() { mTimeCount = new TimeCount(millisInFuture, countDownInterval, this, mTickText, mFinishText); mTimeCount.start(); }}
使用方法很简单,就几行代码即可:
public class MainActivity extends AppCompatActivity { private CountDownButton mCountDownButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mCountDownButton = (CountDownButton) findViewById(R.id.btn_count_down); mCountDownButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mCountDownButton.startCount(); } }); }}
项目源码:https://github.com/Greathfs/CountDownButton
4 0
- Android开发:验证码倒计时功能实现
- Android验证码倒计时功能实现
- Android 验证码倒计时功能的实现
- Android 验证码倒计时功能
- android短信验证码功能实现,包含按钮倒计时操作
- Android实现获取验证码的倒计时功能
- Android实现获取验证码的倒计时功能
- Android实现获取验证码的倒计时功能
- Android实现获取验证码的倒计时功能
- Android获取验证码倒计时功能(CountDownTimer实现)
- Android获取验证码倒计时功能(Timer实现)
- 实现 发送验证码的倒计时功能
- Handler实现验证码获取倒计时功能
- 实现获取验证码倒计时功能
- iOS - 实现验证码倒计时功能
- Ionic Angular 实现验证码倒计时功能
- React Native实现验证码倒计时功能
- android获取验证码倒计时功能
- JSON的总结
- 学习Linux命令(5)
- docker(2)
- 项目分析
- android:登陆界面
- Android开发:验证码倒计时功能实现
- [Java EE] 在JavaServer Faces中使用HTML5中的日期控件
- 遍历二叉树
- HDU1108最小公倍数 水题
- 单例模式(总结)
- HDU4081 Qin Shi Huang's National Road System
- android百度地图开发——定位sdk
- css:默认的checkbox、input、radio太丑了?手把手教你改变使用纯css3改写的带动画的默认样式
- Winfrom异步更新UI