SelectTopicDialog.kt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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.util.Log
  11. import android.view.Gravity
  12. import android.view.MotionEvent
  13. import android.view.Window
  14. import android.view.WindowManager
  15. import android.widget.Button
  16. import android.widget.TextView
  17. import androidx.recyclerview.widget.LinearLayoutManager
  18. import androidx.recyclerview.widget.RecyclerView
  19. import xn.hxp.R
  20. import xn.hxp.comm.Constants
  21. import xn.hxp.ui.adapter.SelectTopicAdapter
  22. import com.blankj.utilcode.util.LogUtils
  23. import com.rc.httpcore.bean.TopicDataBean
  24. //新增--选择课题组
  25. class SelectTopicDialog(
  26. private var ct: Context,
  27. private var dataList: List<TopicDataBean>,
  28. private var lint: IonItemLint
  29. ) :
  30. Dialog(ct) {
  31. private val mAdapter by lazy { SelectTopicAdapter() }
  32. private var mCounter = 0
  33. private var butClos: Button? = null
  34. init {
  35. requestWindowFeature(Window.FEATURE_NO_TITLE)
  36. setContentView(R.layout.select_topic_dialog)
  37. window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
  38. window?.setGravity(Gravity.CENTER)
  39. window?.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT)
  40. // 设置点击外部空白处不关闭对话框
  41. setCanceledOnTouchOutside(false)
  42. }
  43. override fun onCreate(savedInstanceState: Bundle?) {
  44. super.onCreate(savedInstanceState)
  45. val rvView = findViewById<RecyclerView>(R.id.rvView)
  46. val layoutManager = LinearLayoutManager(ct, LinearLayoutManager.VERTICAL, false)
  47. rvView.layoutManager = layoutManager
  48. rvView.adapter = mAdapter
  49. mAdapter.setNewInstance(dataList.toMutableList())
  50. mAdapter.setOnItemClickListener { adapter, view, position ->
  51. lint.onItem(mAdapter.data[position])
  52. closHandle()
  53. dismiss()
  54. }
  55. findViewById<Button>(R.id.butClos).setOnClickListener {
  56. closHandle()
  57. dismiss()
  58. }
  59. mCountDownHandler.removeMessages(Constants.WHAT_COUNT_DOWN_TWO)
  60. mCountDownHandler.sendEmptyMessage(Constants.WHAT_COUNT_DOWN_TWO)
  61. }
  62. interface IonItemLint {
  63. fun onItem(topicDataBean: TopicDataBean)
  64. }
  65. private fun closHandle() {
  66. mCountDownHandler.removeMessages(Constants.WHAT_COUNT_DOWN_TWO)
  67. mCountDownHandler.removeCallbacksAndMessages(null)
  68. }
  69. private val mCountDownHandler = object : Handler(Looper.getMainLooper()) {
  70. override fun handleMessage(msg: Message) {
  71. if (Constants.WHAT_COUNT_DOWN_TWO == msg.what) {
  72. val countDown = Constants.OFFTIME_TIME - mCounter
  73. Log.d("======返回时间", "$countDown")
  74. if (countDown <= 0) {
  75. dismiss()
  76. } else {
  77. sendEmptyMessageDelayed(Constants.WHAT_COUNT_DOWN_TWO, 1000)
  78. }
  79. mCounter++
  80. }
  81. }
  82. }
  83. override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
  84. // 在触摸事件发生时被调用
  85. when (ev.action) {
  86. MotionEvent.ACTION_DOWN -> {
  87. // 用户按下屏幕时的处理逻辑
  88. onUserInteraction()
  89. }
  90. MotionEvent.ACTION_MOVE -> {
  91. // 用户在屏幕上移动手指时的处理逻辑
  92. }
  93. MotionEvent.ACTION_UP -> {
  94. // 用户抬起手指时的处理逻辑
  95. }
  96. }
  97. return super.dispatchTouchEvent(ev)
  98. }
  99. private fun onUserInteraction() {
  100. // 在用户与对话框交互时的逻辑处理
  101. mCounter=0
  102. }
  103. }