应用场景:类似于获取短信/邮箱验证码
screen-20230928-172415.mp4
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.lrCzh:CountdownTextView:1.0.1'
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et"
android:layout_width="0dp"
android:layout_height="48dp"
android:hint="请输入手机号码或者邮箱"
app:layout_constraintEnd_toStartOf="@id/cdtv"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.xh.lib.CountdownTextView
android:id="@+id/cdtv"
android:layout_width="108dp"
android:layout_height="48dp"
android:gravity="center"
app:countTime="10"
app:countdownColor="#B6B6B6"
app:countdownTextFormat="倒计时%ss"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/et"
app:layout_constraintTop_toTopOf="parent"
app:normalColor="#009688"
app:normalText="获取验证码"
app:normalTextForAgain="重新获取验证码" />
</androidx.constraintlayout.widget.ConstraintLayout>
class BindEtActivity : AppCompatActivity() {
private lateinit var binding: ActivityBindEtBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityBindEtBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.apply {
// 关联EditText
cdtv.bindEt(et)
cdtv.setOnClickListener {
// 在这里请求接口,接口请求成功后调用startCountdown()开始倒计时,这里为了演示,就直接调用了
cdtv.startCountdown()
}
}
}
}