package com.simtice.cnbeta.ui; import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.view.KeyEvent; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.Toast; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.simtice.cnbeta.R; import com.simtice.cnbeta.adapter.MainDrawerAdapter; import com.simtice.cnbeta.util.Constant; import com.simtice.cnbeta.util.PreferencesUtil; import com.simtice.cnbeta.util.imagecache.FileHelper; import com.simtice.cnbeta.util.imagecache.FileManager; import com.umeng.fb.FeedbackAgent; /** * 主界面 * * @author simtice * */ public class MainActivity extends SherlockFragmentActivity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private List<String> list; private List<String> listTag; private MainDrawerAdapter adapter; private int currentPosition= 1; private boolean isClickList; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.Sherlock___Theme_Light); super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); new FeedbackAgent(this).sync();// 同步用户反馈 } @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.settings).setVisible(drawerOpen); return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSupportMenuInflater(); inflater.inflate(R.menu.main, menu); // TODO Auto-generated method stub return super.onCreateOptionsMenu(menu); } private void init() { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setIcon(R.drawable.icon); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerList = (ListView) findViewById(R.id.lv_main_drawer); list = new ArrayList<String>(); listTag = new ArrayList<String>(); list.add(getString(R.string.TAG_NEWS)); listTag.add(getString(R.string.TAG_NEWS)); list.add(getString(R.string.TYPE_ALL)); list.add(getString(R.string.TYPE_HOTCM)); list.add(getString(R.string.TYPE_TOP10)); adapter = new MainDrawerAdapter(this, list, listTag); mDrawerList.setAdapter(adapter); // if(PreferencesUtil.isFirstart(getApplicationContext())){ // mDrawerLayout.openDrawer(mDrawerList); // } mDrawerList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { selectItem(position); } }); mDrawerLayout.setDrawerListener(new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { @Override public void onDrawerClosed(View drawerView) { supportInvalidateOptionsMenu(); if(isClickList){//只有点击了list才更新fragment Fragment fragment = null; switch (currentPosition) { case 1: fragment = new NewsListFragment(); break; case 2: fragment = new HMCommentFragment(); break; case 3: fragment = new Top10Fragment(); break; } updateFragment(fragment); isClickList = false; } } @Override public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } }); //程序启动默认显示的Fragment selectItem(1); updateFragment(new NewsListFragment()); } private void updateFragment(Fragment fragment){ getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit(); getSupportActionBar().setTitle(list.get(currentPosition)); adapter.setSelectedPosition(currentPosition); adapter.notifyDataSetChanged(); } private void selectItem(int position) { // update the main content by replacing fragments mDrawerLayout.closeDrawer(mDrawerList); if(position!=currentPosition){ currentPosition = position; isClickList = true; } } @Override public boolean onOptionsItemSelected(MenuItem item) { // This uses the imported MenuItem from ActionBarSherlock switch (item.getItemId()) { case android.R.id.home: if (mDrawerLayout.isDrawerOpen(mDrawerList)) { mDrawerLayout.closeDrawers(); } else { mDrawerLayout.openDrawer(mDrawerList); } break; case R.id.settings: startActivity(new Intent(this, PreferenceActivity.class)); break; } return true; } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); mDrawerLayout.closeDrawer(mDrawerList);// 当跳转到设置界面,回调onStop之后再关闭抽屉,防止在startActivity的同时关闭抽屉造成界面卡顿 } long waitTime = 2000; long touchTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) { long currentTime = System.currentTimeMillis(); if ((currentTime - touchTime) >= waitTime) { Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); touchTime = currentTime; } else { if (PreferencesUtil.isAutouClean(getApplicationContext())) { FileHelper.deleteDirectory(FileManager.getCacheRootDir(Constant.dirName)); } finish(); } return true; } return super.onKeyDown(keyCode, event); } }