-
Notifications
You must be signed in to change notification settings - Fork 206
/
SuperIntervalFragment.kt
51 lines (42 loc) · 1.69 KB
/
SuperIntervalFragment.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
42
43
44
45
46
47
48
49
50
51
package com.drake.net.sample.ui.fragment
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import com.drake.engine.base.EngineFragment
import com.drake.net.sample.R
import com.drake.net.sample.databinding.FragmentSuperIntervalBinding
import com.drake.net.time.Interval
import java.util.concurrent.TimeUnit
class SuperIntervalFragment :
EngineFragment<FragmentSuperIntervalBinding>(R.layout.fragment_super_interval) {
private lateinit var interval: Interval // 轮询器
override fun initView() {
setHasOptionsMenu(true)
// 自定义计数器个数的轮询器, 当[start]]比[end]值大, 且end不等于-1时, 即为倒计时
interval = Interval(0, 1, TimeUnit.SECONDS, 10).life(this)
// interval = Interval(1, TimeUnit.SECONDS) // 每秒回调一次, 不会自动结束
interval.subscribe {
binding.tvFragment.text = it.toString()
}.finish {
binding.tvFragment.text = "计时完成"
}.start()
}
override fun initData() {
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.menu_interval, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.start -> interval.start()
R.id.pause -> interval.pause()
R.id.resume -> interval.resume()
R.id.reset -> interval.reset()
R.id.switch_interval -> interval.switch()
R.id.stop -> interval.stop()
R.id.cancel -> interval.cancel()
}
return super.onOptionsItemSelected(item)
}
}