DiscardDialog.kt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package xn.hxp.weidith
  2. import android.app.Dialog
  3. import android.content.Context
  4. import android.graphics.Color
  5. import android.graphics.drawable.ColorDrawable
  6. import android.os.Bundle
  7. import android.os.Handler
  8. import android.os.Looper
  9. import android.os.Message
  10. import android.text.Editable
  11. import android.text.TextWatcher
  12. import android.util.Log
  13. import android.view.Gravity
  14. import android.view.MotionEvent
  15. import android.view.Window
  16. import android.view.WindowManager
  17. import android.widget.Button
  18. import android.widget.EditText
  19. import android.widget.RadioButton
  20. import android.widget.TextView
  21. import androidx.core.content.ContextCompat
  22. import xn.hxp.R
  23. import xn.hxp.comm.Constants
  24. import com.blankj.utilcode.util.LogUtils
  25. import java.math.BigDecimal
  26. //废弃弹框 wasteVolume 废弃量
  27. class DiscardDialog(private val ct: Context, private var wasteVolume: String, var lint: IClickLit) :
  28. Dialog(ct) {
  29. private var butClos: Button? = null
  30. init {
  31. requestWindowFeature(Window.FEATURE_NO_TITLE)
  32. setContentView(R.layout.discard_dialog)
  33. window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
  34. window?.setGravity(Gravity.CENTER)
  35. window?.setLayout(
  36. WindowManager.LayoutParams.MATCH_PARENT,
  37. WindowManager.LayoutParams.WRAP_CONTENT
  38. )
  39. // 设置点击外部空白处不关闭对话框
  40. setCanceledOnTouchOutside(false)
  41. }
  42. override fun onCreate(savedInstanceState: Bundle?) {
  43. super.onCreate(savedInstanceState)
  44. val radioOne = findViewById<RadioButton>(R.id.radio_one)
  45. val radioTwo = findViewById<RadioButton>(R.id.radio_two)
  46. val radioThree = findViewById<RadioButton>(R.id.radio_three)
  47. findViewById<TextView>(R.id.wasteVolume).text = "本次废气量:$wasteVolume,请选择废弃原因"
  48. radioOne.setOnClickListener {
  49. radioOne.isChecked = true
  50. if (radioTwo.isChecked) {
  51. radioTwo.isChecked = false
  52. // 设置背景颜色(未选中状态)
  53. radioTwo.setBackgroundResource(R.drawable.bg_shu_ru_kuang)
  54. // 设置字体颜色(未选中状态)
  55. radioTwo.setTextColor(ContextCompat.getColor(ct, R.color.black))
  56. }
  57. if (radioThree.isChecked) {
  58. radioThree.isChecked = false
  59. // 设置背景颜色(未选中状态)
  60. radioThree.setBackgroundResource(R.drawable.bg_shu_ru_kuang)
  61. // 设置字体颜色(未选中状态)
  62. radioThree.setTextColor(ContextCompat.getColor(ct, R.color.black))
  63. }
  64. // 设置背景颜色
  65. radioOne.setBackgroundResource(R.drawable.bg_shou_ru_two)
  66. // 设置字体颜色
  67. radioOne.setTextColor(ContextCompat.getColor(ct, R.color.purple_ff0072dd))
  68. }
  69. radioTwo.setOnClickListener {
  70. radioTwo.isChecked = true
  71. if (radioOne.isChecked) {
  72. radioOne.isChecked = false
  73. // 设置背景颜色(未选中状态)
  74. radioOne.setBackgroundResource(R.drawable.bg_shu_ru_kuang)
  75. // 设置字体颜色(未选中状态)
  76. radioOne.setTextColor(ContextCompat.getColor(ct, R.color.black))
  77. }
  78. if (radioThree.isChecked) {
  79. radioThree.isChecked = false
  80. // 设置背景颜色(未选中状态)
  81. radioThree.setBackgroundResource(R.drawable.bg_shu_ru_kuang)
  82. // 设置字体颜色(未选中状态)
  83. radioThree.setTextColor(ContextCompat.getColor(ct, R.color.black))
  84. }
  85. // 设置背景颜色
  86. radioTwo.setBackgroundResource(R.drawable.bg_shou_ru_two)
  87. // 设置字体颜色
  88. radioTwo.setTextColor(ContextCompat.getColor(ct, R.color.purple_ff0072dd))
  89. }
  90. radioThree.setOnClickListener {
  91. radioThree.isChecked = true
  92. if (radioOne.isChecked) {
  93. radioOne.isChecked = false
  94. // 设置背景颜色(未选中状态)
  95. radioOne.setBackgroundResource(R.drawable.bg_shu_ru_kuang)
  96. // 设置字体颜色(未选中状态)
  97. radioOne.setTextColor(ContextCompat.getColor(ct, R.color.black))
  98. }
  99. if (radioTwo.isChecked) {
  100. radioTwo.isChecked = false
  101. // 设置背景颜色(未选中状态)
  102. radioTwo.setBackgroundResource(R.drawable.bg_shu_ru_kuang)
  103. // 设置字体颜色(未选中状态)
  104. radioTwo.setTextColor(ContextCompat.getColor(ct, R.color.black))
  105. }
  106. // 设置背景颜色
  107. radioThree.setBackgroundResource(R.drawable.bg_shou_ru_two)
  108. // 设置字体颜色
  109. radioThree.setTextColor(ContextCompat.getColor(ct, R.color.purple_ff0072dd))
  110. }
  111. findViewById<Button>(R.id.butClos).setOnClickListener {
  112. closHandle()
  113. dismiss()
  114. lint.onClickClose()
  115. }
  116. findViewById<EditText>(R.id.edPut).addTextChangedListener(object : TextWatcher {
  117. override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
  118. }
  119. override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
  120. }
  121. override fun afterTextChanged(p0: Editable?) {
  122. onUserInteraction()
  123. }
  124. })
  125. findViewById<Button>(R.id.determine).setOnClickListener {
  126. var cont = findViewById<EditText>(R.id.edPut).text.toString()
  127. if (cont.isNotEmpty()) {
  128. LogUtils.i("======废弃时填写得参数 $cont")
  129. lint.onDetermineClick(cont)
  130. } else {
  131. if (radioOne.isChecked) {
  132. val text = radioOne.text.toString()
  133. lint.onDetermineClick(text)
  134. }
  135. if (radioTwo.isChecked) {
  136. val text = radioTwo.text.toString()
  137. lint.onDetermineClick(text)
  138. }
  139. if (radioThree.isChecked) {
  140. val text = radioThree.text.toString()
  141. lint.onDetermineClick(text)
  142. }
  143. }
  144. closHandle()
  145. dismiss()
  146. }
  147. mCountDownHandler.removeMessages(Constants.WHAT_COUNT_DOWN_TWO)
  148. mCountDownHandler.sendEmptyMessage(Constants.WHAT_COUNT_DOWN_TWO)
  149. }
  150. interface IClickLit {
  151. fun onClickClose()//关闭
  152. fun onDetermineClick(cont: String?)//确定
  153. fun onTimerReply()//重置最外层弹框信息
  154. }
  155. private fun closHandle() {
  156. mCountDownHandler.removeMessages(Constants.WHAT_COUNT_DOWN_TWO)
  157. mCountDownHandler.removeCallbacksAndMessages(null)
  158. }
  159. private var mCounter = 0
  160. private val mCountDownHandler = object : Handler(Looper.getMainLooper()) {
  161. override fun handleMessage(msg: Message) {
  162. if (Constants.WHAT_COUNT_DOWN_TWO == msg.what) {
  163. val countDown = Constants.OFFTIME_TIME - mCounter
  164. Log.d("======返回时间", "$countDown")
  165. if (countDown <= 0) {
  166. dismiss()
  167. } else {
  168. sendEmptyMessageDelayed(Constants.WHAT_COUNT_DOWN_TWO, 1000)
  169. }
  170. mCounter++
  171. }
  172. }
  173. }
  174. override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
  175. // 在触摸事件发生时被调用
  176. when (ev.action) {
  177. MotionEvent.ACTION_DOWN -> {
  178. // 用户按下屏幕时的处理逻辑
  179. onUserInteraction()
  180. }
  181. MotionEvent.ACTION_MOVE -> {
  182. // 用户在屏幕上移动手指时的处理逻辑
  183. }
  184. MotionEvent.ACTION_UP -> {
  185. // 用户抬起手指时的处理逻辑
  186. }
  187. }
  188. return super.dispatchTouchEvent(ev)
  189. }
  190. private fun onUserInteraction() {
  191. // 在用户与对话框交互时的逻辑处理
  192. lint.onTimerReply()
  193. mCounter = 0
  194. }
  195. }