package edu.hebtu.movingcampus.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Display; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.TouchDelegate; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import com.baidu.android.pushservice.PushConstants; import com.baidu.android.pushservice.PushManager; import com.umeng.fb.FeedbackAgent; import com.umeng.update.UmengUpdateAgent; import edu.hebtu.movingcampus.R; import edu.hebtu.movingcampus.activity.base.ActionDispatcher; import edu.hebtu.movingcampus.activity.base.BaseSlidingFragmentActivity; import edu.hebtu.movingcampus.activity.base.PageWraper; import edu.hebtu.movingcampus.activity.setting.AccountSettingActivity; import edu.hebtu.movingcampus.activity.setting.SettingActivity; import edu.hebtu.movingcampus.activity.wrapper.AllInOneCardActivity; import edu.hebtu.movingcampus.activity.wrapper.IPreference; import edu.hebtu.movingcampus.activity.wrapper.LibraryActivity; import edu.hebtu.movingcampus.activity.wrapper.InfoCenterActivity; import edu.hebtu.movingcampus.activity.wrapper.StudyResourceActivity; import edu.hebtu.movingcampus.activity.wrapper.UlitiesActivity; import edu.hebtu.movingcampus.slidingmenu.SlidingMenu; import edu.hebtu.movingcampus.utils.Utils; import edu.hebtu.movingcampus.view.ParentViewPager; public class MainActivity extends BaseSlidingFragmentActivity { private final String LIST_TEXT = "text"; private final String LIST_IMAGEVIEW = "img"; public static MainActivity instance = null; private ParentViewPager mTabPager; private SimpleAdapter lvAdapter; private ListView lvTitle; private int zero = 0; private static int currIndex = 0; private int one; public FeedbackAgent agent ; // private PopupWindow menuWindow; // private LayoutInflater inflater; /** * 连续按两次返回键就退出 */ private SlidingMenu sm; private static volatile int keyBackClickCount = 0; private final ArrayList<PageWraper> wrapers = new ArrayList<PageWraper>(); // private Button mRightBtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); instance = this; agent = new FeedbackAgent(MainActivity.this); setContentView(R.layout.main); setBehindContentView(R.layout.behind_slidingmenu); getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); initViewPager(); initSlidingMenu(); bindButton(); // baidu push // PushSettings.enableDebugMode(this, true); PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, Utils.getMetaValue(MainActivity.this, "api_key")); // 更新app api->umeng.com UmengUpdateAgent.setUpdateOnlyWifi(false); UmengUpdateAgent.update(this); // 设置新回复通知 // // 当开发者回复用户反馈后,如果需要提醒用户,请在应用程序的入口Activity的OnCreate()方法中下添加以下代码 agent.sync(); } public TouchDelegate getTouchDelegate(){ return mTabPager.getTouchDelegate(); } @Override public boolean dispatchTouchEvent(MotionEvent event) { super.dispatchTouchEvent(event); return ((ActionDispatcher)wrapers.get(0)).dispatchTouchEvent(event); } private void initViewPager() { mTabPager = (ParentViewPager) findViewById(R.id.tabpager); mTabPager.setOnPageChangeListener(new MyOnPageChangeListener()); Display currDisplay = getWindowManager().getDefaultDisplay(); int displayWidth = currDisplay.getWidth(); int displayHeight = currDisplay.getHeight(); one = displayWidth / 4; // LogUtil.i("info", "" + one + two + three + "X" + displayHeight); final ArrayList<View> views = new ArrayList<View>(); // InitImageView();// LayoutInflater mLi = LayoutInflater.from(this); //View infoCenter = mLi.inflate(R.layout.main_tab_infocenter, null); View infoCenter = mLi.inflate(R.layout.main_tab_infocenter, null); View studyResource = mLi.inflate(R.layout.main_tab_studyresource, null); View library = mLi.inflate(R.layout.main_tab_library, null); View card = mLi.inflate(R.layout.main_tab_card, null); View ulities = mLi.inflate(R.layout.main_tab_ulities, null); // views.add(infoCenter); // wrapers.add(new InfoCenterActivity(infoCenter)); views.add(infoCenter); wrapers.add(new InfoCenterActivity(infoCenter)); views.add(studyResource); wrapers.add(new StudyResourceActivity(studyResource)); views.add(library); wrapers.add(new LibraryActivity(library)); views.add(card); wrapers.add(new AllInOneCardActivity(card)); views.add(ulities); wrapers.add(new UlitiesActivity(ulities)); PagerAdapter mPagerAdapter = new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public int getCount() { return views.size(); } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView(views.get(position)); } @Override public Object instantiateItem(View container, int position) { ((ViewPager) container).addView(views.get(position)); return views.get(position); } }; mTabPager.setAdapter(mPagerAdapter); } @Override public void onResume() { super.onResume(); keyBackClickCount = 0; wrapers.get(currIndex).onResume(); } // [start]初始化函数 private void initSlidingMenu() { lvTitle = (ListView) findViewById(R.id.behind_list_show); // customize the SlidingMenu sm = getSlidingMenu(); sm.setShadowWidthRes(R.dimen.shadow_width); sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); // sm.setFadeDegree(0.35f); // 屏幕左右滑动不能显示menu,显示上一页,下一页 sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); sm.setShadowDrawable(R.drawable.slidingmenu_shadow); // sm.setShadowWidth(20); sm.setBehindScrollScale(0); initListView(); } /** * 左侧栏菜单初始化,可以加入删除模块 * * @return */ private List<Map<String, Object>> getData() { // TODO image button List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put(LIST_TEXT, getResources().getString(R.string.info_center_title)); map.put(LIST_IMAGEVIEW, R.drawable.dis_menu_handpick); list.add(map); map = new HashMap<String, Object>(); map.put(LIST_TEXT, getResources().getString(R.string.study_resource)); map.put(LIST_IMAGEVIEW, R.drawable.dis_menu_news); list.add(map); map = new HashMap<String, Object>(); map.put(LIST_TEXT, getResources().getString(R.string.library_title)); map.put(LIST_IMAGEVIEW, R.drawable.dis_menu_studio); list.add(map); map = new HashMap<String, Object>(); map.put(LIST_TEXT, getResources().getString(R.string.card_title)); map.put(LIST_IMAGEVIEW, R.drawable.dis_menu_blog); list.add(map); map = new HashMap<String, Object>(); map.put(LIST_TEXT, getResources().getString(R.string.ulities_title)); map.put(LIST_IMAGEVIEW, R.drawable.dis_menu_blog); list.add(map); return list; } // 初始化左侧菜单列表按Mainactivity 中currentInx指定 private void initListView() { lvAdapter = new SimpleAdapter(this, getData(), R.layout.behind_list_show, new String[] { LIST_TEXT, LIST_IMAGEVIEW }, new int[] { R.id.textview_behind_title, R.id.imageview_behind_icon }) { @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub. View view = super.getView(position, convertView, parent); if (position == currIndex) { view.setBackgroundResource(R.drawable.back_behind_list); lvTitle.setTag(view); } else { view.setBackgroundColor(Color.TRANSPARENT); } return view; } }; lvTitle.setAdapter(lvAdapter); lvTitle.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // if (position == currIndex) // return; mTabPager.setCurrentItem(position); if (lvTitle.getTag() != null) { if (lvTitle.getTag() == view) { MainActivity.this.showContent(); return; } ((View) lvTitle.getTag()) .setBackgroundColor(Color.TRANSPARENT); } lvTitle.setTag(view); view.setBackgroundResource(R.drawable.back_behind_list); sm.toggle(); } }); } /** */ public class MyOnClickListener implements View.OnClickListener { private int index = 0; public MyOnClickListener(int i) { index = i; } @Override public void onClick(View v) { mTabPager.setCurrentItem(index); } }; private class MyOnPageChangeListener implements OnPageChangeListener { @Override public void onPageSelected(int arg0) { Animation animation = null; if (currIndex != arg0) animation = new TranslateAnimation(one * currIndex, one * arg0, 0, 0); else return; wrapers.get(currIndex).onPause(); currIndex = arg0; animation.setFillAfter(true); animation.setDuration(Math.abs(currIndex - arg0) * 500); // mTabImg.startAnimation(animation); wrapers.get(arg0).onResume(); // TODO menu 选择 滑动 // lvTitle.getOnItemClickListener().onItemClick(null, null, // currIndex , (Long) null); // 最左侧pager让右滑出现左侧栏,其他pager左右滑切换pager if (currIndex == 0&&Integer.parseInt(InfoCenterActivity.current_page)==0) sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); else sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { // menuWindow.dismiss(); if (sm.isMenuShowing()) { sm.toggle(); return false; } switch (keyBackClickCount++) { case 0: Toast.makeText(this, getResources().getString(R.string.press_again_exit), Toast.LENGTH_SHORT).show(); Timer timer = new Timer(); try { timer.schedule(new TimerTask() { @Override public void run() { keyBackClickCount = 0; } }, 3000); } catch (Exception e) { keyBackClickCount = 0; } break; case 1: Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); break; default: break; } return true; } else if (keyCode == KeyEvent.KEYCODE_MENU) { // menuWindow.showAtLocation(this.findViewById(R.id.mainweixin), // Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); if (sm.isMenuShowing()) { toggle(); } else { showMenu(); } return false; } return super.onKeyDown(keyCode, event); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); wrapers.get(currIndex).onActivityResult(requestCode, resultCode, data); } protected void bindButton() { findViewById(R.id.cbFeedback).setOnClickListener( new View.OnClickListener() { @Override // feedback activity from umeng sdk. public void onClick(View arg0) { agent.startFeedbackActivity(); } }); findViewById(R.id.cbSetting).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(); intent.setClass(MainActivity.this, SettingActivity.class); // menuWindow.dismiss(); startActivity(intent); } }); findViewById(R.id.cbAccount).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(); intent.setClass(MainActivity.this, AccountSettingActivity.class); // menuWindow.dismiss(); startActivity(intent); } }); } public int getCurrentIndex(){ return currIndex; } }