简单的自定义倒计时按钮
2016-01-29 14:49
429 查看
简单的倒计时自定义控件
(注:做项目过程中少不了发送验证码的功能,以前写的时候我都是直接写在Activity里面的,将逻辑代码和业务代码混在了一起,实在是low的不行);最近做了个简单的自定义倒计时控件,是对TextView的简单封装,实现了将业务和逻辑分开,并对外提供了简单设置点击前后背景变化的接口)效果图如下:
代码比较简单:
<span style="font-size:14px;">public class CountDownButton extends TextView { private int mTotolTime = 60; private int mInterval = 1; private int mNormalColor=0xffffaacc;//默认正常颜色 private int mDownColor=0xff999999;//按下的颜色 private OnClickListener mClickListener; int temp; private CountDownTimer mCountDownTimer; public CountDownButton(Context context) { super(context); init(); } public CountDownButton(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setClickable(false); startCountDown(); // 从外部实现接口,可以处理点击事件等,要处理的逻辑,比如点击时调用发送验证码的接口;倒计时,读秒不可点击等事件控件本身已经实现。 if(mClickListener!=null){ mClickListener.onClick(v); } } }); } public void setClickListener(OnClickListener listener){ mClickListener=listener; } //设置总时长 public void setTotolTime(int totolTime) { mTotolTime = totolTime; setText(mTotolTime+"秒后重新发送"); temp=totolTime; } // 设置时间间隔 public void setInvertal(int invertal) { mInterval = invertal; } public void setNormalColor(int normalColor){ mNormalColor=normalColor; } public void setDownColor(int downColor){ mDownColor=downColor; } private void startCountDown() { temp=mTotolTime; if (mCountDownTimer == null) { mCountDownTimer = new CountDownTimer(mTotolTime*1000, mInterval*1000) { @Override public void onTick(long millisUntilFinished) { setText(--temp+"秒后重新发送"); setBackgroundColor(mDownColor); } @Override public void onFinish() { setText("重新发送"); setClickable(true); setBackgroundColor(mNormalColor); } }; } mCountDownTimer.start(); } }</span>
下面是源代码:
http://download.csdn.net/detail/themelove/9422257
相关文章推荐
- 最简单的观察者模式实现
- 3D旋转动画的自定义FlopView
- 3D动画实现游戏翻牌功能
- Android 之PopupWindow弹出下拉列表
- android eclipse 混淆jar代码
- Android监听程序进入后台,或者恢复到前台
- Android导入源文件没有自生成R.java和关于"@color"
- android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)
- Android — GestureDetector.OnGestureListener 详解
- android shape的使用
- 安卓的相机调用
- 使用Android studio添加assets目录
- android apk的更新下载
- Android应用 捕获应用崩溃的数据CrashHandler
- Android实现Button事件的处理
- Android 二维码扫码
- charter1 Android基础
- Android 第四天 (下午)
- Android系统服务-WindowManager
- Android 打造形形色色的进度条 实现可以如此简单