Github地址
Gradle
compile 'com.github.iwgang:countdownview:2.1.3'
Layout
<cn.iwgang.countdownview.CountdownView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:isHideTimeBackground="true"
app:isShowDay="true"
app:isShowHour="true"
app:isShowMinute="true"
app:isShowSecond="true"
app:isShowMillisecond="true"
app:timeTextColor="#000000"
app:timeTextSize="22sp"
app:isTimeTextBold="true"
app:suffixGravity="bottom"
app:suffixTextColor="#000000"
app:suffixTextSize="12sp"
app:suffixHour="时"
app:suffixMinute="分"
app:suffixSecond="秒"
app:suffixMillisecond="毫秒" />
Customization
attr | type | default |
---|---|---|
isHideTimeBackground(隐藏倒计时背景) | boolean | true |
timeBgColor(倒计时的背景色) | color | #444444 |
timeBgSize(倒计时背景大小) | dimension | timeSize + 2dp * 4 |
timeBgRadius(倒计时背景的圆角) | dimension | 0 |
isShowTimeBgDivisionLine(倒计时的横向的分割线) | boolean | true |
timeBgDivisionLineColor(倒计时的横向的分割线颜色) | color | #30FFFFFF |
timeBgDivisionLineSize(倒计时的横向的分割线高度) | dimension | 0.5dp |
timeTextSize(倒计时的文字大小) | dimension | 12sp |
timeTextColor(倒计时的文字颜色) | color | #000000 |
isTimeTextBold(倒计时文字所在的边框) | boolean | false |
isShowDay(自动显示 (天 > 1 显示, = 0 隐藏)) | boolean | auto show (has value show if not hide) |
isShowHour(自动显示 (小时 > 1 显示, = 0 隐藏)) | boolean | auto show (has value show if not hide) |
isShowMinute(是否显示分钟) | boolean | true |
isShowSecond(是否显示秒) | boolean | true |
isShowMillisecond( 是否显示毫秒) | boolean | false |
isConvertDaysToHours(是否转换天为小时) | boolean | false |
suffixTextSize(添加的分号:的大小) | dimension | 12sp |
suffixTextColor(添加的分号:的颜色) | color | #000000 |
isSuffixTextBold(添加的分号:的边框) | boolean | false |
suffixGravity(添加的分号:对齐方式) | ‘top’ or ‘center’ or ‘bottom’ | ‘center’ |
suffix(添加的分号:默认值) | string | ‘:’ |
suffixDay(天默认值) | string | null |
suffixHour(时默认值) | string | null |
suffixMinute(分默认值) | string | null |
suffixSecond(秒默认值) | string | null |
suffixMillisecond(毫秒默认值) | string | null |
suffixLRMargin | dimension | left 3dp right 3dp |
suffixDayLeftMargin | dimension | 0 |
suffixDayRightMargin | dimension | 0 |
suffixHourLeftMargin | dimension | 0 |
suffixHourRightMargin | dimension | 0 |
suffixMinuteLeftMargin | dimension | 0 |
suffixMinuteRightMargin | dimension | 0 |
suffixSecondLeftMargin | dimension | 0 |
suffixSecondRightMargin | dimension | 0 |
suffixMillisecondLeftMargin | dimension | 0 |
isShowTimeBgBorder | boolean | false |
timeBgBorderColor | color | #000000 |
timeBgBorderSize | dimension | 1dp |
timeBgBorderRadius | dimension | 0 |
代码调用
CountdownView mCvCountdownView = (CountdownView)findViewById(R.id.cv_countdownViewTest1);
//倒计时开始传毫秒
mCvCountdownView.start(995550000);
/**或者自己编写倒计时逻辑,然后调用updateShow来更新UI*/
for (int time=0; time<1000; time++) {
mCvCountdownView.updateShow(time);
}
给控件添加Tag回调实例
当使用ListView 或者RecycleView等控件使用倒计时,会出现一个界面有多个倒计时,但它的回调函数在Activity、Fragment里面只有一个,这时我们可以选择添加Tag标签,回调函数onEnd里判断Tag值匹配执行响应函数,个人觉得在Adapter里面使用有个更好的方法,onEnd(CountdownView ,position)把position回调回来就简单多了,这里不细说,先看给控件添加Tag回调实例
// 第1步,设置tag
mCvCountdownView.setTag(R.id.name, uid);
// 第2步,从设置的CountdownView中取回tag
@Override
public void onEnd(CountdownView cv) {
Object nameTag = cv.getTag(R.id.uid);
if (null != nameTag) {
Log.i(TAG, "name = " + nameTag.toString());
}
}
动态展示
动态显示/隐藏某些时间 (如:开始显示时、分、秒,后面到指定时间改成分、秒、毫秒)
customTimeShow(boolean isShowDay,
boolean isShowHour,
boolean isShowMinute,
boolean isShowSecond,
boolean isShowMillisecond)
动态显示设置, 支持所有xml中的配置项来使用java代码设置
dynamicShow(DynamicConfig dynamicConfig)
倒计时结束后回调
setOnCountdownEndListener(OnCountdownEndListener onCountdownEndListener);
指定间隔时间回调
setOnCountdownIntervalListener(long interval, OnCountdownIntervalListener onCountdownIntervalListener);