android2.2 倒计时程序eclipse,Android倒计时控件
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
Android倒计时控件,通常在发送验证码时用得最多。其实Android系统提供了一个倒计时控件叫做CountDownTimer,不过这个控件没有与接口控件绑定,在这里,我要讲述的是如何自己写一个倒计时的控件。
源码
首先放上CountDownButton的源码
/**
* CountDownButton used for send phone verify code etc.
*
* @author Jamling
*/
public class CountDownButton extends RoundButton {
private long totalTime = 60 * 1000;// 默认60秒
private String label = "秒后重发";
private long time;
private long step = 1000;
private int interval = 1000;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
time -= step;
if (time <= 0) {
reset();
}
else {
refreshText();
mHandler.sendEmptyMessageDelayed(0, step);
}
}
};
public CountDownButton(Context context) {
this(context, null);
}
public CountDownButton(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
private void init(Context context, AttributeSet attrs) {
setHintTextColor(getTextColors());
}
public void start() {
this.setEnabled(false);
this.time = totalTime;
refreshText();
mHandler.sendEmptyMessageDelayed(0, step);
}
private void refreshText() {
long t = (time / interval);
if (t > 0) {
this.setText(t + label);
}
}
public void reset() {
setText(null);
setEnabled(true);
}
/**
* Set count down total time
*
* setTotalTime(30000);// 30s
*
*
* @param totalTime
*
* @return CountDownButton self
*/
public CountDownButton setTotalTime(long totalTime) {
this.totalTime = totalTime;
return this;
}
/**
* Set count down step
*
* setStep(1000);// 1s
*
*
* @param step count down step, micro seconds
*
* @return CountDownButton self
*/
public CountDownButton setStep(long step) {
if (step > 0) {
this.step = step;
}
return this;
}
/**
* Set count down text refresh interval.
*
* setInterval(1000);//1s, text display: (getRemainingTime() / interval) + label
*
*
* @param interval count down text refresh interval, micro seconds
*
* @return CountDownButton self
*/
public CountDownButton setInterval(int interval) {
if (interval > 0) {
this.interval = interval;
}
return this;
}
public long getRemainingTime() {
return time;
}
public long getStep() {
return step;
}
}
实现相对简单,通过Handler的sendEmptyMessageDelayed来定时发送消息,实现计时并更新接口,当然,也可以通过Timer来实现,不过因为Android UI线程的限制,不如使用Handler来得简洁。CountDownButton向外暴露设置step 步长,totalTime总计时等方法。
布局
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/black_333333"
android:hint="点击发送验证码"
android:padding="8dp"
android:radius="8dp"
android:textColor="@color/white"
android:textSize="14sp"
app:borderColor="@color/black_alpha_60"
app:borderWidth="0dp"
android:layout_marginTop="20dp" />
Activity中使用
myBtn2 = (CountDownButton) btn2;
// btn2 text: enable: white; normal: gray
ColorStateList csl2 = new ColorStateList(new int[][]{{android.R.attr.state_enabled}, {}},
new int[]{0xffffffff, 0xffcccccc});
myBtn2.setTextColor(csl2);
myBtn2.setTotalTime(10000);
// btn2 bg
int r = AppUtils.dp2px(this, 4);
RoundedColorDrawable normal = new RoundedColorDrawable(r, AppUtils.getColor(this, R.color.black_333333));
normal.addStateColor(new int[]{android.R.attr.state_enabled, android.R.attr.state_window_focused}, AppUtils
.getColor(this, R.color.colorPrimary)).applyTo(myBtn2);
当CountDownButton开时计时时,它将进入disable状态(不可点击),button的外观也随之变化,当计时结束后,button恢复原来的状态。
示例代码中的button样式与状态,都是通过代码控制的。详细可以查看本站另一篇文章:Android使用代码来实现StateListDrawable
计时开始代码:
@Override
public void onClick(View v) {
if (v == myBtn2) {
myBtn2.start();
return;
}
super.onClick(v);
}
关于
QuickAF 是一个Android平台上的app快速开发框架,欢迎读者在github star或fork。本人写作水平有限,欢迎广大读者指正,如有问题,可与我直接联系或在我的官方博客中给出评论。
参考
android2.2 倒计时程序eclipse,Android倒计时控件相关推荐
- Android开源控件收集整理
一 .基本控件 TextView HTextView 一款支持TextView文字动画效果的Android组件库.GitHub - hanks-zyh/HTextView: Animation eff ...
- Android 开源控件与常用开发框架开发工具类
Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...
- Android Chronometer控件
1. Chronometer类 Chronometer是一个简单的计时器. 主要配置 format,显示格式,默认是"MM:SS"或"H:MM:SS",以%s来 ...
- 【Android从零单排系列十一】《Android视图控件——日历、日期、时间选择控件》
目录 一.日历.日期.时间组件基本介绍 二.几种常见的控件类型 1.CalendarView –日历控件 2. DatePicker –日期选择控件 3.TimePicker –时间选择控件 4.Ch ...
- xamarin.android 控件,Android 库控件 - Xamarin | Microsoft Docs
Xamarin Android 库控件Xamarin.Android Gallery control 03/15/2018 本文内容 Gallery是一种布局小组件,用于显示水平滚动列表中的项,并将当 ...
- android控件使用大全,Android常见控件使用详解
本文实例为大家分享了六种Android常见控件的使用方法,供大家参考,具体内容如下 1.TextView 主要用于界面上显示一段文本信息 2.Button 用于和用户交互的一个按钮控件 //为Butt ...
- Android 画廊控件Gallary
Android 画廊控件Gallary.将图片显示成连续的带状. package com.gallerydemo;import java.lang.reflect.Field; import java ...
- Android学习--02(猜猜我的星座App源码+Android常用控件TextView+EditText+Button+ImangeView+DatePicker+App间通信+跳转页面)
猜猜我的星座App 1 Android常用控件 1.1 TextView控件 1.1.1 简介 1.1.2属性 1.1.3 扩展属性 1.1.4 TextView的使用方法 1.1.5总结 1.2 E ...
- Android神奇“控件”-----RemoteViews
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 转载请注明 http://blog.csdn.net/wrg_20100512/article/details/53940485 好 ...
最新文章
- ATS 5.3.0中自定义日志格式文件logs_xml.config解读
- 查看回调几个选项含义_C 盘总是莫名变大?更改这个文件位置至少腾出几个 G !...
- C#连接ORACLE数据库乱码问题
- 08 域控 架构主机 转移_论无服务器架构的特征
- 2020年全球数据中心基础设施收入1650亿美元
- java部署容器_Linux容器——Docker(二)之 JavaWeb部署
- docker中不能读取带.环境变量的问题
- Python 文档学习
- 数据导入与预处理-第8章-实战演练-数据分析师岗位分析
- eclipse中各图标的含义
- 关于Vmware中的Ubuntu不断弹窗Num Lock的问题
- 惠普电脑如何安装双系统
- 手机浏览网页页面缩放
- Oracle 19C 下载和安装
- 古剑奇谭网络版服务器正在维护中,古剑奇谭网络版7月19日更新维护公告 古网ol更新了什么...
- Shell脚本中 双引号(“”)单引号(‘’)反引号(``)的区别
- Java学习:自学or培训?
- 第一次机房收费系统总结
- 互联网架构为什么要做服务化(Service)
- 关于对每种图片格式的理解(学习记录)
热门文章
- 采样开关的作用计算机控制,采样过程
- 台式计算机更改bios密码,清除DELL Optiplex等系列台式机BIOS密码
- 迪士尼滤镜特效——ToonMe
- 万物上云时代,中国移动云电脑引领混合办公新潮流
- 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)
- 关于数学建模中线性规划总结
- java中Atomic类之AtomicBoolean
- IIS Web服务器的安装与配置
- 使用poi解析excel表格,并导入数据
- 关于Unity的SteamVR Plugin 2.0版本中SteamVR_Controller不见的问题