package com.casic.smarttube.view import android.view.KeyEvent import android.view.MenuItem 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.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.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { private var menuItem: MenuItem? = null private var fragmentList: MutableList<Fragment> = ArrayList() private var clickTime: Long = 0 init { fragmentList.add(HomePageFragment()) fragmentList.add(OverviewFragment()) fragmentList.add(MinePageFragment()) } override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { //保留icon原图颜色 bottomNavigation.itemIconTintList = null bottomNavigation.setOnItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { mainViewPager.currentItem = 0 } R.id.nav_overview -> { mainViewPager.currentItem = 1 } R.id.nav_mine -> { mainViewPager.currentItem = 2 } } false } mainViewPager.adapter = ViewPagerAdapter(fragmentList, supportFragmentManager) mainViewPager.offscreenPageLimit = fragmentList.size //缓存页数 } override fun initEvent() { 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 { bottomNavigation.menu.getItem(0).isChecked = false } menuItem = 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 } }