package com.quansu.heifengwuliu.activity import android.graphics.Color import android.os.Bundle import android.util.Log import android.view.KeyEvent import androidx.core.content.ContextCompat import androidx.lifecycle.Observer import com.githang.statusbar.StatusBarCompat import com.hwangjr.rxbus.annotation.Subscribe import com.hwangjr.rxbus.annotation.Tag import com.qmuiteam.qmui.kotlin.onClick import com.quansu.heifengwuliu.BuildConfig import com.quansu.heifengwuliu.R import com.quansu.heifengwuliu.base.MBActivity import com.quansu.heifengwuliu.config.ConfigRx import com.quansu.heifengwuliu.databinding.ActivityHomeBinding import com.quansu.heifengwuliu.fragment.* import com.quansu.heifengwuliu.model.User import com.quansu.heifengwuliu.vmodel.HomeVModel import com.ysnows.base.ccretrofit.CCRetrofit import com.ysnows.base.route.IGaode import com.ysnows.base.route.IJpush import com.ysnows.base.route.IUpdate import com.ysnows.base.utils.KeySimulateUtils import com.ysnows.base.widget.tablayout.OrderCallBack import java.util.* /** * 首页 *Created by shihuiyun *on 2020/9/9 */ class HomeActivity : MBActivity() { //默认为0 private var mIndex = 0 private var type=1 override fun binding(): ActivityHomeBinding { return ActivityHomeBinding.inflate(layoutInflater) } override fun init(savedInstanceState: Bundle?) { //改方法是解决 安卓应用每次从后台切换到前台都会启动欢迎界面的问题 //参考 https://blog.csdn.net/u011807932/article/details/51323858 vm.ll=binding.ll StatusBarCompat.setStatusBarColor(this, Color.parseColor("#00ffffff")) if (savedInstanceState != null) { mIndex = savedInstanceState.getInt("currTabIndex") } super.init(savedInstanceState) vm.user.observe(this, Observer { if (null == it) { return@Observer } initMainMenu(it.type) binding.mainMenu.switchTab(0) //设置别名推送 CCRetrofit.instance() .with(this) .create(IJpush::class.java) .setPushAlias(vm.user.value!!.uid) .subscribe() if (it.type==1) { CCRetrofit.instance() .with(this) .create(IGaode::class.java) .initLocationSdk() .subscribe() } }) //检查更新 CCRetrofit.instance() .create(IUpdate::class.java) .checkUpgrade(false) .subscribe() } override fun vmClass(): Class { return HomeVModel::class.java } override fun title(): String? { return null } private fun initMainMenu(type: Int) { val menuTabBuilder = binding.mainMenu.tabBuilder() .setSelectColor(Color.parseColor("#FFBC00")) .setNormalColor(Color.parseColor("#767778")) binding.mainMenu.clear() this.type=type if (type == 1) {//1是司机 2是货主 val oneFragment = IndexFragment() val twoFragment = DriverWayBillFragment() val threeFragment = MineFragment() val one = menuTabBuilder .setFragment(oneFragment) .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_index)) .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_index_focus)) .setText(getString(R.string.home)) .build(context()) val two = menuTabBuilder .setFragment(twoFragment) .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_vehicle)) .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_vehicle_focus)) .setText(getString(R.string.my_waybill)) .build(context()) val three = menuTabBuilder .setFragment(threeFragment) .setText(getString(R.string.my)) .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre)) .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre_focus)) .build(context()) binding.mainMenu .addTab(one) .addTab(two) .addTab(three) .rendor() binding.mainMenu.setListener { vm.getOrder() } } else { val oneFragment = DeliverGoodsFragment() // val oneFragment = OwnerSingleFragment() val twoFragment = WayBillFragment() val threeFragment = MineFragment() val one = menuTabBuilder .setFragment(oneFragment) .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_one)) .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_one_focus)) .setText(getString(R.string.deliver_goods)) .build(context()) val two = menuTabBuilder .setFragment(twoFragment) .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_two)) .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_two_focus)) .setText(getString(R.string.order_information)) .build(context()) val three = menuTabBuilder .setFragment(threeFragment) .setText(getString(R.string.my)) .setNormalDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre)) .setSelectedDrawable(ContextCompat.getDrawable(context(), R.drawable.menu_tyre_focus)) .build(context()) binding.mainMenu .addTab(one) .addTab(two) .addTab(three) .rendor() } } override val isRxbus: Boolean get() = true @Subscribe(tags = [Tag(ConfigRx.ADD_ADAIN)]) fun getAgainDatas(json: String) { //再来一单 切换到货源界面 binding.mainMenu.switchTab(0) } override fun transluent(): Boolean { return true } /** * 双击退出函数 */ private var isExit = false /** * 菜单、返回键响应 */ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { if (keyCode == KeyEvent.KEYCODE_BACK) { exitBy2Click() //调用双击退出函数 return true } return false } private fun exitBy2Click() { var tExit: Timer? = null if (!isExit) { isExit = true // 准备退出 toast("再按一次退出应用") tExit = Timer() tExit.schedule(object : TimerTask() { override fun run() { isExit = false // 取消退出 } }, 1500) // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务 } else { KeySimulateUtils.simulate(KeyEvent.KEYCODE_HOME) System.exit(0) } } }