package eVVM.apk.ui.home; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.view.MenuItem; import com.hjq.base.BaseFragmentAdapter; import butterknife.BindView; import eVVM.apk.R; import eVVM.apk.common.MyActivity; import eVVM.apk.common.MyLazyFragment; import eVVM.apk.helper.ActivityStackManager; import eVVM.apk.helper.DoubleClickHelper; import eVVM.apk.helper.SPUtils; import eVVM.apk.ui.My.MyFragment; import eVVM.apk.ui.first.FirstFragment; import eVVM.apk.ui.toreview.ToreviewFragment; public class HomeActivity extends MyActivity implements ViewPager.OnPageChangeListener, BottomNavigationView.OnNavigationItemSelectedListener{ @BindView(R.id.vp_home_pager) ViewPager mViewPager; @BindView(R.id.bv_home_navigation) BottomNavigationView mBottomNavigationView; private BaseFragmentAdapter mPagerAdapter; @Override protected int getLayoutId() { return R.layout.activity_home; } @Override protected int getTitleId() { return 0; } @Override protected void initView() { mViewPager.addOnPageChangeListener(this); // 不使用图标默认变色 mBottomNavigationView.setItemIconTintList(null); mBottomNavigationView.setOnNavigationItemSelectedListener(this); } @Override protected void initData() { mPagerAdapter = new BaseFragmentAdapter<>(this); mPagerAdapter.addFragment(FirstFragment.newInstance()); mPagerAdapter.addFragment(ToreviewFragment.newInstance()); mPagerAdapter.addFragment(MyFragment.newInstance()); mViewPager.setAdapter(mPagerAdapter); // 限制页面数量 mViewPager.setOffscreenPageLimit(mPagerAdapter.getCount()); } /** * {@link BottomNavigationView.OnNavigationItemSelectedListener} */ @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.menu_home: //mViewPager.setCurrentItem(0); //mViewPager.setCurrentItem(0, false); // 如果切换的是相邻之间的 Item 就显示切换动画,如果不是则不要动画 mViewPager.setCurrentItem(0, mViewPager.getCurrentItem() == 1); return true; case R.id.home_message: //mViewPager.setCurrentItem(1); //mViewPager.setCurrentItem(1, false); mViewPager.setCurrentItem(1, mViewPager.getCurrentItem() == 0 || mViewPager.getCurrentItem() == 2); return true; case R.id.home_me: //mViewPager.setCurrentItem(2); //mViewPager.setCurrentItem(2, false); mViewPager.setCurrentItem(2, mViewPager.getCurrentItem() == 1 || mViewPager.getCurrentItem() == 3); return true; } return false; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 回调当前 Fragment 的 onKeyDown 方法 if (mPagerAdapter.getCurrentFragment().onKeyDown(keyCode, event)) { return true; } return super.onKeyDown(keyCode, event); } @Override public void onBackPressed() { if (DoubleClickHelper.isOnDoubleClick()) { //移动到上一个任务栈,避免侧滑引起的不良反应 moveTaskToBack(false); postDelayed(new Runnable() { @Override public void run() { // 进行内存优化,销毁掉所有的界面 ActivityStackManager.getInstance().finishAllActivities(); // 销毁进程 System.exit(0); } }, 300); } else { toast(getResources().getString(R.string.home_exit_hint)); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position) { case 0: mBottomNavigationView.setSelectedItemId(R.id.menu_home); break; case 1: mBottomNavigationView.setSelectedItemId(R.id.home_message); break; case 2: mBottomNavigationView.setSelectedItemId(R.id.home_me); break; } } @Override public void onPageScrollStateChanged(int i) { } @Override protected void onDestroy() { mViewPager.removeOnPageChangeListener(this); mViewPager.setAdapter(null); mBottomNavigationView.setOnNavigationItemSelectedListener(null); super.onDestroy(); } @Override public boolean isSupportSwipeBack() { // 不使用侧滑功能 return false; } }