HomeActivity.kt 7.4 KB

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