package com.hua.goddess.activites; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.hua.goddess.R; import com.hua.goddess.adapter.NavDrawerListAdapter; import com.hua.goddess.fragment.BeautyMainFragment; import com.hua.goddess.fragment.BusAssistantFragment; import com.hua.goddess.fragment.ChatSecretaryFragment; import com.hua.goddess.fragment.JSCPFragment; import com.hua.goddess.fragment.NewsFragment; import com.hua.goddess.fragment.WeatherFragment; import com.hua.goddess.global.DeviceInfo; import com.hua.goddess.vo.NavDrawerItem; import com.hua.goddess.widget.ActionBarDrawerToggle; import com.hua.goddess.widget.DrawerArrowDrawable; import com.umeng.analytics.MobclickAgent; import com.umeng.update.UmengUpdateAgent; import com.umeng.update.UmengUpdateListener; import com.umeng.update.UpdateResponse; import com.umeng.update.UpdateStatus; public class ContentActivity extends FragmentActivity { private ActionBarDrawerToggle mDrawerToggle; private DrawerLayout mDrawerLayout; private NavDrawerListAdapter adapter; private ListView mDrawerList; private int curItem; private DrawerArrowDrawable drawerArrow; private String title = "苏州通"; private ArrayList<CloseSoftKeyboardListener> myListeners = new ArrayList<CloseSoftKeyboardListener>(); private String switcher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_content); setActionBarStyle(); mDrawerLayout = (DrawerLayout) findViewById(R.id.content_drawer); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); drawerArrow = new DrawerArrowDrawable(this) { @Override public boolean isLayoutRtl() { return false; } }; mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, drawerArrow, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) { invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { invalidateOptionsMenu(); closeSoftKeyboard(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); switcher = MobclickAgent.getConfigParams(this, "news_switcher"); if("".equals(switcher)) { switcher = "no"; } initLiftView(); if (savedInstanceState == null) { if("no".equals(switcher) ) { displayView(1); } else { displayView(0); } } UmengUpdateAgent.update(this); // 检测更新 } private void initLiftView() { mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); adapter = new NavDrawerListAdapter(getApplicationContext(), getData(),switcher); // View headView = LayoutInflater.from(this).inflate(R.layout.head_view, // null); // mDrawerList.addHeaderView(headView); mDrawerList.setAdapter(adapter); } /** * Slide menu item click listener * */ private class SlideMenuClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position == curItem) return; displayView(position); } } private void displayView(int position) { // update the main content by replacing fragments Fragment fragment = null; if (!DeviceInfo.isNetworkAvailable(this)) { Toast.makeText(this, R.string.error_msg, Toast.LENGTH_SHORT).show(); } switch (position) { case 0: curItem = 0; title = "新闻资讯"; fragment = new NewsFragment(); MobclickAgent.onEvent(this, "news"); break; case 1: curItem = 1; title = "公交助手"; fragment = new BusAssistantFragment(); MobclickAgent.onEvent(this, "busassistant"); break; case 2: curItem = 2; title = "苏州天气"; fragment = new WeatherFragment(); MobclickAgent.onEvent(this, "weather"); break; case 3: curItem = 3; title = "宅男女神"; fragment = new BeautyMainFragment(); MobclickAgent.onEvent(this, "beauty"); break; case 4: curItem = 4; title = "私人小秘"; fragment = new ChatSecretaryFragment(); MobclickAgent.onEvent(this, "secretary"); break; case 5: curItem = 5; title = "金山彩票"; fragment = new JSCPFragment(); // Toast.makeText(ContentActivity.this, "正在规划中,敬请期待...", // Toast.LENGTH_SHORT).show(); MobclickAgent.onEvent(this, "plan"); break; default: break; } if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment) .commitAllowingStateLoss(); } // update selected item and title, then close the drawer mDrawerList.setItemChecked(position, true); mDrawerList.setSelection(position); mDrawerLayout.closeDrawer(mDrawerList); this.getActionBar().setTitle(title); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean isDrawerOper = mDrawerLayout.isDrawerOpen(mDrawerList); if (isDrawerOper) { this.getActionBar().setTitle("苏州通"); } else { this.getActionBar().setTitle(title); } return super.onPrepareOptionsMenu(menu); } @Override public boolean onMenuOpened(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod( "setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { } } } return super.onMenuOpened(featureId, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_about: Intent intent = new Intent(this, AboutUsActivity.class); startActivity(intent); MobclickAgent.onEvent(this, "about"); break; case R.id.action_updata: UmengUpdateAgent.setUpdateAutoPopup(false); UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() { @Override public void onUpdateReturned(int updateStatus, UpdateResponse updateInfo) { switch (updateStatus) { case UpdateStatus.Yes: // has update UmengUpdateAgent.showUpdateDialog(ContentActivity.this, updateInfo); break; case UpdateStatus.No: // has no update Toast.makeText(ContentActivity.this, "已是最新版本!", Toast.LENGTH_SHORT).show(); break; case UpdateStatus.NoneWifi: // none wifi Toast.makeText(ContentActivity.this, "没有wifi连接, 只在wifi下更新", Toast.LENGTH_SHORT) .show(); break; case UpdateStatus.Timeout: // time out Toast.makeText(ContentActivity.this, "超时", Toast.LENGTH_SHORT).show(); break; } } }); UmengUpdateAgent.forceUpdate(this); MobclickAgent.onEvent(this, "update"); break; default: break; } if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } private ArrayList<NavDrawerItem> getData() { ArrayList<NavDrawerItem> navDrawerItems = new ArrayList<NavDrawerItem>(); TypedArray navMenuIcons = getResources().obtainTypedArray( R.array.nav_drawer_icons); String[] navMenuTitles = getResources().getStringArray( R.array.nav_drawer_items); navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons .getResourceId(0, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons .getResourceId(1, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons .getResourceId(2, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons .getResourceId(3, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons .getResourceId(4, -1))); navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons .getResourceId(5, -1))); // Recycle the typed array navMenuIcons.recycle(); return navDrawerItems; } /** * When using the ActionBarDrawerToggle, you must call it during * onPostCreate() and onConfigurationChanged()... */ @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggls mDrawerToggle.onConfigurationChanged(newConfig); } private void setActionBarStyle() { // this.getActionBar().setTitle("苏州通"); getActionBar().setBackgroundDrawable( this.getBaseContext().getResources() .getDrawable(R.drawable.actionbar_back)); getActionBar().setIcon(R.color.transparent); // getActionBar().setIcon(R.drawable.ic_action); // getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); TextView textView = (TextView) findViewById(titleId); // textView.setTypeface(Typeface.createFromAsset(getAssets(), // "font/Wendy.ttf")); textView.setTextColor(0xFFdfdfdf); textView.setTextSize(17); // textView.setPadding(15, 0, 0, 0); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); } /** * 连续按两次返回键就退出 */ private int keyBackClickCount = 0; @Override protected void onResume() { super.onResume(); keyBackClickCount = 0; MobclickAgent.onResume(this); } public void onPause() { super.onPause(); MobclickAgent.onPause(this); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { switch (keyBackClickCount++) { case 0: Toast.makeText(this, getResources().getString(R.string.press_again_exit), Toast.LENGTH_SHORT).show(); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { keyBackClickCount = 0; } }, 3000); break; case 1: this.finish(); break; default: break; } return true; } else if (keyCode == KeyEvent.KEYCODE_MENU) { // if (mDrawerLayout.isDrawerOpen(mDrawerList)) { // mDrawerLayout.closeDrawer(mDrawerList); // } else { // mDrawerLayout.openDrawer(mDrawerList); // } } return super.onKeyDown(keyCode, event); } /*------------ 侧边栏打开后 关闭所有的软键盘 ------------*/ public interface CloseSoftKeyboardListener { public void onCloseListener(); } public void registerMyTouchListener(CloseSoftKeyboardListener listener) { myListeners.add(listener); } public void unRegisterMyTouchListener(CloseSoftKeyboardListener listener) { myListeners.remove(listener); } public void closeSoftKeyboard() { for (CloseSoftKeyboardListener listener : myListeners) { listener.onCloseListener(); } } }