package com.sfy.widget
import android.content.Context
import android.util.AttributeSet
import android.widget.TextView
class CountdownTextView : TextView, Runnable {
private var mTotalTime = 60 // 倒计时秒数
private val TIME_UNIT = "s" // 秒数单位文本
private var mCurrentTime: Int = 0 // 当前秒数
private var mRecordText: CharSequence? = null // 记录原有的文本
private var mAfterText: CharSequence? = null// 秒数结束需要展示的文本
private var mFlag: Boolean = false // 标记是否重置了倒计控件
constructor(context: Context) : super(context)
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet, 0)
constructor(context: Context,attributeSet: AttributeSet,defStyle: Int):super(context, attributeSet, defStyle){
val ta = getContext().obtainStyledAttributes(attributeSet, R.styleable.CountdownViewText)
mAfterText = if (ta.hasValue(R.styleable.CountdownViewText_afterTipText)) ta.getString(R.styleable.CountdownViewText_afterTipText) else "重新获取"
}
/**
* 设置倒计时总秒数
*/
fun setTotalTime(totalTime: Int) {
this.mTotalTime = totalTime
}
/**
* 重置倒计时控件
*/
fun resetState() {
mFlag = true
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
//设置点击的属性
isClickable = true
}
override fun onDetachedFromWindow() {
// 移除延迟任务,避免内存泄露
removeCallbacks(this)
super.onDetachedFromWindow()
}
override fun performClick(): Boolean {
val click = super.performClick()
mRecordText = text
isEnabled = false
mCurrentTime = mTotalTime
post(this)
return click
}
override fun run() {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
if (mCurrentTime == 0 || mFlag) {
text = mAfterText
// setText(mRecordText);
isEnabled = true
mFlag = false
} else {
mCurrentTime--
text = mCurrentTime.toString() + TIME_UNIT + mAfterText
postDelayed(this, 1000)
}
}
}