Android 4.0以上简单实现倒计时按钮
2015-08-13 14:50
465 查看
前几天需求要做一个倒计时的按钮。网上找了一堆,都是没有关键部分的代码,看的人也云里雾里的,索性自己写一个。因为是现在只考虑4.0以上的系统,后来干脆想到通过ValueAnimator 去实现,代码相当简洁。就直接上核心代码,继承自Button按钮。
public class CountDownButton extends Button {
public CountDownButton(Context context) {
super(context);
}
public CountDownButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void startCountDown(int Time, final String title) {
ValueAnimator animator = ValueAnimator.ofInt(Time, 0);
animator.setInterpolator(new LinearInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Integer integer = (Integer) animation.getAnimatedValue();
setText(String.valueOf(integer) + title);
if (integer == 0 && null != countFinish) {
countFinish.onFinish();
}
}
});
animator.setDuration(Time * 1000);
animator.start();
}
private CountFinish countFinish;
public void setCountFinish(CountFinish countFinish) {
this.countFinish = countFinish;
}
/**
*
* CopyRight (c)2015:
*
* @ClassName: CountFinish
* @Description: 倒计时结束时会触发的回调接口
* @author Hankun
* @date 2015年7月7日 下午5:49:35
*
*/
public interface CountFinish {
/**
*
* @Title: onFinish
* @Description: 倒计时结束时回调该方法
*
* @return void
*
*/
void onFinish();
}
代码相当简单,继承自Button 方便使用,startCountDown 在这里设置显示的内容和 倒计时的时间,setCountFinish 这里倒计时完成后会调用。使用起来非常方便。如果在倒计时的阶段不允许点击,只要设置一个boolean变量去控制下事件的触发就可以,相当便捷
public class CountDownButton extends Button {
public CountDownButton(Context context) {
super(context);
}
public CountDownButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void startCountDown(int Time, final String title) {
ValueAnimator animator = ValueAnimator.ofInt(Time, 0);
animator.setInterpolator(new LinearInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Integer integer = (Integer) animation.getAnimatedValue();
setText(String.valueOf(integer) + title);
if (integer == 0 && null != countFinish) {
countFinish.onFinish();
}
}
});
animator.setDuration(Time * 1000);
animator.start();
}
private CountFinish countFinish;
public void setCountFinish(CountFinish countFinish) {
this.countFinish = countFinish;
}
/**
*
* CopyRight (c)2015:
*
* @ClassName: CountFinish
* @Description: 倒计时结束时会触发的回调接口
* @author Hankun
* @date 2015年7月7日 下午5:49:35
*
*/
public interface CountFinish {
/**
*
* @Title: onFinish
* @Description: 倒计时结束时回调该方法
*
* @return void
*
*/
void onFinish();
}
代码相当简单,继承自Button 方便使用,startCountDown 在这里设置显示的内容和 倒计时的时间,setCountFinish 这里倒计时完成后会调用。使用起来非常方便。如果在倒计时的阶段不允许点击,只要设置一个boolean变量去控制下事件的触发就可以,相当便捷
相关文章推荐
- 【Android进阶】(2)使用开源框架Volley
- android通知栏的实现
- Android相对布局
- Android Binder设计原理
- 【转】android 5.0 64bit系统加载库文件失败问题浅析
- Android ViewDragHelper完全解析 自定义ViewGroup神器
- android--解--它们的定义tabhost(动态添加的选项+用自己的主动性横向滑动标签+手势切换标签页和内容特征)
- Android布局问题基本理解
- android: 横竖屏切换总结-布局改变和数据保存
- android短信验证码功能实现,包含按钮倒计时操作
- Ionic开发时,默认样式android和ios的一些不同
- 安卓设置自定义字体的解决方案
- Android service的全面总结
- Android Context 是什么?
- Android初体验
- Android Studio Tips -- 布局预览
- Android studio 下的 NDK 配置方法和注意事项
- android 自定义水平和圆形progressbar 只定义一些style就可以
- Android终止无限循环线程和程序退出时销毁线程
- Android终止无限循环线程和程序退出时销毁线程