BaseActivity.kt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.rdiot.yx485.base
  2. import android.os.Bundle
  3. import android.view.MotionEvent
  4. import androidx.appcompat.app.AppCompatActivity
  5. import androidx.databinding.DataBindingUtil
  6. import androidx.databinding.ViewDataBinding
  7. import com.rdiot.yx485.util.hideKeyboard
  8. import com.rdiot.yx485.util.isShouldHideKeyboard
  9. /**
  10. *
  11. * @author mR2hao
  12. * @date 2021/8/2
  13. */
  14. abstract class BaseActivity<TBinding : ViewDataBinding> : AppCompatActivity() {
  15. // @Inject
  16. // lateinit var appData: AppData
  17. protected abstract fun getLayoutId(): Int
  18. protected abstract fun initView(savedInstanceState: Bundle?)
  19. protected lateinit var binding: TBinding
  20. /** 是否前台显示 */
  21. var isFront = false
  22. override fun onCreate(savedInstanceState: Bundle?) {
  23. AppManager().addActivity(this)
  24. super.onCreate(savedInstanceState)
  25. binding = DataBindingUtil.setContentView(this, getLayoutId())
  26. initView(savedInstanceState)
  27. }
  28. override fun onDestroy() {
  29. AppManager().finishActivity(this)
  30. super.onDestroy()
  31. }
  32. /** 拦截点击事件,当输入法弹出时,点击非输入框位置就隐藏输入法 */
  33. override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
  34. if (ev.action == MotionEvent.ACTION_DOWN) {
  35. val v = currentFocus ?: return super.dispatchTouchEvent(ev)
  36. if (v.isShouldHideKeyboard(ev)) {
  37. val res = hideKeyboard(v.windowToken)
  38. if (res) return true
  39. }
  40. }
  41. return super.dispatchTouchEvent(ev)
  42. }
  43. override fun onResume() {
  44. super.onResume()
  45. isFront = true
  46. }
  47. override fun onStop() {
  48. super.onStop()
  49. isFront = false
  50. }
  51. }