package com.dahe.gldriver.ui import android.Manifest import android.os.Build import android.os.Bundle import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentStatePagerAdapter import androidx.viewpager.widget.ViewPager import com.amap.api.location.AMapLocationClient.updatePrivacyAgree import com.amap.api.location.AMapLocationClient.updatePrivacyShow import com.dahe.gldriver.R import com.dahe.gldriver.adapter.MyHomePagerAdapter import com.dahe.gldriver.bean.TabBean import com.dahe.gldriver.databinding.ActivityHomeBinding import com.dahe.gldriver.event.GoWaybillEvent import com.dahe.gldriver.event.RefreshEvent import com.dahe.gldriver.ui.home.HomeFragment import com.dahe.gldriver.ui.message.MessageFragment import com.dahe.gldriver.ui.mine.MineFragment import com.dahe.gldriver.ui.waybill.WaybillFragment import com.dahe.mylibrary.base.BaseActivity import com.flyco.tablayout.listener.CustomTabEntity import com.flyco.tablayout.listener.OnTabSelectListener import com.permissionx.guolindev.PermissionX import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import java.util.Timer import java.util.TimerTask /** * @ClassName HomeActivity * @Author 用户 * @Date 2023/12/27 17:12 * @Description TODO */ class HomeActivity : BaseActivity(), OnTabSelectListener, ViewPager.OnPageChangeListener { private val mNormalRes = mutableListOf( R.drawable.tab_home_normal, R.drawable.tab_message_normal, R.drawable.tab_waybill_normal, R.drawable.tab_mine_normal ) private val mSelectRes = mutableListOf( R.drawable.tab_home_press, R.drawable.tab_message_press, R.drawable.tab_waybill_press, R.drawable.tab_mine_press ) private var mTitles = arrayOf("首页", "消息", "运单", "我的") private var mTabEntities = arrayListOf( TabBean(mTitles[0], mSelectRes[0], mNormalRes[0]), TabBean(mTitles[1], mSelectRes[1], mNormalRes[1]), TabBean(mTitles[2], mSelectRes[2], mNormalRes[2]), TabBean(mTitles[3], mSelectRes[3], mNormalRes[3]) ) private var mFragments = arrayListOf(HomeFragment(), MessageFragment(), WaybillFragment(), MineFragment()) override fun initView(savedInstanceState: Bundle?) { binding.homeTabLayout.run { setTabData(mTabEntities) setOnTabSelectListener(this@HomeActivity) currentTab = 0 } binding.homeNoScrollViewPager.run { adapter = MyHomePagerAdapter(this@HomeActivity.supportFragmentManager, mTitles, mFragments) addOnPageChangeListener(this@HomeActivity) offscreenPageLimit = 3 } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { getPermissions() } } override fun initDate() { } private fun getPermissions() { PermissionX.init(this) .permissions( Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION, ) .request { allGranted, grantedList, deniedList -> if (allGranted) { } else { Toast.makeText( mContext, "开启权限失败,请在应用设置-权限-定位-始终允许", Toast.LENGTH_SHORT ).show() } } } private var mBackKeyPressed = false override fun onBackPressed() { if (!mBackKeyPressed) { showToast("再按一次退出程序") mBackKeyPressed = true Timer().schedule(object : TimerTask() { override fun run() { mBackKeyPressed = false } }, 2000) } else { canCelToast() moveTaskToBack(true) // finish() } } // fun getFragment(){ // var adapter : MyHomePagerAdapter = binding.homeNoScrollViewPager.adapter as MyHomePagerAdapter // // adapter.instantiateItem(binding.homeNoScrollViewPager,0) // } override fun onTabSelect(position: Int) { binding.homeNoScrollViewPager.setCurrentItem(position) } override fun onTabReselect(position: Int) { } override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { } override fun onPageSelected(position: Int) { binding.homeTabLayout.setCurrentTab(position) } override fun onPageScrollStateChanged(state: Int) { } override fun onStart() { super.onStart() EventBus.getDefault().register(this); } override fun onStop() { super.onStop() EventBus.getDefault().unregister(this); } @Subscribe fun eventStatu(event: GoWaybillEvent) { binding.homeTabLayout.currentTab = event.statu binding.homeNoScrollViewPager.currentItem = event.statu } }