HomeActivity.kt 7.2 KB

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