package com.hupu.games.activity; import java.util.ArrayList; import java.util.LinkedList; import org.json.JSONObject; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.hupu.games.HuPuApp; import com.hupu.games.R; import com.hupu.games.adapter.HomePageAdapter; import com.hupu.games.common.HuPuRes; import com.hupu.games.common.HupuLog; import com.hupu.games.common.HupuScheme; import com.hupu.games.common.SharedPreferencesMgr; import com.hupu.games.data.BaseGameEntity; import com.hupu.games.data.FollowResp; import com.hupu.games.data.JsonPaserFactory; import com.hupu.games.data.LeaguesEntity; import com.hupu.games.data.SendMsgResp; import com.hupu.games.data.SidebarEntity; import com.hupu.games.data.game.basketball.BasketBallGamesBlock; import com.hupu.games.data.game.basketball.BasketballGameEntity; import com.hupu.games.data.game.football.ScoreboardEntity; import com.hupu.games.dialog.EditDialog; import com.hupu.games.fragment.BaseFragment; import com.hupu.games.fragment.BaseGameFragment; import com.hupu.games.fragment.BasketballGamesFragment; import com.hupu.games.fragment.DiscoveryFragment; import com.hupu.games.fragment.SoccerGamesFragment; import com.hupu.games.hupudollor.activity.UserHupuDollorInfoActivity; import com.hupu.games.pay.AccountActivity; import com.hupu.games.pay.PhoneInputActivity; import com.hupu.http.HupuHttpHandler; import com.pyj.common.DeviceInfo; import com.pyj.common.DialogRes; import com.pyj.http.AsyncHttpResponseHandler; import com.pyj.http.RequestParams; import com.slidingmenu.lib.SlidingMenu; import com.umeng.fb.FeedbackAgent; import com.umeng.socialize.sso.UMSsoHandler; import com.umeng.update.UmengUpdateAgent; import com.viewpagerindicator.TabPageIndicator; /** * 看球首页 * * @author panyongjun * */ public class HupuHomeActivity extends HupuBaseActivity { private LinkedList<LeaguesEntity> leagueList; private String TABS[] = { HuPuRes.TAB_GAMES, HuPuRes.TAB_NEWS, HuPuRes.TAB_VIDEO, HuPuRes.TAB_RANKS, HuPuRes.TAB_DATA }; private final static int INDEX_GAME = 0; private final static int INDEX_NEWS = 1; private final static int INDEX_VIDEO = 2; private final static int INDEX_STANDINGS = 3; private final static int INDEX_NBA_DATA = 4; private int pageIndex; /** 左菜单 */ private SlidingMenu mSideMenu; private static String SORRY_NOTIFY = "抱歉,%s vs %s闹钟设置失败"; private static String SUCCESS_NOTIFY = "闹钟设置成功,您将会收到%s vs %s的推送通知"; private static String CANCEL_NOTIFY = "闹钟取消成功"; /** 左侧菜单适配器 */ // LeftMenuAdapter menuAdapter; /** 当前选中碎片的索引 */ private int mCurTabIndex = -1; /** 接口需要的参数 */ private String curTag; ImageButton mBtnGame; ImageButton mBtnNews; ImageButton mBtnVideo; ImageButton mBtnStandings; ImageButton mBtnData; /**判断是否从scheme跳转进入了其他页面*/ boolean bScheme; LinearLayout showMoreLayout, menuTopLayout; /** 提示用户关注球队需要打开接收通知对话框 */ private final int DIALOG_NOTIFY = 1311; BaseGameEntity followEntity; BaseGameFragment followFragment; BaseFragment curFragment; /** 是否显示了帮助 */ boolean showGuide; int delay = 1000; /* * 是否初始化了赛程页,由于会有外部跳转的可能,因此可能没有得到初始化页面就直接进入了 */ boolean bInitGameTag; /** 如果是从外部搜索source跳转进入,则需要在返回时退回到搜索app */ boolean bQuitBySource; HupuScheme scheme; View mBottomBar; Handler mHandler; @Override public void onCreate(Bundle savedInstanceState) { if (savedInstanceState != null) savedInstanceState.clear(); super.onCreate(savedInstanceState); // requestWindowFeature(Window.FEATURE_NO_TITLE); mHandler = new Handler(); // init(); Intent in = getIntent(); scheme = (HupuScheme) in.getSerializableExtra("scheme"); // scheme =new HupuScheme(); // scheme .paser(Uri.parse("app://nba/nba/news/1345504")); if (scheme == null) { // 默认进入左侧菜单第一个行的联赛 startDefaultFragment(); } else { // treatScheme(); } checkUMengUpdate(); } private void checkUMengUpdate() { // umeng UmengUpdateAgent.update(this); FeedbackAgent agent = new FeedbackAgent(this); agent.sync(); } /** 处理scheme的跳转问题 */ private void treatScheme() { // scheme =new HupuScheme(); // scheme .paser(Uri.parse("app://soccercupleagues/worldcup/stats/59")); HupuLog.d("treatScheme====" + scheme.template+"----tab="+scheme.mode); boolean bFromSource = scheme.getParameter("r") != null; HupuLog.d(scheme.mUri + " nquit=" + bFromSource); // umeng事件,提交来源 if (bFromSource) { sendUmeng(HuPuRes.UMENG_EVENT_VISIT, scheme.mode, scheme.getParameter("r")); } if (HuPuRes.TAB_NEWS.equalsIgnoreCase(scheme.mode)) { if (scheme.id > 0) { // 跳转到新闻页详情 Intent in = new Intent(this, NewsDetailActivity.class); in.putExtra("nid", (long) scheme.id); in.putExtra("reply", 0); in.putExtra("tag", scheme.game); startActivity(in); bQuitBySource = bFromSource; bScheme=true; } else { // 第一级的TAB startFragment( scheme.template, scheme.game, scheme.mode); } return; } if (HuPuRes.SUB_TAB_CASINO.equals(scheme.mode)) { if (scheme.id > 0) { Intent in = null; if (HuPuRes.TEMPLATE_SOCCER_LEAGUE .equalsIgnoreCase(scheme.template) || HuPuRes.TEMPLATE_SOCCER_CUP_LEAGUE .equalsIgnoreCase(scheme.template)) { in = new Intent(this, FootballGameActivity.class); } else if (scheme.template.equals(HuPuRes.TEMPLATE_NBA)) { in = new Intent(this, NBAGameActivity.class); } else if (scheme.template.equals(HuPuRes.TEMPLATE_CBA)) { in = new Intent(this, BasketballActivity.class); } in.putExtra("gid", scheme.id); in.putExtra("tag", scheme.game); in.putExtra("tab", BaseGameActivity.TAB_GUESS); startActivity(in); bScheme=true; } else { // 第一级的TAB startFragment(scheme.template, scheme.game, scheme.mode); } return; } if ( scheme.mode == null)// 找不到这个联赛,默认跳转到第一个 startDefaultFragment(); else { if (HuPuRes.TAB_GAMES.equalsIgnoreCase(scheme.mode) || HuPuRes.TAB_VIDEO.equalsIgnoreCase(scheme.mode) || HuPuRes.TAB_RANKS.equalsIgnoreCase(scheme.mode)) { // 第一级的TAB startFragment(scheme.template, scheme.game, scheme.mode); } else { if (scheme.id <= 0)// 为了应付董大师的高端测试 { startDefaultFragment(); return; } // 第二级的TAB Intent in = null; if (HuPuRes.TEMPLATE_NBA.equalsIgnoreCase(scheme.template)) { // NBA if (HuPuRes.SUB_TAB_PLAYER.equalsIgnoreCase(scheme.mode)) { // 球员数据 in = new Intent(this, NBAPlayerInfoActivity.class); in.putExtra("pid", scheme.id); startActivity(in); bQuitBySource = bFromSource; return; } else if (HuPuRes.SUB_TAB_TEAM .equalsIgnoreCase(scheme.mode)) { // 球队 in = new Intent(this, NBATeamActivity.class); in.putExtra("tid", scheme.id); startActivity(in); bQuitBySource = bFromSource; return; } else in = new Intent(this, NBAGameActivity.class); } else if (HuPuRes.TEMPLATE_CBA .equalsIgnoreCase(scheme.template)) { // CBA in = new Intent(this, BasketballActivity.class); } else if (HuPuRes.TEMPLATE_SOCCER_LEAGUE .equalsIgnoreCase(scheme.template) || HuPuRes.TEMPLATE_SOCCER_CUP_LEAGUE .equalsIgnoreCase(scheme.template)) { // 足球 in = new Intent(this, FootballGameActivity.class); } if (in != null) { // 必须有gid,tag,lid HupuLog.d("scheme jump", "tag=" + scheme.game + " gid=" + scheme.id); in.putExtra("gid", scheme.id); in.putExtra("tag", scheme.game); if (scheme.mode != null) in.putExtra("tab", scheme.mode); startActivity(in); bQuitBySource = bFromSource; bScheme=true; } else startDefaultFragment(); } } } HomePageAdapter mPageAdapter; ViewPager mPager; TabPageIndicator indicator; public String getParam() { return DeviceInfo.getDeviceInfo(this) + "&token=" + mToken; } /** 初始化ViewPager */ private void initViewPager() { mPageAdapter = new HomePageAdapter(this, getSupportFragmentManager(), leagueList); // mPageAdapter.setReqParam(DeviceInfo.getDeviceInfo(this) + "&token=" // + mToken); mPager = (ViewPager) findViewById(R.id.view_pager); mPager.setAdapter(mPageAdapter); mPager.setOnPageChangeListener(new PageChangeListener()); mPager.setOffscreenPageLimit(1); indicator = (TabPageIndicator) findViewById(R.id.page_indicator); indicator.setOnPageChangeListener(new PageChangeListener()); indicator.setViewPager(mPager); } FrameLayout.LayoutParams txtLp; FrameLayout.LayoutParams clp; /**添加小红点到指定栏目*/ private void addRedPoint(int index){ //获取导航的tabview,并移除导航 ViewGroup group = (ViewGroup)indicator.getChildAt(0); View target =group.getChildAt(index); LinearLayout.LayoutParams tlp=(LinearLayout.LayoutParams)target.getLayoutParams(); group.removeView(target); //自建容器 FrameLayout container = new FrameLayout(this); if(txtLp ==null) txtLp=new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); container.addView(target,txtLp); //加入小红点 if(clp==null) { clp= new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); clp.gravity = Gravity.RIGHT | Gravity.TOP; int topPadding = (int)getResources().getDimension(R.dimen.top_bar_point_top_padding); int rightPadding = (int)getResources().getDimension(R.dimen.top_bar_point_right_padding); clp.setMargins(0,topPadding ,rightPadding, 0); } ImageView tt=new ImageView(this); tt.setImageResource(R.drawable.icon_home_red_point); container.addView(tt,clp); tt.setId(1000+index); //导航中加入容器 group.addView(container, index, tlp); } /**显示指定栏目的小红点*/ private void showRedPoint(int index) { View v=indicator.findViewById(1000+index); if(v==null) addRedPoint( index); else v.setVisibility(View.VISIBLE); } /**隐藏指定栏目的小红点*/ private void hideRedPoint(int index){ //获取导航的tabview,并移除导航 View v=indicator.findViewById(1000+index); if(v!=null) v.setVisibility(View.INVISIBLE); } /** 默认进入第一页 */ private void startDefaultFragment() { init(); setDefaultTab(); mPager.setCurrentItem(0, false); updateSideInfo(); } private void startFragment(String template, String game, String mode) { init(); updateSideInfo(); int index = 0; for (LeaguesEntity entity : leagueList) { if (entity.en.equals(game)) break; index++; } mPageAdapter.clickTab(index, mode, false); mPager.setCurrentItem(index, false); //将mode 转换为老版本可认的 tabindex;解决点击通知 底部tab不对应的bug int tabIndex = 0; if (mode.equalsIgnoreCase(HuPuRes.TAB_GAMES)) { tabIndex = INDEX_GAME; }else if (mode.equalsIgnoreCase(HuPuRes.TAB_NEWS)) { tabIndex = INDEX_NEWS; }else if (mode.equalsIgnoreCase(HuPuRes.TAB_VIDEO)) { tabIndex = INDEX_VIDEO; }else if (mode.equalsIgnoreCase(HuPuRes.TAB_RANKS)) { tabIndex = INDEX_STANDINGS; }else if (mode.equalsIgnoreCase(HuPuRes.TAB_DATA)) { tabIndex = INDEX_NBA_DATA; }else{ tabIndex = INDEX_GAME; } setBackground(tabIndex); } class PageChangeListener implements OnPageChangeListener { int curState; /** * arg0==1正在滑动, arg0==2滑动完毕了, arg0==0什么都没做 * */ @Override public void onPageScrollStateChanged(int arg) { // HupuLog.d("onPageScrollStateChanged=" + arg); if (curState == 0) { if (arg == 2) { // 点击tab,隐藏tab hideTab(); } else if (arg == 1) { // 手动滑动tab,隐藏tab // hideTab(); } } if (curState != 0 && arg == 0) { // 显示tab // showTab(); } curState = arg; } /** * arg0 :当前页面,及你点击滑动的页面 arg1:当前页面偏移的百分比 arg2:当前页面偏移的像素位置 * */ @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // HupuLog.d("onPageScrolled=" + arg0); } @Override public void onPageSelected(int index) { pageIndex = index; updatePage(index); if (index == 0) { mSideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); } else {// 切换到中间(非头尾)的ViewPager mSideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); } mSideMenu.setSlidingEnabled(index == 0?true:false); } } private int getTabIndex(String tab) { if (HuPuRes.TAB_GAMES.equals(tab)) return INDEX_GAME; else if (HuPuRes.TAB_NEWS.equals(tab)) return INDEX_NEWS; else if (HuPuRes.TAB_VIDEO.equals(tab)) return INDEX_VIDEO; else if (HuPuRes.TAB_RANKS.equals(tab)) { return INDEX_STANDINGS; } else if (HuPuRes.TAB_DATA.equals(tab)) { return INDEX_NBA_DATA; } return 0; } /** 初始化默认的tab按钮 */ private void setDefaultTab() { // String tab=mPageAdapter.getCurTab(); String tab = null; if (leagueList != null && leagueList.size() > 0) tab = leagueList.get(0).show_default_tab; mSideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); showTab(0);// 显示第一个联赛的tab setBackground(getTabIndex(tab)); } /** 不同模板间的底部菜单可能完全不同,因此切换时需要先隐藏,再显示 */ private void hideTab() { mBottomBar.setVisibility(View.GONE);// 需要设置动画 } /** * 显示底部tab * * @param index顶部tab的索引 * */ private void showTab(int index) { String template = mPageAdapter.getTemplate(index); if (HuPuRes.TEMPLATE_BROWSER.equals(template) || HuPuRes.TEMPLATE_BROWSER_NAV.equals(template)) { mBottomBar.setVisibility(View.GONE); } else if (HuPuRes.TEMPLATE_DISCOVERY.equals(template)) { mBottomBar.setVisibility(View.GONE); setRedPoint(mRedList); } else { if (HuPuRes.TEMPLATE_NBA.equals(template)) { mBtnData.setVisibility(View.VISIBLE); } else { mBtnData.setVisibility(View.GONE); } mBottomBar.setVisibility(View.VISIBLE);// 需要设置动画 String tab = mPageAdapter.getCurTab(); // HupuLog.d("fb","show tab="+tab); // HupuLog.d("fb","show cur tab="+mCurTabIndex); int tabIndex = getTabIndex(tab); if (tabIndex != mCurTabIndex) { setBackground(tabIndex); } } } /** * 当页面切换时需要对当前的比赛 * */ private void updatePage(int index) { mPageAdapter.updateCurTab(index); showTab(index); String template = mPageAdapter.getTemplate(index); updateLeagueIcon(template); if (!HuPuRes.TAB_GAMES.equals(mPageAdapter.getCurTab()) || (!HuPuRes.TEMPLATE_CBA.equals(template) && !HuPuRes.TEMPLATE_NBA .equals(template))) { // 如果不是比赛tab离开房间 leaveRoom(); } if (HuPuRes.TAB_GAMES.equals(mPageAdapter.getCurTab())&&(!HuPuRes.TEMPLATE_CBA.equals(template) && !HuPuRes.TEMPLATE_NBA .equals(template))) { BaseFragment fragment = (BaseFragment) mPageAdapter.getItem(index); fragment.runTimer(); } } /** 当页是否是活动页 */ public boolean isActiveFragment(BaseFragment fragment) { int index = mPager.getCurrentItem(); if (fragment == mPageAdapter.getItem(index)) { // HupuLog.d("fb","active="+fragment.getClass().getSimpleName()); return true; } return false; } /** 初始化左菜单 */ private void initMenu() { // configure the SlidingMenu mSideMenu = new SlidingMenu(this); mSideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); // menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); mSideMenu.setShadowWidthRes(R.dimen.shadow_width); mSideMenu.setFadeEnabled(true); mSideMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); mSideMenu.setFadeDegree(0.35f); mSideMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); mSideMenu.setMenu(R.layout.menu_frame_left); // 打开menu mSideMenu.showMenu(); showMenu(); mSideMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() { @Override public void onClosed() { mSideMenu.setSlidingEnabled(pageIndex == 0 ? true:false); } }); mSideMenu.setOnOpenListener(new SlidingMenu.OnOpenListener() { @Override public void onOpen() { // 菜单打开需要请求金币数 } }); leagueList = mApp.loadLeagues(); setMenuItem(); } /** * 设置左侧导航 的项是否显示 */ private void setMenuItem() { if (mToken != null) { mSideMenu.findViewById(R.id.menu_my_caipiao).setVisibility( View.VISIBLE); // mSideMenu.findViewById(R.id.my_coin_info).setVisibility(View.VISIBLE); mSideMenu.findViewById(R.id.menu_my_caipiao_line).setVisibility( View.VISIBLE); // mSideMenu.findViewById(R.id.my_coin_info_line).setVisibility(View.VISIBLE); mSideMenu.findViewById(R.id.menu_my_hupucoin_info).setVisibility( View.VISIBLE); mSideMenu.findViewById(R.id.menu_my_hupucoin_line).setVisibility( View.VISIBLE); } else { mSideMenu.findViewById(R.id.menu_my_caipiao).setVisibility( View.GONE); // mSideMenu.findViewById(R.id.my_coin_info).setVisibility(View.GONE); mSideMenu.findViewById(R.id.menu_my_caipiao_line).setVisibility( View.GONE); // mSideMenu.findViewById(R.id.my_coin_info_line).setVisibility(View.GONE); mSideMenu.findViewById(R.id.menu_my_hupucoin_info).setVisibility( View.GONE); mSideMenu.findViewById(R.id.menu_my_hupucoin_line).setVisibility( View.GONE); } } private void getSideBar(boolean isShowMenu) { initParameter(); mParams.put("token", mToken); // String sign = SSLKey.getSSLSign(mParams, // SharedPreferencesMgr.getString("sugar", ""));// salt // 值由init中的sugar给出。必须要有的。 // mParams.put("sign", sign); sendRequest(HuPuRes.REQ_METHOD_GET_SIDEBAR, mParams, new HupuHttpHandler(this), false); if (!SharedPreferencesMgr.getString(HuPuRes.KEY_NICK_NAME, "").equals( "")) { ((TextView) findViewById(R.id.menu_nick_name)) .setText(SharedPreferencesMgr.getString( HuPuRes.KEY_NICK_NAME, "")); } else { ((TextView) findViewById(R.id.menu_nick_name)) .setText(getString(R.string.my_userinfo)); } if(isShowMenu) mSideMenu.showMenu(); } private void init() { setContentView(R.layout.layout_content_frame); HuPuRes.setClient(mDeviceId); showMoreLayout = (LinearLayout) LayoutInflater.from(this).inflate( R.layout.menu_show_more, null); // menuTopLayout = (LinearLayout) LayoutInflater.from(this).inflate( // R.layout.item_menu_top, null); initMenu(); mBtnGame = (ImageButton) findViewById(R.id.btn_game); mBtnNews = (ImageButton) findViewById(R.id.btn_news); mBtnVideo = (ImageButton) findViewById(R.id.btn_video); mBtnStandings = (ImageButton) findViewById(R.id.btn_standings); mBtnData = (ImageButton) findViewById(R.id.btn_data); mBottomBar = findViewById(R.id.layout_bottom); // btnShare = findViewById(R.id.btn_edit); setOnClickListener(R.id.btn_setup); setOnClickListener(R.id.btn_menu); // setOnClickListener(R.id.show_more); setOnClickListener(R.id.btn_game); setOnClickListener(R.id.btn_standings); setOnClickListener(R.id.btn_video); setOnClickListener(R.id.btn_news); setOnClickListener(R.id.btn_data); setOnClickListener(R.id.menu_name_info); setOnClickListener(R.id.menu_my_caipiao); setOnClickListener(R.id.menu_my_hupucoin_info); setOnClickListener(R.id.my_coin_info); // setOnClickListener(R.id.menu_recommend); setOnClickListener(R.id.menu_set); setOnClickListener(R.id.menu_rank_info); setOnClickListener(R.id.btn_edit); initViewPager(); } /** 初始化标记位 */ private int curMode; public void setTouchModeAbove(boolean bMargin) { if (bMargin) mSideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); else mSideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); } /** * 延迟显示菜单,因为产品设计上需要第一次加载的时候让用户看到左侧有导航 之后的加载由于fragment加载会需要一点时间,所以延迟200ms */ private void showMenu() { mHandler.postDelayed(new Runnable() { @Override public void run() { mSideMenu.showContent(true); } }, delay); delay = 200; } @Override protected void onStop() { if (!mApp.isAppOnForeground()) { leaveRoom(); } super.onStop(); } @Override protected void onResume() { super.onResume(); if (scheme != null) { treatScheme(); scheme = null; // hasResume = true; return; } else { if (bQuitBySource) { //如果是从搜索引擎进入看球的app,将直接退出应用返回到搜索app mHandler.postDelayed(new Runnable() { @Override public void run() { quit();// 退出到搜索app } }, 100); return; } else if(bScheme) { //如果是初次是scheme跳转到其他页面,返回时需要初始化页面,并跳转到默认页面 bScheme=false; startDefaultFragment(); } else { //每次进入时都需要刷新下侧边栏的数据 updateSideInfo(); } } } /**更新侧边栏的数据*/ private void updateSideInfo() { setMenuItem(); // 更新侧边栏 用户信息 getSideBar(false); if (mApp.loginSuccess == 1) { leagueList = mApp.loadLeagues(); updateTopTitle(); mApp.loginSuccess = 0; } } private void clickTab(int index) { mPageAdapter.clickTab(mPager.getCurrentItem(), TABS[index], true); setBackground(index); } @SuppressLint("NewApi") @Override public void treatClickEvent(int id) { super.treatClickEvent(id); switch (id) { case R.id.btn_menu: sendUmeng(HuPuRes.UMENG_EVENT_NAV, HuPuRes.UMENG_KEY_NAV_SUM, HuPuRes.UMENG_VALUE_MENU_BTN); mSideMenu.setSlidingEnabled(true); getSideBar(true); break; case R.id.btn_setup: startActivity(new Intent(this, SetupActivity.class)); overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out); break; case R.id.btn_video: clickTab(INDEX_VIDEO); break; case R.id.btn_news: clickTab(INDEX_NEWS); break; case R.id.btn_game: clickTab(INDEX_GAME); break; case R.id.btn_standings: clickTab(INDEX_STANDINGS); break; case R.id.btn_data: clickTab(INDEX_NBA_DATA); break; case R.id.menu_name_info: sendUmeng(HuPuRes.UMENG_EVENT_NAV, HuPuRes.UMENG_KEY_NAV_SUM, HuPuRes.UMENG_VALUE_MY_ACCOUNT); Intent userInfoIntent = new Intent(this, AccountActivity.class); startActivity(userInfoIntent); break; case R.id.menu_my_caipiao: Intent myCaipiao = new Intent(this, MyCaipiaoListActivity.class); startActivity(myCaipiao); break; case R.id.menu_my_hupucoin_info: Intent hupucoinIntent = new Intent(this, UserHupuDollorInfoActivity.class); startActivity(hupucoinIntent); break; case R.id.my_coin_info: Intent coinIntent = new Intent(this, UserGoldInfoActivity.class); startActivity(coinIntent); break; // case R.id.menu_recommend: // break; case R.id.menu_set: Intent setintent = new Intent(this, SetupActivity.class); startActivity(setintent); break; case R.id.menu_rank_info: sendUmeng(HuPuRes.UMENG_EVENT_NAV, HuPuRes.UMENG_KEY_NAV_SUM, HuPuRes.UMENG_VALUE_QUIZ_RANK); Intent intent = new Intent(this, GuessRankActivity.class); intent.putExtra("rank_type", 1); startActivity(intent); break; case R.id.btn_share: // if (mFragmentWebview != null) { // String title = mFragmentWebview.getShareContent(); // if (title != null) // showShareView("虎扑看球", mFragmentWebview.getShareUrl(), title, // true); // } break; case R.id.btn_edit: lastTitle = mPageAdapter.getPageTitle(mPager.getCurrentItem()) .toString(); showEditDialog(); break; } // hideAction(id); } // public void hideAction(int id) // { // if(id!=R.id.btn_edit) // onCancle(); // } String lastTitle; private synchronized void showEditDialog() { final EditDialog edialog = new EditDialog(this, leagueList); // edialog.setOnDismissListener(new OnDismissListener() { // // @Override // public void onDismiss(DialogInterface dialog) { // // if(edialog.getIsChanged()) // { // HupuLog.d("fb","lastTitle="+lastTitle); // mApp.insertLeagues(leagueList); // mPageAdapter.updateTitle(leagueList,lastTitle); // indicator.notifyDataSetChanged(); // HupuLog.d("fb","pos="+mPageAdapter.getEditedPagePos()); // int pos=mPageAdapter.getEditedPagePos(); // mPageAdapter.notifyDataSetChanged(); // if(pos!=mPager.getCurrentItem()) // mPager.setCurrentItem(pos); // } // } // }); edialog.goShow(); // action_TopToBottom(edialog); } // public void action_TopToBottom(final EditDialog edialog) // { // // TODO Auto-generated method stub // final LinearLayout selection = (LinearLayout) // findViewById(R.id.action_bar_shuttle_container); // View mian_ui_ = findViewById(R.id.btn_edit); // mian_ui_.setEnabled(false); // selection.setLayoutParams(new // AbsoluteLayout.LayoutParams(LayoutParams.FILL_PARENT, // LayoutParams.FILL_PARENT, 0, 0)); // // // selection.setBackgroundColor(R.color.abs__bright_foreground_disabled_holo_dark); // selection.addView(edialog); // Animation showAnim=AnimationUtils.loadAnimation(this, // R.anim.fade_in_top); // // edialog.startAnimation(showAnim); // // showAnim.setAnimationListener(new AnimationListener(){ // // @Override // public void onAnimationEnd(Animation animation) // { // // if (edialog.getIsChanged()) { // HupuLog.d("fb", "lastTitle=" + lastTitle); // mApp.insertLeagues(leagueList); // mPageAdapter.updateTitle(leagueList, lastTitle); // indicator.notifyDataSetChanged(); // HupuLog.d("fb", "pos=" + mPageAdapter.getEditedPagePos()); // int pos = mPageAdapter.getEditedPagePos(); // mPageAdapter.notifyDataSetChanged(); // if (pos != mPager.getCurrentItem()) // mPager.setCurrentItem(pos); // } // edialog.clearAnimation(); // // } // @Override // public void onAnimationRepeat(Animation animation) // { // // TODO Auto-generated method stub // } // @Override // public void onAnimationStart(Animation animation) // { // // TODO Auto-generated method stub // // }}); // // } /** 关注和取消比赛 */ public void setFollowGame(BaseGameEntity entity, BaseGameFragment fragment) { if (mApp.needNotify || entity.bFollow > 0) { // byte unFollow = (byte) (entity.i_isFollow > 0 ? 0 : 1); byte unFollow = (byte) entity.bFollow; if (fragment instanceof BasketballGamesFragment) { ((BasketballGamesFragment) fragment).updateFollow(entity); } else if (fragment instanceof SoccerGamesFragment) ((SoccerGamesFragment) fragment) .updateFollow((ScoreboardEntity) entity); int lid = findLid(fragment.mTag); followGame(lid, entity.i_gId, unFollow, new FollowHandler(entity, fragment)); } else { followFragment = fragment; followEntity = entity; showCustomDialog(DIALOG_NOTIFY, R.string.push_title, R.string.push_open_notify, 3, R.string.open_notify, R.string.cancel); } } private void setBackground(int index) { HupuLog.d("setbg", "findex=" + mCurTabIndex); switch (mCurTabIndex) {// 点击前 case INDEX_GAME: // if (curMode == HomePageAdapter.MODE_FOOTBALL // || curMode == HomePageAdapter.MODE_CUP_CL) // mBtnGame.setImageResource(R.drawable.btn_football_game_up); // else // mBtnGame.setImageResource(R.drawable.btn_nba_game_up); mBtnGame.setBackgroundColor(0x00000001); break; case INDEX_NEWS: mBtnNews.setImageResource(R.drawable.btn_news_up); mBtnNews.setBackgroundColor(0x00000001); break; case INDEX_VIDEO: mBtnVideo.setImageResource(R.drawable.btn_video); mBtnVideo.setBackgroundColor(0x00000001); break; case INDEX_STANDINGS: mBtnStandings.setImageResource(R.drawable.btn_standings); mBtnStandings.setBackgroundColor(0x00000001); break; case INDEX_NBA_DATA: mBtnData.setImageResource(R.drawable.btn_data_up); mBtnData.setBackgroundColor(0x00000001); break; } switch (index) {// 点击后 case INDEX_GAME: // if (curMode == HomePageAdapter.MODE_FOOTBALL // || curMode == HomePageAdapter.MODE_CUP_CL) // mBtnGame.setImageResource(R.drawable.btn_football_game_down); // else // mBtnGame.setImageResource(R.drawable.btn_nba_game_down); mBtnGame.setBackgroundResource(R.drawable.bg_bottom_hover); break; case INDEX_NEWS: mBtnNews.setImageResource(R.drawable.btn_news_down); mBtnNews.setBackgroundResource(R.drawable.bg_bottom_hover); break; case INDEX_VIDEO: mBtnVideo.setImageResource(R.drawable.btn_video_hover); mBtnVideo.setBackgroundResource(R.drawable.bg_bottom_hover); break; case INDEX_STANDINGS: mBtnStandings.setImageResource(R.drawable.btn_standings_hover); mBtnStandings.setBackgroundResource(R.drawable.bg_bottom_hover); break; case INDEX_NBA_DATA: mBtnData.setImageResource(R.drawable.btn_data_down); mBtnData.setBackgroundResource(R.drawable.bg_bottom_hover); break; } mCurTabIndex = index; String template = mPageAdapter.getTemplate(mPager.getCurrentItem()); updateLeagueIcon(template); } private void updateLeagueIcon(String template) { // 更换比赛背景 if (HuPuRes.TEMPLATE_CBA.equals(template) || HuPuRes.TEMPLATE_NBA.equals(template)) { if (mCurTabIndex == INDEX_GAME) { mBtnGame.setImageResource(R.drawable.btn_nba_game_down); } else { mBtnGame.setImageResource(R.drawable.btn_nba_game_up); } } else { if (mCurTabIndex == INDEX_GAME) { mBtnGame.setImageResource(R.drawable.btn_football_game_down); } else { mBtnGame.setImageResource(R.drawable.btn_football_game_up); } } } private ArrayList<String> mRedList; private void setRedPoint(ArrayList<String> redList) { mRedList = redList; mSideMenu.findViewById(R.id.caipiao_red_point).setVisibility(View.GONE); mSideMenu.findViewById(R.id.coin_red_point).setVisibility(View.GONE); mSideMenu.findViewById(R.id.account_red_point).setVisibility(View.GONE); mSideMenu.findViewById(R.id.rank_red_point).setVisibility(View.GONE); // mSideMenu.findViewById(R.id.recommend_red_point).setVisibility(View.GONE); mSideMenu.findViewById(R.id.set_red_point).setVisibility(View.GONE); findViewById(R.id.user_red_point).setVisibility(View.GONE); //隐藏导航小红点 for(int i = 0;i<leagueList.size();i++){ hideRedPoint(i); } if (redList != null) { for (String red : redList) { if (red.contains("caipiao")) mSideMenu.findViewById(R.id.caipiao_red_point) .setVisibility(View.VISIBLE); if (red.contains("caisno") || red.contains("store") || red.contains("prize") || red.contains("task")) mSideMenu.findViewById(R.id.coin_red_point).setVisibility( View.VISIBLE); if (red.contains("account")) mSideMenu.findViewById(R.id.account_red_point) .setVisibility(View.VISIBLE); if (red.contains("casinorank")) mSideMenu.findViewById(R.id.rank_red_point).setVisibility( View.VISIBLE); // if (red.contains("apps")) // mSideMenu.findViewById(R.id.recommend_red_point) // .setVisibility(View.VISIBLE); if (red.contains("settings")) mSideMenu.findViewById(R.id.set_red_point).setVisibility( View.VISIBLE); if (red.contains("caipiao") || red.contains("coin") || red.contains("casinorank") || red.contains("account") || red.contains("apps") || red.contains("settings")) findViewById(R.id.user_red_point).setVisibility( View.VISIBLE); //设置导航小红点 for(int i = 0;i<leagueList.size();i++){ if (red.contains(leagueList.get(i).en)) showRedPoint(i); } } } //发现的小红点操作 int index = mPager.getCurrentItem(); String template = mPageAdapter.getTemplate(index); if (HuPuRes.TEMPLATE_DISCOVERY.equals(template)) { if ((DiscoveryFragment)mPageAdapter.getItem(index) != null) { ((DiscoveryFragment)mPageAdapter.getItem(index)).setRedPointData(redList); } } } @Override public void onReqResponse(Object o, int methodId) { super.onReqResponse(o, methodId); if (o == null) return; switch (methodId) { case HuPuRes.REQ_METHOD_GET_SIDEBAR: SidebarEntity sidebarEntity = (SidebarEntity) o; if (sidebarEntity != null) { // 小红点 setRedPoint(sidebarEntity.reddotList); if (sidebarEntity.balance != null) { // 转百万 // if (sidebarEntity.balance.length() > 6) { // // ((TextView) findViewById(R.id.gold_num)) // .setText(sidebarEntity.balance.substring(0, // sidebarEntity.balance.length() - 4) // + " 万金币"); // } else { // } TextView huputv = (TextView) findViewById(R.id.hupucoin_num); if(mToken!=null){ huputv.setVisibility(View.VISIBLE); huputv.setText(sidebarEntity.hupuDollor_balance + getString(R.string.hupudollor_bean)); }else{ huputv.setVisibility(View.GONE); } ((TextView) findViewById(R.id.gold_num)) .setText(sidebarEntity.balance + getString(R.string.gold_bean)); ((TextView) findViewById(R.id.rank_info)) .setText(sidebarEntity.rankInfo); } if (sidebarEntity.walletBalance != null) { ((TextView) findViewById(R.id.wallet_info)) .setText(sidebarEntity.walletBalance + "元"); } } break; case HuPuRes.REQ_METHOD_SET_NOTIFY: SendMsgResp msg = (SendMsgResp) o; if (msg.pid == 0) { // showToast("设置失败"); } else { boolean t = SharedPreferencesMgr.getBoolean("is_push", true); SharedPreferencesMgr.setBoolean("is_push", !t); } break; } } @Override public void onErrResponse(Throwable error, int type) { super.onErrResponse(error, type); } public boolean sendAppRequest(int reqType, String tag, RequestParams params, AsyncHttpResponseHandler handler) { return mApp.sendHttpRequest(reqType, tag, params, handler); } public boolean sendRequest(int reqType, RequestParams params) { return sendRequest(reqType, curTag, params, new HupuHttpHandler(this), false); } /** * * */ public boolean sendTagRequest(int reqType, RequestParams params) { return sendRequest(reqType, curTag, params, new HupuHttpHandler(this), false); } public RequestParams getHttpParams(boolean init) { if (init) initParameter(); return mParams; } /** * 切换到实时页面 * */ public void switchToLive(BasketballGameEntity en, int pos, boolean matchDay,String tag) { HuPuApp.hasTeam(en.i_home_tid, en.str_home_name); HuPuApp.hasTeam(en.i_away_tid, en.str_away_name); Intent in = new Intent(this, NBAGameActivity.class); in.putExtra("game", en); in.putExtra("match", matchDay); in.putExtra("pos", pos); in.putExtra("tag", tag); startActivity(in); // startActivity(in); } long quit_time; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { // 新增逻辑,按两次返回退出 long curtime = System.currentTimeMillis(); if (quit_time == 0 || curtime - quit_time > 3000) { showToast(getString(R.string.quit_app)); } else { quit(); } quit_time = System.currentTimeMillis(); return true; } else if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == KeyEvent.ACTION_DOWN) { // sendUmeng(HuPuRes.UMENG_EVENT_NAV, HuPuRes.UMENG_KEY_NAV_SUM, // HuPuRes.UMENG_VALUE_MENU_BTN); // if (mSideMenu.isMenuShowing()) { // // menu.showContent(); // } else // getSideBar(true); } return false; } /** * 处理点击事件 * */ @Override public void clickNegativeButton(int dialogId) { super.clickNegativeButton(dialogId); if (mDialog != null) mDialog.cancel(); } @Override public void onLoginSuccess() { // TODO Auto-generated method stub super.onLoginSuccess(); leagueList = mApp.loadLeagues(); updateTopTitle(); } /** * 处理点击事件 * */ @Override public void clickPositiveButton(int dialogId) { super.clickPositiveButton(dialogId); if (DialogRes.DIALOG_QUIT_PROMPT == dialogId) quit(); else if (dialogId == DIALOG_NOTIFY) { // 打开通知 mApp.setNotify(true); setFollowGame(followEntity, followFragment); reqNotify(1); } else if (dialogId == DIALOG_SHOW_BIND_PHONE) { // 去绑定手机 Intent in = new Intent(this, PhoneInputActivity.class); startActivity(in); } if (mDialog != null) mDialog.cancel(); } class FollowHandler extends AsyncHttpResponseHandler { private BaseGameEntity mEntity; BaseFragment mFragment; public FollowHandler(BaseGameEntity entity, BaseFragment fragment) { mEntity = entity; mFragment = fragment; } @Override public void onSuccess(String content, int reqType) { super.onSuccess(content, reqType); FollowResp resp = (FollowResp) JsonPaserFactory.paserObj( content, reqType); if (resp == null || resp.i_success == 0) { showToast(String.format(SORRY_NOTIFY, mEntity.str_home_name, mEntity.str_away_name)); if (mFragment instanceof BasketballGamesFragment) ((BasketballGamesFragment) mFragment) .updateFollow((BasketballGameEntity) mEntity); else if (mFragment instanceof SoccerGamesFragment) ((SoccerGamesFragment) mFragment) .updateFollow((ScoreboardEntity) mEntity); } else { if (reqType == HuPuRes.REQ_METHOD_FOLLOW_NBA_GAME || reqType == HuPuRes.REQ_METHOD_FOLLOW_GAME) { showToast(String.format(SUCCESS_NOTIFY, mEntity.str_home_name, mEntity.str_away_name)); } if (reqType == HuPuRes.REQ_METHOD_FOLLOW_NBA_GAME_CANCEL || reqType == HuPuRes.REQ_METHOD_FOLLOW_GAME_CANCEL) { showToast(CANCEL_NOTIFY); } } } } @Override public void onSocketError(Exception socketIOException) { // 发生错误重连。 // if (mFragmentNbaGames != null && mFragmentNbaGames.bMatchDay) // reconnect(false); } @Override public void onSocketResp(JSONObject obj) { HupuLog.d("fb", "onSocketResp" + obj); if (obj != null) { String room = obj.optString("room"); try { BasketballGamesFragment fragment = null; if (HuPuRes.ROOM_NBA_HOME.equals(room)) { fragment = (BasketballGamesFragment) mPageAdapter .getFragment("nba", HuPuRes.TAB_GAMES); } else if (HuPuRes.ROOM_CBA_HOME.equals(room)) { fragment = (BasketballGamesFragment) mPageAdapter .getFragment("cba", HuPuRes.TAB_GAMES); } if (fragment != null) { BasketBallGamesBlock entity = new BasketBallGamesBlock(); entity.paser(obj); // if(entity.mGames!=null) // HupuLog.d("fb","status" + // entity.mGames.get(0).byt_status); fragment.updateData(entity); } } catch (Exception e) { e.printStackTrace(); } } } @Override public void onSocketConnect() { // 连接成功了,加入room。 joinRoom(); } /** * n=1 follow * */ public void reqNotify(int n) { initParameter(); mParams.put("isnotific", "" + n); sendRequest(HuPuRes.REQ_METHOD_SET_NOTIFY, mParams, new HupuHttpHandler(this), false); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (mController != null) { /** 使用SSO授权必须添加如下代码 */ UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler( requestCode); if (ssoHandler != null) { ssoHandler.authorizeCallBack(requestCode, resultCode, data); } } } public void finishShuddle() { // TODO Auto-generated method stub HupuLog.d("fb", "lastTitle=" + lastTitle); mApp.insertLeagues(leagueList); mApp.followLeague(leagueList); updateTopTitle(); } /**联赛顺序更新后,需要刷新顶部TAB*/ private void updateTopTitle() { mPageAdapter.updateTitle(leagueList, lastTitle); indicator.notifyDataSetChanged(); HupuLog.d("fb", "pos=" + mPageAdapter.getEditedPagePos()); int pos = mPageAdapter.getEditedPagePos(); mPageAdapter.notifyDataSetChanged(); if (pos != mPager.getCurrentItem()) mPager.setCurrentItem(pos); } // public void onCancle() // { // final LinearLayout selection = (LinearLayout) // findViewById(R.id.action_bar_shuttle_container); // // final EditDialog edialog = (EditDialog) selection.getChildAt(0); // if(edialog==null) // { // return; // } // // Animation hiddenAnim=AnimationUtils.loadAnimation(this, // R.anim.fade_out_top); // edialog.startAnimation(hiddenAnim); // // hiddenAnim.setAnimationListener(new AnimationListener(){ // // @Override // public void onAnimationEnd(Animation animation) // { // // edialog.clearAnimation(); // edialog.setLayoutParams(new // AbsoluteLayout.LayoutParams(AbsoluteLayout.LayoutParams.FILL_PARENT, 200, // 0, -490){}); // selection.removeAllViewsInLayout(); // View mian_ui_ = findViewById(R.id.btn_edit); // mian_ui_.setEnabled(true); // // HupuLog.d("fb","lastTitle="+lastTitle); // mApp.insertLeagues(leagueList); // mPageAdapter.updateTitle(leagueList,lastTitle); // indicator.notifyDataSetChanged(); // HupuLog.d("fb","pos="+mPageAdapter.getEditedPagePos()); // int pos=mPageAdapter.getEditedPagePos(); // mPageAdapter.notifyDataSetChanged(); // if(pos!=mPager.getCurrentItem()) // mPager.setCurrentItem(pos); // } // // @Override // public void onAnimationRepeat(Animation animation) // { // // TODO Auto-generated method stub // // } // // @Override // public void onAnimationStart(Animation animation) // { // // TODO Auto-generated method stub // // }}); // // // } }