package com.xinxin.everyxday.activity; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.ListView; import com.nispok.snackbar.Snackbar; import com.readystatesoftware.systembartint.SystemBarTintManager; import com.tencent.mm.sdk.openapi.IWXAPI; import com.tencent.mm.sdk.openapi.WXAPIFactory; import com.umeng.update.UmengUpdateAgent; import com.xinxin.everyxday.fragment.FragmentAbout; import com.xinxin.everyxday.fragment.FragmentLike; import com.xinxin.everyxday.fragment.FragmentSetting; import com.xinxin.everyxday.fragment.FragmentShareProduct; import com.xinxin.everyxday.fragment.FragmentShowOrderFeaturedContent; import com.xinxin.everyxday.fragment.FragmentSortContent; import com.xinxin.everyxday.fragment.FragmentSupportUs; import com.xinxin.everyxday.global.Globe; import com.xinxin.everyxday.util.ResultInterface; import com.xinxin.everyxday.widget.GlobalMenuAdapter; import com.xinxin.ldrawer.ActionBarDrawerToggle; import com.xinxin.ldrawer.DrawerArrowDrawable; import com.xinxin.everyxday.R; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; public class EveryXDayMainActivity extends Activity{ private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private DrawerArrowDrawable drawerArrow; private ListView menuView; private GlobalMenuAdapter globalMenuAdapter; private LinearLayout menuLayout; private FragmentShowOrderFeaturedContent showFragment; private FragmentSortContent sortFragment; private FragmentLike likeFragment; private FragmentShareProduct shareFragment; private FragmentSupportUs supportFragment; private FragmentSetting settingFragment; private FragmentAbout aboutFragment; private int meuP = 0; private ActionBar ab; private FragmentManager fragmentManager; private long mExitTime; private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); tintManager.setStatusBarTintResource(R.color.app_main_theme_color); } fragmentManager = getFragmentManager(); regToWx(); initActionBar(); initUpdate(); initViews(); initViewEvents(); showFragment(1); } private void regToWx(){ api = WXAPIFactory.createWXAPI(this, Globe.WX_APP_ID, true); api.registerApp(Globe.WX_APP_ID); } private void initActionBar(){ ab = getActionBar(); ab.setDisplayHomeAsUpEnabled(true); ab.setHomeButtonEnabled(true); } private void initUpdate(){ UmengUpdateAgent.setUpdateOnlyWifi(false); UmengUpdateAgent.update(this); } private void initViews(){ menuLayout = (LinearLayout)findViewById(R.id.navdrawer); menuView = (ListView)findViewById(R.id.menuview); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); drawerArrow = new DrawerArrowDrawable(this) { @Override public boolean isLayoutRtl() { return false; } }; } private void initViewEvents(){ if(null == globalMenuAdapter) { globalMenuAdapter = new GlobalMenuAdapter(this, listener); } menuView.setAdapter(globalMenuAdapter); mDrawerLayout.setScrimColor(getResources().getColor(R.color.whitetransparent)); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, drawerArrow, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) { super.onDrawerClosed(view); invalidateOptionsMenu(); switch (meuP){ case 0: showFragment(1); break; case 1: showFragment(2); break; case 2: showFragment(3); break; case 4: showFragment(4); break; case 5: showFragment(5); break; case 7: showFragment(6); break; case 8: showFragment(7); break; default: break; } } public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerToggle.syncState(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { if (mDrawerLayout.isDrawerOpen(menuLayout)) { mDrawerLayout.closeDrawer(menuLayout); } else { mDrawerLayout.openDrawer(menuLayout); } } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (mDrawerLayout.isDrawerOpen(menuLayout)) { mDrawerLayout.closeDrawer(menuLayout); }else { if ((System.currentTimeMillis() - mExitTime) > 2000) { Snackbar.with(getApplicationContext()) // context .colorResource(R.color.app_main_theme_color_transparent) .duration(Snackbar.SnackbarDuration.LENGTH_SHORT) .text("再按一次退出程序") // text to display .show(this); mExitTime = System.currentTimeMillis(); } else { finish(); } } return true; } return super.onKeyDown(keyCode, event); } ResultInterface listener = new ResultInterface() { @Override public void OnComplete(int state, int position) { if(state == 1){ switch (position){ case 0: ab.setTitle("NEW"); meuP = 0; mDrawerLayout.closeDrawers(); menuView.setItemChecked(position, true); break; case 1: ab.setTitle("分类"); meuP = 1; mDrawerLayout.closeDrawers(); menuView.setItemChecked(position, true); break; case 2: ab.setTitle("喜欢过的"); meuP = 2; mDrawerLayout.closeDrawers(); menuView.setItemChecked(position, true); break; case 4: ab.setTitle("分享新品"); meuP = 4; menuView.setItemChecked(position, true); mDrawerLayout.closeDrawers(); break; case 5: ab.setTitle("支持NEW"); meuP = 5; menuView.setItemChecked(position, true); mDrawerLayout.closeDrawers(); break; case 7: ab.setTitle("设置"); meuP = 7; menuView.setItemChecked(position, true); mDrawerLayout.closeDrawers(); break; case 8: ab.setTitle("关于"); meuP = 8; menuView.setItemChecked(position, true); mDrawerLayout.closeDrawers(); break; default: break; } } } }; /** * 展现Fragment * @param index */ public void showFragment(int index) { FragmentTransaction ft = fragmentManager.beginTransaction(); // 想要显示一个fragment,先隐藏所有fragment,防止重叠 hideFragments(ft); switch (index) { case 1: // 如果fragment1已经存在则将其显示出来 if (showFragment != null) ft.show(showFragment); // 否则是第一次切换则添加fragment1,注意添加后是会显示出来的,replace方法也是先remove后add else { showFragment = new FragmentShowOrderFeaturedContent(); ft.add(R.id.content_frame, showFragment); } break; case 2: if (sortFragment != null) ft.show(sortFragment); else { sortFragment = new FragmentSortContent(); ft.add(R.id.content_frame, sortFragment); } break; case 3: if (likeFragment != null) ft.show(likeFragment); else { likeFragment = new FragmentLike(); ft.add(R.id.content_frame, likeFragment); } break; case 4: if (shareFragment != null) ft.show(shareFragment); else { shareFragment = new FragmentShareProduct(); ft.add(R.id.content_frame, shareFragment); } break; case 5: if (supportFragment != null) ft.show(supportFragment); else { supportFragment = new FragmentSupportUs(); ft.add(R.id.content_frame, supportFragment); } break; case 6: if (settingFragment != null) ft.show(settingFragment); else { settingFragment = new FragmentSetting(); ft.add(R.id.content_frame, settingFragment); } break; case 7: if (aboutFragment != null) ft.show(aboutFragment); else { aboutFragment = new FragmentAbout(); ft.add(R.id.content_frame, aboutFragment); } break; } ft.commit(); } // 当fragment已被实例化,就隐藏起来 public void hideFragments(FragmentTransaction ft) { if (showFragment != null) ft.hide(showFragment); if (sortFragment != null) ft.hide(sortFragment); if (likeFragment != null) ft.hide(likeFragment); if (shareFragment != null) ft.hide(shareFragment); if (supportFragment != null) ft.hide(supportFragment); if (settingFragment != null) ft.hide(settingFragment); if (aboutFragment != null) ft.hide(aboutFragment); } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //触发fm的 if(settingFragment != null) { settingFragment.onActivityResult(requestCode, resultCode, data); } } }