-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathLottieExtActivity.kt
41 lines (36 loc) · 1.39 KB
/
LottieExtActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.zy.demo
import com.zy.demo.databinding.ActivityLottieExtBinding
import com.zy.multistatepage.MultiStateContainer
import com.zy.multistatepage.MultiStatePage
import com.zy.demo.base.BaseActivity
import com.zy.multistatepage.state.ErrorState
import com.zy.demo.state.LottieWaitingState
import com.zy.multistatepage.state.SuccessState
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class LottieExtActivity : BaseActivity<ActivityLottieExtBinding>() {
override fun initPage() {
MultiStatePage.bindMultiState(viewBinding.fl)
val multiState = MultiStatePage.bindMultiState(viewBinding.fl)
mockError(multiState)
}
private fun mockError(multiStateContainer: MultiStateContainer) {
MainScope().launch {
multiStateContainer.show<LottieWaitingState>()
val delayTime = (10..30).random() * 100.toLong()
delay(delayTime)
multiStateContainer.show<ErrorState> {
it.retry { mockSuccess(multiStateContainer) }
}
}
}
private fun mockSuccess(multiStateContainer: MultiStateContainer) {
MainScope().launch {
multiStateContainer.show<LottieWaitingState>()
val delayTime = (10..30).random() * 100.toLong()
delay(delayTime)
multiStateContainer.show<SuccessState>()
}
}
}