package com.cheikh.lazywaimai.ui.activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.ogaclejapan.smarttablayout.SmartTabLayout; import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItemAdapter; import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItems; import butterknife.Bind; import com.cheikh.lazywaimai.R; import com.cheikh.lazywaimai.base.BaseActivity; import com.cheikh.lazywaimai.base.BaseController; import com.cheikh.lazywaimai.context.AppContext; import com.cheikh.lazywaimai.controller.MainController; import com.cheikh.lazywaimai.util.ContentView; import com.cheikh.lazywaimai.ui.Display; import com.cheikh.lazywaimai.ui.fragment.OrdersFragment; import com.cheikh.lazywaimai.ui.fragment.ShopFragment; import com.cheikh.lazywaimai.ui.fragment.UserCenterFragment; import com.cheikh.lazywaimai.util.ActivityStack; import com.cheikh.lazywaimai.util.DoubleExitUtil; import com.cheikh.lazywaimai.util.MainTab; /** * author:cheikh on 16/5/9 15:02 * email:wanghonghi@126.com */ @ContentView(R.layout.activity_main) public class MainActivity extends BaseActivity<MainController.MainUiCallbacks> implements MainController.MainHomeUi { @Bind(R.id.viewpager) ViewPager mViewPager; @Bind(R.id.viewpager_tab) SmartTabLayout mViewpagerTab; private DoubleExitUtil mDoubleClickExit; @Override protected BaseController getController() { return AppContext.getContext().getMainController(); } @Override protected void initializeViews(Bundle savedInstanceState) { final LayoutInflater inflater = LayoutInflater.from(this); final int[] tabIcons = {R.drawable.tab_ic_home, R.drawable.tab_ic_orders, R.drawable.tab_ic_me}; final int[] tabTitles = {R.string.tab_home, R.string.tab_orders, R.string.tab_me}; FragmentPagerItems pages = FragmentPagerItems.with(this) .add(R.string.tab_home, ShopFragment.class) .add(R.string.tab_orders, OrdersFragment.class) .add(R.string.tab_me, UserCenterFragment.class) .create(); FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter( getSupportFragmentManager(), pages); mViewPager.setOffscreenPageLimit(pages.size()); mViewPager.setAdapter(adapter); mViewpagerTab.setCustomTabView(new SmartTabLayout.TabProvider() { @Override public View createTabView(ViewGroup container, int position, PagerAdapter adapter) { View view = inflater.inflate(R.layout.layout_navigation_bottom_item, container, false); ImageView iconView = (ImageView) view.findViewById(R.id.img_icon); iconView.setBackgroundResource(tabIcons[position % tabIcons.length]); TextView titleView = (TextView) view.findViewById(R.id.txt_title); titleView.setText(tabTitles[position % tabTitles.length]); return view; } }); mViewpagerTab.setViewPager(mViewPager); mDoubleClickExit = new DoubleExitUtil(this); } @Override protected void handleIntent(Intent intent, Display display) { if (intent != null && intent.hasExtra(Display.PARAM_OBJ)) { MainTab tab = (MainTab) intent.getSerializableExtra(Display.PARAM_OBJ); switch (tab) { default: case SHOP: mViewPager.setCurrentItem(0); break; case ORDERS: mViewPager.setCurrentItem(1); break; case PERSON: mViewPager.setCurrentItem(2); break; } } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // 是否退出应用 boolean exit = mDoubleClickExit.onKeyDown(keyCode, event); if (exit) { ActivityStack.create().appExit(); } return true; } return super.onKeyDown(keyCode, event); } }