HomeActivity.kt 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.quansu.heifengwuliu.activity
  2. import android.graphics.Color
  3. import android.os.Bundle
  4. import android.view.KeyEvent
  5. import androidx.core.content.ContextCompat
  6. import androidx.lifecycle.Observer
  7. import com.githang.statusbar.StatusBarCompat
  8. import com.hwangjr.rxbus.annotation.Subscribe
  9. import com.hwangjr.rxbus.annotation.Tag
  10. import com.quansu.heifengwuliu.R
  11. import com.quansu.heifengwuliu.base.MBActivity
  12. import com.quansu.heifengwuliu.config.ConfigRx
  13. import com.quansu.heifengwuliu.databinding.ActivityHomeBinding
  14. import com.quansu.heifengwuliu.fragment.*
  15. import com.quansu.heifengwuliu.vmodel.HomeVModel
  16. import com.ysnows.base.ccretrofit.CCRetrofit
  17. import com.ysnows.base.route.IJpush
  18. import com.ysnows.base.utils.KeySimulateUtils
  19. import java.util.*
  20. /**
  21. * 首页
  22. *Created by shihuiyun
  23. *on 2020/9/9
  24. */
  25. class HomeActivity : MBActivity<HomeVModel, ActivityHomeBinding>() {
  26. //默认为0
  27. private var mIndex = 0
  28. override fun binding(): ActivityHomeBinding {
  29. return ActivityHomeBinding.inflate(layoutInflater)
  30. }
  31. override fun init(savedInstanceState: Bundle?) {
  32. //改方法是解决 安卓应用每次从后台切换到前台都会启动欢迎界面的问题
  33. //参考 https://blog.csdn.net/u011807932/article/details/51323858
  34. StatusBarCompat.setStatusBarColor(this, Color.parseColor("#00ffffff"))
  35. if (savedInstanceState != null) {
  36. mIndex = savedInstanceState.getInt("currTabIndex")
  37. }
  38. super.init(savedInstanceState)
  39. vm.user.observe(this, Observer {
  40. if (null == it) {
  41. return@Observer
  42. }
  43. initMainMenu(it.type)
  44. binding.mainMenu.switchTab(0)
  45. //设置别名推送
  46. CCRetrofit.instance()
  47. .with(this)
  48. .create(IJpush::class.java)
  49. .setPushAlias(vm.user.value!!.uid)
  50. .subscribe()
  51. })
  52. }
  53. override fun vmClass(): Class<HomeVModel> {
  54. return HomeVModel::class.java
  55. }
  56. override fun title(): String? {
  57. return null
  58. }
  59. private fun initMainMenu(type: Int) {
  60. val menuTabBuilder = binding.mainMenu.tabBuilder()
  61. .setSelectColor(Color.parseColor("#FFBC00"))
  62. .setNormalColor(Color.parseColor("#767778"))
  63. binding.mainMenu.clear()
  64. if (type == 1) {//1是司机 2是货主
  65. val oneFragment = IndexFragment()
  66. val twoFragment = DriverWayBillFragment()
  67. val threeFragment = MineFragment()
  68. val one = menuTabBuilder
  69. .setFragment(oneFragment)
  70. .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_index))
  71. .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_index_focus))
  72. .setText(getString(R.string.home))
  73. .build(context())
  74. val two = menuTabBuilder
  75. .setFragment(twoFragment)
  76. .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_vehicle))
  77. .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_vehicle_focus))
  78. .setText(getString(R.string.my_waybill))
  79. .build(context())
  80. val three = menuTabBuilder
  81. .setFragment(threeFragment)
  82. .setText(getString(R.string.my))
  83. .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre))
  84. .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre_focus))
  85. .build(context())
  86. binding.mainMenu
  87. .addTab(one)
  88. .addTab(two)
  89. .addTab(three)
  90. .rendor()
  91. } else {
  92. val oneFragment = DeliverGoodsFragment()
  93. val twoFragment = WayBillFragment()
  94. val threeFragment = MineFragment()
  95. val one = menuTabBuilder
  96. .setFragment(oneFragment)
  97. .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_one))
  98. .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_one_focus))
  99. .setText(getString(R.string.deliver_goods))
  100. .build(context())
  101. val two = menuTabBuilder
  102. .setFragment(twoFragment)
  103. .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_two))
  104. .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_two_focus))
  105. .setText(getString(R.string.order_information))
  106. .build(context())
  107. val three = menuTabBuilder
  108. .setFragment(threeFragment)
  109. .setText(getString(R.string.my))
  110. .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre))
  111. .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre_focus))
  112. .build(context())
  113. binding.mainMenu
  114. .addTab(one)
  115. .addTab(two)
  116. .addTab(three)
  117. .rendor()
  118. }
  119. }
  120. override val isRxbus: Boolean
  121. get() = true
  122. @Subscribe(tags = [Tag(ConfigRx.ADD_ADAIN)])
  123. fun getAgainDatas(json: String) {
  124. //再来一单 切换到货源界面
  125. binding.mainMenu.switchTab(0)
  126. }
  127. override fun transluent(): Boolean {
  128. return true
  129. }
  130. /**
  131. * 双击退出函数
  132. */
  133. private var isExit = false
  134. /**
  135. * 菜单、返回键响应
  136. */
  137. override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
  138. if (keyCode == KeyEvent.KEYCODE_BACK) {
  139. exitBy2Click() //调用双击退出函数
  140. return true
  141. }
  142. return false
  143. }
  144. private fun exitBy2Click() {
  145. var tExit: Timer? = null
  146. if (!isExit) {
  147. isExit = true // 准备退出
  148. toast("再按一次退出应用")
  149. tExit = Timer()
  150. tExit.schedule(object : TimerTask() {
  151. override fun run() {
  152. isExit = false // 取消退出
  153. }
  154. }, 1500) // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
  155. } else {
  156. KeySimulateUtils.simulate(KeyEvent.KEYCODE_HOME)
  157. System.exit(0)
  158. }
  159. }
  160. }