package com.casic.smarttube.view import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter import androidx.viewpager.widget.ViewPager import com.casic.smarttube.R import com.casic.smarttube.databinding.ActivityMainBinding import com.casic.smarttube.extensions.initImmersionBar import com.casic.smarttube.fragment.HomePageFragment import com.casic.smarttube.fragment.MinePageFragment import com.casic.smarttube.fragment.OverviewFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show class MainActivity : KotlinBaseActivity<ActivityMainBinding>() { private var menuItem: MenuItem? = null private var fragmentPages: MutableList<Fragment> = ArrayList() private var clickTime: Long = 0 init { fragmentPages.add(HomePageFragment()) fragmentPages.add(OverviewFragment()) fragmentPages.add(MinePageFragment()) } override fun initViewBinding(): ActivityMainBinding { return ActivityMainBinding.inflate(layoutInflater) } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() binding.rootView.initImmersionBar(this, true, R.color.mainThemeColor) } override fun initOnCreate(savedInstanceState: Bundle?) { //保留icon原图颜色 binding.bottomNavigation.itemIconTintList = null binding.bottomNavigation.setOnItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { binding.mainViewPager.currentItem = 0 } R.id.nav_overview -> { binding.mainViewPager.currentItem = 1 } R.id.nav_mine -> { binding.mainViewPager.currentItem = 2 } } false } binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) } override fun observeRequestState() { } override fun initEvent() { binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { if (menuItem != null) { menuItem!!.isChecked = false } else { binding.bottomNavigation.menu.getItem(0).isChecked = false } menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { return if (keyCode == KeyEvent.KEYCODE_BACK) { if (System.currentTimeMillis() - clickTime > 2000) { "再按一次退出程序".show(this) clickTime = System.currentTimeMillis() true } else { super.onKeyDown(keyCode, event) } } else super.onKeyDown(keyCode, event) } inner class ViewPagerAdapter(list: MutableList<Fragment>, manager: FragmentManager) : FragmentPagerAdapter(manager) { private var viewPages: List<Fragment> = list override fun getItem(position: Int): Fragment = viewPages[position] override fun getCount(): Int = viewPages.size override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { } } }