package com.hupu.games.activity; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; import org.json.JSONArray; import org.json.JSONObject; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.hupu.games.HuPuApp; import com.hupu.games.R; import com.hupu.games.activity.HupuBaseActivity.ChatInterface; import com.hupu.games.adapter.RoomListAdapter; 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.BaseEntity; import com.hupu.games.data.ChatResp; import com.hupu.games.data.FollowResp; import com.hupu.games.data.PushNotify; import com.hupu.games.data.Recap; import com.hupu.games.data.SendMsgResp; import com.hupu.games.data.game.base.SimpleLiveResp; import com.hupu.games.data.game.base.SimpleScoreboard; import com.hupu.games.data.game.football.ScoreboardEntity; import com.hupu.games.data.game.football.SoccerEventsResp; import com.hupu.games.data.game.football.SoccerLiveResp; import com.hupu.games.data.game.football.SoccerOutsReq; import com.hupu.games.data.game.quiz.QuizCommitResp; import com.hupu.games.data.room.GiftRespResultEntity; import com.hupu.games.data.room.RoomEntity; import com.hupu.games.data.room.RoomListEntity; import com.hupu.games.dialog.EpandDownAnimation; import com.hupu.games.dialog.EpandDownAnimation.EpandAnimationCallBack; import com.hupu.games.fragment.ChatFragment; import com.hupu.games.fragment.FootballLineupFragment; import com.hupu.games.fragment.FootballLiveFragment; import com.hupu.games.fragment.LiveFragment; import com.hupu.games.fragment.QuizListFragment; import com.hupu.games.fragment.ReportFragment; import com.hupu.games.fragment.SoccerPlayByPlayFragment; import com.hupu.games.hupudollor.data.HupuDollorBalanceReq; import com.hupu.games.pay.HupuOrderActivity; import com.hupu.http.HupuHttpHandler; import com.koushikdutta.urlimageviewhelper.UrlImageViewHelper; import com.pyj.common.DeviceInfo; /** 足球比赛 */ public class FootballGameActivity extends BaseGameLiftActivity implements ChatInterface { private ScoreboardEntity mGameEntity; /** 事件直播页 */ private FootballLiveFragment mFragmentEvents; /** 战况页 */ private SoccerPlayByPlayFragment mFragmentPlayByPlay; private QuizListFragment mFragmentQuizList; private FootballLineupFragment mFootballLineupFragment; TextView txtShootout1; TextView txtShootout2; // 比分牌 View scoreLayout; TextView txtTime; boolean bGameEnd; private int curGameState; private int period; View mLayoutScoreBar; private String adUrl; /** * 是否为关注比赛,该变量是临时设置,因为关注或取消操作是延时操作,只有数据成功返回后,才是真实情况。 返回失败,则会重置 */ private boolean isFollow; private static String SORRY_NOTIFY = "抱歉,%s vs %s闹钟设置失败"; private static String SUCCESS_NOTIFY = "闹钟设置成功,您将会收到%s vs %s的推送通知"; private static String CANCEL_NOTIFY = "闹钟取消成功"; public final static byte STATUS_NOT_START = 1; public final static byte STATUS_START = 2; public final static byte STATUS_END = 4; public final static byte STATUS_EXTEND = 5; public final static byte STATUS_CANCEL = 6; private String playByPlayRoom = "%s_PLAYBYPLAY"; /** 阵容 */ private ImageView btnLineup; boolean showLineUp; LinearLayout layoutBottom; /** 最近一次的时间,由于当前的时间采用服务端推送和客户端倒计时同时进行,两者间存在误差,根据产品需求,当前采用保留最大的时间值,忽略较小的值。 */ private int lastTime; ImageButton btnLive; /** 赛况 */ ImageButton btnOuts; /** 房间礼物相关 */ private ListView mRoomListView; private RoomListAdapter mRoomListAdapter; // private LinearLayout mGiftView; private LinearLayout mRoomView; private int sortId;//请求正序还是逆序 String curRoomtitle; String curRoomOnline; private RelativeLayout title_layout; private ImageView title_room_switch; private TextView room_people_numTextView; private String live_online="%s人在线"; boolean livefirstIn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); timerHandler = new TimerHandler(); Intent in = getIntent(); tag = in.getStringExtra("tag"); lid = in.getIntExtra("lid", 0); if (lid <= 0) lid = findLid(tag); gid = in.getIntExtra("gid", 0); HupuLog.d("gid=" + gid); setContentView(R.layout.layout_football_game); TAG = tag.toUpperCase(); playByPlayRoom = String.format(playByPlayRoom, TAG);// 哪个直播间 initParameter(); // 世界杯需要显示阵容按键 btnLineup = (ImageButton) findViewById(R.id.btn_lineup); btnLineup.setVisibility(View.VISIBLE); setOnClickListener(R.id.img_team_left); setOnClickListener(R.id.img_team_right); showLineUp = true; if (gid > 0) { mDefaultTab = in.getStringExtra("tab"); // 外部跳转 mParams.put("gid", "" + gid); sendRequest(HuPuRes.REQ_METHOD_FOOTBALL_GAME_BY_GID, mParams); } else { // 从赛程页进入 mGameEntity = (ScoreboardEntity) in.getSerializableExtra("data"); mDefaultTab = mGameEntity.default_tab; gid = mGameEntity.i_gId; byMan = mGameEntity.i_live > 0; if (mGameEntity == null) { finish(); } init(); } } private void init() { isFollow = mGameEntity.bFollow == 1; mParams.put("gid", "" + gid); setJsonObj(BaseEntity.KEY_GAME_ID, gid); mLayoutScoreBar = findViewById(R.id.layout_score_bar); scoreLayout = findViewById(R.id.layout_score); txtTitle = (TextView) findViewById(R.id.txt_title); txtTitle.setText(R.string.title_live); TopAdImg = (ImageView) findViewById(R.id.top_ad_img); txtTeamLeft = (TextView) findViewById(R.id.txt_team_left); txtTeamRight = (TextView) findViewById(R.id.txt_team_right); txtProcess = (TextView) findViewById(R.id.txt_proccess); txtTime = (TextView) findViewById(R.id.txt_start_time); txtScore = (TextView) findViewById(R.id.txt_score); txtShootout1 = (TextView) findViewById(R.id.txt_shootout1); txtShootout2 = (TextView) findViewById(R.id.txt_shootout2); imgTeamLeft = (ImageView) findViewById(R.id.img_team_left); imgTeamRight = (ImageView) findViewById(R.id.img_team_right); setTeamName(); layoutBottom = (LinearLayout) findViewById(R.id.layout_bottom); btnOuts = (ImageButton) findViewById(R.id.btn_outs); btnLive = (ImageButton) findViewById(R.id.btn_live); btnReport = (ImageButton) findViewById(R.id.btn_first); btnChat = (ImageButton) findViewById(R.id.btn_chat); btnQuiz = (ImageButton) findViewById(R.id.btn_quiz); imgRedPiont = (ImageView) findViewById(R.id.icon_red_point); imgRedPiont.setVisibility(View.GONE); rewardInfo = (RelativeLayout) findViewById(R.id.reward_info); btnFollow = (Button) findViewById(R.id.btn_follow); btnPlay = (Button) findViewById(R.id.btn_play); // init 房间部分 initRoomAndGift(); title_room_switch = (ImageView) findViewById(R.id.title_room_switch); room_people_numTextView = (TextView) findViewById(R.id.title_room_peple_online); setOnClickListener(R.id.layout_live_title); setOnClickListener(R.id.choose_room_dialog); curGameState = mGameEntity.code; setFollowBtn(); setViewByStatus(true); // updateScoreView(); if (mDefaultTab != null) switchTab(); else { if (curGameState == ScoreboardEntity.STATUS_END) { treatClickEvent(R.id.btn_first); } else if (curGameState == ScoreboardEntity.STATUS_NOT_START) { treatClickEvent(R.id.btn_quiz); } else { if (byMan) treatClickEvent(R.id.btn_live); else treatClickEvent(R.id.btn_outs); } } setOnClickListener(R.id.btn_outs); setOnClickListener(R.id.btn_live); setOnClickListener(R.id.btn_back); setOnClickListener(R.id.btn_first); setOnClickListener(R.id.btn_quiz); setOnClickListener(R.id.btn_sent); setOnClickListener(R.id.btn_chat); setOnClickListener(R.id.btn_follow); setOnClickListener(R.id.btn_play); setOnClickListener(R.id.btn_quiz); setOnClickListener(R.id.btn_sent); setOnClickListener(R.id.btn_lineup); setOnClickListener(R.id.gold_num); updateProccess(mGameEntity); } /** 根据默认标签跳转到不同的页面 */ private void switchTab() { if (mDefaultTab.equals(TAB_GUESS)) { treatClickEvent(R.id.btn_quiz); } else if (mDefaultTab.equals(TAB_BOXSCORE)) treatClickEvent(R.id.btn_outs); else if (mDefaultTab.equals(TAB_CHAT)) { treatClickEvent(R.id.btn_chat); } else if (mDefaultTab.equals(TAB_REPORT)) treatClickEvent(R.id.btn_first); else if (mDefaultTab.endsWith(TAB_LIVE)) treatClickEvent(R.id.btn_live); else { if (byMan) treatClickEvent(R.id.btn_live); else treatClickEvent(R.id.btn_outs);// 直播 } } private String movieUrl; private boolean bottombarVisible = false; private void showBottomBar() { if (layoutBottom != null) { layoutBottom.setVisibility(View.VISIBLE); bottombarVisible = true; } } @Override public void treatClickEvent(int id) { super.treatClickEvent(id); switch (id) { case R.id.btn_outs:// 赛况 if (curFragmentIndex != INDEX_STATISTIC) { setBackgound(INDEX_STATISTIC); replaceContent(INDEX_STATISTIC); } break; case R.id.btn_live: if (curFragmentIndex == INDEX_LIVE_BY_MAN || curFragmentIndex == INDEX_LIVE) return; if (curFragmentIndex != INDEX_LIVE && curFragmentIndex != INDEX_LIVE_BY_MAN) { findViewById(R.id.layout_gift).setVisibility(View.VISIBLE); } if (byMan && curFragmentIndex != INDEX_LIVE_BY_MAN) { setBackgound(INDEX_LIVE_BY_MAN); replaceContent(INDEX_LIVE_BY_MAN); return; } if (curFragmentIndex != INDEX_LIVE && curFragmentIndex != INDEX_LIVE_BY_MAN) { if (curGameState == STATUS_NOT_START) { setBackgound(INDEX_LIVE_BY_MAN); replaceContent(INDEX_LIVE_BY_MAN); } else { //不需要事件直播 没有人工直播 就是 webview setBackgound(INDEX_LIVE_BY_MAN); replaceContent(INDEX_LIVE_BY_MAN); // setBackgound(INDEX_LIVE); // replaceContent(INDEX_LIVE); } return; } break; case R.id.btn_back: finish(); break; case R.id.btn_first: if (curFragmentIndex != INDEX_REPORT) { setBackgound(INDEX_REPORT); replaceContent(INDEX_REPORT); } break; case R.id.btn_chat: setBackgound(INDEX_CHAT); replaceContent(INDEX_CHAT); break; case R.id.btn_follow: setFollow(); break; case R.id.btn_play: if (movieUrl == null || movieUrl.equals("")) showToast("暂无视频直播"); else { Intent in = new Intent(this, WebViewActivity.class); in.putExtra("url", movieUrl); startActivity(in); } break; case R.id.btn_sent: Intent in = new Intent(this, ChatInputActivity.class); in.putExtra("tag", TAG); HupuLog.e("footballGame-401", "send_chat_roomid="+roomid); in.putExtra("roomid", roomid); startActivityForResult(in, REQ_SEND_MSG); toChat = true; break; case R.id.btn_quiz: setBackgound(INDEX_QUIZ); replaceContent(INDEX_QUIZ); break; case R.id.gold_num: if (mToken == null) { showBindDialog(SharedPreferencesMgr.getString("dialogBtnText", getString(R.string.casino_notify))); // dialog(this, SharedPreferencesMgr.getString("dialogRecharge", // getString(R.string.casino_notify))); } else { Intent info = new Intent(this, HupuOrderActivity.class); startActivity(info); } break; case R.id.top_ad_img: Intent webIntent = new Intent(this, AdWebviewActivity.class); webIntent.putExtra("ad_url", adUrl); // webIntent.putExtra("source", adUrl); startActivity(webIntent); break; case R.id.btn_lineup: setBackgound(INDEX_LINEUP); replaceContent(INDEX_LINEUP); showLineup(); break; case R.id.img_team_right: if (mGameEntity.i_away_tid < 990000) toSoccerTeamAct(mGameEntity.i_away_tid); break; case R.id.img_team_left: if (mGameEntity.i_home_tid < 990000) toSoccerTeamAct(mGameEntity.i_home_tid); break; case R.id.layout_live_title: if(curFragmentIndex == INDEX_LIVE ||curFragmentIndex == INDEX_LIVE_BY_MAN){ if(mRoomView.getVisibility()==View.GONE) { reqRoomlist(); } else { hideRoomAction(); selectDefaultRoom(); title_room_switch.setImageResource(R.drawable.icon_arrow_up_live); } } break; case R.id.choose_room_dialog: if(curFragmentIndex == INDEX_LIVE || curFragmentIndex == INDEX_LIVE_BY_MAN){ hideRoomAction(); selectDefaultRoom(); title_room_switch.setImageResource(R.drawable.icon_arrow_up_live); } break; } } public void selectDefaultRoom() { if(livefirstIn) { req_room_http(roomid); livefirstIn = false; } } private void toSoccerTeamAct(int tid) { Intent in = new Intent(this, SoccerTeamActivity.class); in.putExtra("tid", tid); in.putExtra("tag", tag); startActivity(in); } private void setFollow() { if (isFollow) { followGame(lid, mGameEntity.i_gId, (byte) 1); } else { if (mApp.needNotify) { followGame(lid, mGameEntity.i_gId, (byte) 0); } else { showCustomDialog(DIALOG_NOTIFY, R.string.push_title, R.string.push_open_notify, 3, R.string.open_notify, R.string.cancel); return; } } // 立即修改 isFollow = !isFollow; setFollowBtn(); } private final int DIALOG_NOTIFY = 1315; @Override public void clickNegativeButton(int dialogId) { super.clickNegativeButton(dialogId); if (dialogId == DIALOG_NOTIFY) { if (mDialog != null) mDialog.cancel(); } } @Override public void clickPositiveButton(int dialogId) { super.clickPositiveButton(dialogId); if (dialogId == DIALOG_NOTIFY) { // 打开通知 if (mDialog != null) mDialog.cancel(); mApp.setNotify(true); followGame(lid, mGameEntity.i_gId, (byte) 0); isFollow = !isFollow; setFollowBtn(); } } /** 设置关注比赛的UI状态 */ private void setFollowBtn() { if (curGameState == ScoreboardEntity.STATUS_END || curGameState == ScoreboardEntity.STATUS_CANCEL) { findViewById(R.id.layout_title_btn).setVisibility(View.GONE); } else { findViewById(R.id.layout_title_btn).setVisibility(View.VISIBLE); if (isFollow) { btnFollow.setBackgroundResource(R.drawable.btn_alarm_bright); } else { btnFollow.setBackgroundResource(R.drawable.btn_alarm_dark); } } } /** 当前所在页索引 */ private int curFragmentIndex = -1; private boolean bHasReportData; /** 是否开启人工直播 */ boolean byMan; boolean getLiveEndData; private int lastLiveID; private void replaceContent(int index) { if (curFragmentIndex == index) return; Fragment fragment = null; curFragmentIndex = index; switch (index) { case INDEX_REPORT: if (mFragmentReport == null) mFragmentReport = new ReportFragment(); if (!bHasReportData) req(); fragment = mFragmentReport; txtTitle.setText("战报"); setScreenLight(false); break; case INDEX_LIVE_BY_MAN: // 如果是人工直播,就显示直播页面 if (mFragmentLive == null) { mFragmentLive = new LiveFragment( 0, 0, (curGameState != STATUS_NOT_START && curGameState != STATUS_CANCEL && curGameState != STATUS_EXTEND)); } if (curGameState == STATUS_END || curGameState == STATUS_START) mFragmentLive.isStart(true); fragment = mFragmentLive; mFragmentLive.entry(); if (!bHasLiveData || (bEnd && !getLiveEndData)) { // 初次进入该页面需要获取全部的实时播报信息 if (curGameState == STATUS_START)// 进行中 { mParams.put("sort", "desc"); sortId = HuPuRes.REQ_METHOD_GET_LIVE_DESC; reqHttp(HuPuRes.REQ_METHOD_GET_LIVE_DESC); } else { mParams.put("sort", "asc"); sortId = HuPuRes.REQ_METHOD_GET_LIVE_ASC; reqHttp(HuPuRes.REQ_METHOD_GET_LIVE_ASC); } } else if (curGameState != STATUS_END) { mFragmentLive.setPreview(roomPreview); if (roomPreview != null && !"".equals(roomPreview)) { // 设置前瞻 mFragmentLive.setURL(roomPreview); } bJoinRoom = true; // 加入前设置最后一条消息id setJsonObj(BaseEntity.KEY_PID, lastLiveID); setJsonObj("roomid", roomid); jsonRoom.remove("type"); jsonRoom.remove("direc"); jsonRoom.remove("num"); JSONArray arr = mFragmentLive.getQids(); if (arr != null) setJsonObj("qids", mFragmentLive.getQids()); joinRoom(playByPlayRoom); } // txtTitle.setText("直播"); setScreenLight(true); break; case INDEX_LIVE: // 事件直播 if (mFragmentEvents == null) mFragmentEvents = new FootballLiveFragment(); fragment = mFragmentEvents; mFragmentEvents.entry(); // txtTitle.setText("直播"); setScreenLight(false); break; case INDEX_STATISTIC: if (mFragmentPlayByPlay == null) mFragmentPlayByPlay = new SoccerPlayByPlayFragment(); fragment = mFragmentPlayByPlay; mFragmentPlayByPlay.entry(); txtTitle.setText("赛况"); setScreenLight(false); break; case INDEX_CHAT: if (mFragmentChat == null) { mFragmentChat = new ChatFragment(); mFragmentChat.setTag(TAG); } bJoinRoom = true; mFragmentChat.entry(roomid); fragment = mFragmentChat; txtTitle.setText("热线"); // 一直常亮 setScreenLight(true); break; case INDEX_QUIZ: if (mFragmentQuizList == null) { mFragmentQuizList = new QuizListFragment(); } fragment = mFragmentQuizList; joinRoom(tag.toUpperCase() + HuPuRes.ROOM_CASINO); txtTitle.setText(R.string.quiz_list_tiele); break; case INDEX_LINEUP: if (mFootballLineupFragment == null) { mFootballLineupFragment = new FootballLineupFragment(); } fragment = mFootballLineupFragment; txtTitle.setText("阵容"); break; } if (index != INDEX_CHAT && index != INDEX_LIVE_BY_MAN && index != INDEX_QUIZ) { // --- if (bJoinRoom) { bJoinRoom = false; leaveRoom(); } } if (fragment != null) replaceContent(fragment); } private void replaceContent(Fragment fragment) { FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); transaction.replace(R.id.fragment_content, fragment); transaction.addToBackStack(null); transaction.commitAllowingStateLoss(); } /** 点击后的按钮背景变化 */ private void setBackgound(int index) { initGift(null,index,false); switchRoomStatus(index,livefirstIn); int color = getResources().getColor(R.color.transform); // 点击前 switch (curFragmentIndex) { case INDEX_REPORT: // mLayoutScoreBar.setVisibility(View.VISIBLE); btnReport.setBackgroundColor(color); btnReport.setImageResource(R.drawable.btn_report); break; case INDEX_LIVE: case INDEX_LIVE_BY_MAN: btnLive.setBackgroundColor(color); btnLive.setImageResource(R.drawable.btn_live_up); findViewById(R.id.layout_title_btn).setVisibility(View.GONE); break; case INDEX_STATISTIC: btnOuts.setBackgroundColor(color); btnOuts.setImageResource(R.drawable.btn_outs_up); break; case INDEX_CHAT: btnChat.setBackgroundColor(color); btnChat.setImageResource(R.drawable.btn_chat_up); findViewById(R.id.btn_sent).setVisibility(View.GONE); break; case INDEX_QUIZ: btnQuiz.setBackgroundColor(color); btnQuiz.setImageResource(R.drawable.btn_tag_guess_up); findViewById(R.id.gold_num).setVisibility(View.GONE); break; case INDEX_LINEUP: btnLineup.setBackgroundColor(color); btnLineup.setImageResource(R.drawable.btn_lineup_up); break; } switch (index) {// 点击后 case INDEX_REPORT: mLayoutScoreBar.setVisibility(View.VISIBLE); btnReport.setBackgroundResource(R.drawable.bg_bottom_hover); btnReport.setImageResource(R.drawable.btn_report_hover); break; case INDEX_LIVE: case INDEX_LIVE_BY_MAN: btnLive.setBackgroundResource(R.drawable.bg_bottom_hover); btnLive.setImageResource(R.drawable.btn_live_down); findViewById(R.id.btn_sent).setVisibility(View.GONE); mLayoutScoreBar.setVisibility(View.VISIBLE); if (curGameState != ScoreboardEntity.STATUS_END && curGameState != ScoreboardEntity.STATUS_CANCEL) findViewById(R.id.layout_title_btn).setVisibility(View.VISIBLE); break; case INDEX_STATISTIC: btnOuts.setBackgroundResource(R.drawable.bg_bottom_hover); btnOuts.setImageResource(R.drawable.btn_outs_down); mLayoutScoreBar.setVisibility(View.VISIBLE); if (curGameState != ScoreboardEntity.STATUS_END && curGameState != ScoreboardEntity.STATUS_CANCEL) findViewById(R.id.layout_title_btn).setVisibility(View.VISIBLE); break; case INDEX_CHAT: mLayoutScoreBar.setVisibility(View.VISIBLE); btnChat.setBackgroundResource(R.drawable.bg_bottom_hover); btnChat.setImageResource(R.drawable.btn_chat_down); findViewById(R.id.layout_title_btn).setVisibility(View.GONE); findViewById(R.id.btn_sent).setVisibility(View.VISIBLE); break; case INDEX_QUIZ: mLayoutScoreBar.setVisibility(View.GONE); btnQuiz.setBackgroundResource(R.drawable.bg_bottom_hover); btnQuiz.setImageResource(R.drawable.btn_tag_guess_down); findViewById(R.id.gold_num).setVisibility(View.VISIBLE); findViewById(R.id.layout_title_btn).setVisibility(View.GONE); imgRedPiont.setVisibility(View.GONE); break; case INDEX_LINEUP: mLayoutScoreBar.setVisibility(View.GONE); btnLineup.setBackgroundResource(R.drawable.bg_bottom_hover); btnLineup.setImageResource(R.drawable.btn_lineup_down); break; } } /** 请求Http数据 */ private void reqHttp(int repType) { mParams.put(BaseEntity.KEY_GAME_ID, "" + gid); sendRequest(repType, tag, mParams, new HupuHttpHandler(this), false); } int[] bets; @Override public void onReqResponse(Object o, int methodId) { super.onReqResponse(o, methodId); if (o == null) return; showBottomBar(); switch (methodId) { case HuPuRes.REQ_METHOD_FOOTBALL_GAME_BY_GID: mGameEntity = (ScoreboardEntity) o; byMan = mGameEntity.i_live > 0; init(); break; case HuPuRes.REQ_METHOD_GET_FOOTBALL_OUTS: SoccerOutsReq d = (SoccerOutsReq) o; dif = 0; updateProccess(d.scoreBoard); mFragmentPlayByPlay.setData(d,tag); break; case HuPuRes.REQ_METHOD_GET_FOOTBALL_EVENTS: SoccerEventsResp live = (SoccerEventsResp) o; movieUrl = live.tvLink; if (!"".equals(movieUrl)) btnPlay.setEnabled(true); if (live.adImg != null && !"".equals(live.adImg)) { TopAdImg.setVisibility(View.VISIBLE); UrlImageViewHelper.setUrlDrawable(TopAdImg, live.adImg); setOnClickListener(R.id.top_ad_img); adUrl = live.adUrl; } else { TopAdImg.setVisibility(View.GONE); } dif = 0; updateProccess(live.scoreBoard); mFragmentEvents.setData(live,tag); break; case HuPuRes.REQ_METHOD_GET_LIVE_DESC: case HuPuRes.REQ_METHOD_GET_LIVE_ASC: SimpleLiveResp data = (SimpleLiveResp) o; movieUrl = data.tvLink; //直播间和礼物 initGift(data,INDEX_LIVE_BY_MAN,true); boolean isShow = false; if (data.roomList != null) { isShow = data.roomList!=null&&data.roomList.size()>1?true:false; if (data.is_enter == 0&&isShow) { livefirstIn = true; }else{ livefirstIn = false; } //重置roomid roomid = data.default_room_id; switchRoomStatus(INDEX_LIVE_BY_MAN,livefirstIn); setRoomList(data.roomList,data.default_room_id); for (RoomEntity entity:data.roomList) { if (entity.id == data.default_room_id) { if(data.is_enter == 0){ if(data.roomList!=null&&data.roomList.size()>1) { curRoomtitle = getString(R.string.title_select_room); setRoomTitle(curRoomtitle); mRoomListAdapter.setDefaultId(-1); mRoomListAdapter.notifyDataSetChanged(); showRoomAction(); } else { curRoomtitle = entity.name; curRoomOnline = String.format(live_online, entity.count); } setRoomOnlineNum("0",false); }else{ setRoomTitle(entity.name); setRoomOnlineNum(String.format(live_online, entity.count),true); } } } } //直播和礼物end // topbar 广告图片展示 if (data.adImg != null && !"".equals(data.adImg)) { HupuLog.e("papa", "adImg===" + data.adImg); TopAdImg.setVisibility(View.VISIBLE); UrlImageViewHelper.setUrlDrawable(TopAdImg, data.adImg); setOnClickListener(R.id.top_ad_img); adUrl = data.adUrl; } else { TopAdImg.setVisibility(View.GONE); } if (!"".equals(movieUrl)) btnPlay.setEnabled(true); mFragmentLive.addData(true); setJsonObj("roomid", roomid); roomPreview = data.preview; mFragmentLive.setPreview(roomPreview); if (data.scoreBoard != null && data.scoreBoard.live == 0) { if (data.preview != null) { // 设置前瞻 mFragmentLive.setURLForCBA(data.preview); } return; } else { if (curGameState != STATUS_NOT_START && curGameState != STATUS_CANCEL && curGameState != STATUS_EXTEND) mFragmentLive.isStart(true); else if (data.preview != null) { // 设置前瞻 mFragmentLive.setURLForCBA(data.preview); } } if (data.casinoInit != null) { bets = data.casinoInit.bets; mFragmentLive.setBets(data.casinoInit.bets); } if (data.dataList == null) { // 没有数据 if (curGameState == STATUS_NOT_START) { // showToast("比赛未开始"); bJoinRoom = true; jsonRoom.remove("type"); jsonRoom.remove("direc"); jsonRoom.remove("num"); joinRoom(playByPlayRoom); } else { showToast("暂无直播数据"); } mFragmentLive.addData(true); //return; } mFragmentLive.setData(data.dataList); bHasLiveData = true; lastLiveID = data.i_pId; // Log.d("http back pid", ""+data.i_pId); // 如果是比赛 if (methodId == HuPuRes.REQ_METHOD_GET_LIVE_DESC) setJsonObj(BaseEntity.KEY_PID, data.i_pId); if (curGameState != STATUS_CANCEL) {// 如果比赛未结束需要加入房间 bJoinRoom = true; jsonRoom.remove("type"); jsonRoom.remove("direc"); jsonRoom.remove("num"); joinRoom(playByPlayRoom); // Log.d("join", "ROOM_CBA_PLAYBYPLAY"); } else { getLiveEndData = true; } if (data.scoreBoard != null) { setSore(data.scoreBoard.i_scoreHome, data.scoreBoard.i_scoreAway); // updateProccess(data.score.str_process); if (data.scoreBoard.period > -1) { period = mGameEntity.period = (byte) data.scoreBoard.period; } if (data.scoreBoard.str_process != null) { updateTime(period, data.scoreBoard.str_process); } } break; // case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_SEND_GIFT: // if (o != null) { // GiftRespResultEntity gren = (GiftRespResultEntity)o; // // this.hupuDollor = gren.balance; // this.interval = gren.interval; // } // // break; // case HuPuRes.REQ_METHOD_GET_HUPUDOLLOR_BALANCE: // if (o != null) { // HupuDollorBalanceReq info = (HupuDollorBalanceReq) o; // this.hupuDollor=info.balance; // } // break; case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_ROOMLIST: if (o != null) { RoomListEntity info = (RoomListEntity) o; if(info!=null&&info.roomList!=null) { setRoomList(info.roomList, roomid); showRoomAction(); } } break; case HuPuRes.REQ_METHOD_GET_GAME_REPORT: Recap re = (Recap) o; mFragmentReport.setData(re); break; case HuPuRes.REQ_METHOD_EN_SENT_CHAT: SendMsgResp smrsp = (SendMsgResp) o; // HupuLog.d("SendMsgResp="+smrsp.pid); if (smrsp.err != null) { // Log.d("SendMsgResp", data.err); showToast(smrsp.err); } else { if (smrsp.pid == 0) { reqChatData(lastChatID); } else { mFragmentChat.setLastId(smrsp.pid); lastChatID = smrsp.pid; setJsonObj("pid", lastChatID); setJsonObj("direc", "next"); if (mToken != null) setJsonObj("tk", "mToken"); joinRoom(HuPuRes.ROOM_NBA_CHAT); } } break; case HuPuRes.REQ_METHOD_FOLLOW_GAME: case HuPuRes.REQ_METHOD_FOLLOW_GAME_CANCEL: FollowResp resp = (FollowResp) o; if (resp == null || resp.i_success == 0) { // 提交失败 showToast(String.format(SORRY_NOTIFY, mGameEntity.str_home_name, mGameEntity.str_away_name)); isFollow = !isFollow; setFollowBtn(); } else { if (isFollow) mGameEntity.bFollow = 1; else mGameEntity.bFollow = 0; Log.d("follow", "methodId=" + methodId); if (methodId == HuPuRes.REQ_METHOD_FOLLOW_GAME) showToast(String.format(SUCCESS_NOTIFY, mGameEntity.str_home_name, mGameEntity.str_away_name)); else if (methodId == HuPuRes.REQ_METHOD_FOLLOW_GAME_CANCEL) showToast(CANCEL_NOTIFY); } break; case HuPuRes.REQ_METHOD_QUIZ_LIST: case HuPuRes.REQ_METHOD_QUIZ_LIST_COMMIT: case HuPuRes.REQ_METHOD_POST_INCREASE: case HuPuRes.REQ_METHOD_BET_COINS: case HuPuRes.REQ_METHOD_CAIPIAO_COMMIT: if (curFragmentIndex == INDEX_QUIZ) mFragmentQuizList.onReqResponse(o, methodId, mQid); break; case HuPuRes.REQ_METHOD_GET_ROSTER: if (curFragmentIndex == INDEX_LINEUP) { mFootballLineupFragment.onReqResponse(o, methodId, methodId); } } } @Override public void onReqResponse(Object o, int methodId, int msg1, int msg2) { super.onReqResponse(o, methodId); if (o == null) return; switch (methodId) { case HuPuRes.REQ_METHOD_QUIZ_COMMIT: case HuPuRes.REQ_METHOD_QUIZ_COMMIT_INCREASE: // 提交竞猜 QuizCommitResp entity = (QuizCommitResp) o; if (entity.result == -1) showToast("参与过了"); else if (entity.result == 2) { // 通知领救济金 // showCustomDialog(DIALOG_SHOW_GET_DOLE, 0, // R.string.get_now_info, ONE_BUTTON, // R.string.title_confirm, 0); showToast(getResources().getString(R.string.get_now_info)); mFragmentLive.updateCommit(msg1, msg2); } else if (entity.result == -2 || entity.result == -3) { // showToast("金币余额不足"); // showNoMoney(0, 0); if(!isExchange) { mFragmentLive.showNoMoney(entity.eGoldBean); } } else if (entity.result == -4) { showToast("竞猜已关闭"); } else { showToast("参与成功"); mFragmentLive.updateCommit(msg1, msg2); } break; } } // 更新直播流中竞猜对话框余额 @Override public void updateMoney(int betCoin, int balance) { if (mFragmentLive != null) mFragmentLive.updateMoney(betCoin, money); } /** 设置球队名称 */ private void setTeamName() { // 球队名称 txtTeamLeft.setText(mGameEntity.str_home_name); txtTeamRight.setText(mGameEntity.str_away_name); UrlImageViewHelper.setUrlDrawable(imgTeamLeft, mGameEntity.home_logo, R.drawable.bg_home_nologo); UrlImageViewHelper.setUrlDrawable(imgTeamRight, mGameEntity.away_logo, R.drawable.bg_home_nologo); } /** 设置球队比分 需要翻牌,这个逻辑就需要先判断比分的变换了。 */ private void setSore(int homeScore, int awayScore) { if (homeScore > -1 && awayScore > -1) txtScore.setText(homeScore + " - " + awayScore); } /** 更新比赛过程的标题信息 */ private void updateProccess(ScoreboardEntity entity) { if (entity != null) { mGameEntity = entity; setSore(mGameEntity.i_home_score, mGameEntity.i_away_score); } if (curGameState != entity.code) { curGameState = entity.code; setViewByStatus(false); } if (!startTime && entity.code == ScoreboardEntity.STATUS_START) { startTime = true; startTimer(); } if (startTime && entity.code == ScoreboardEntity.STATUS_END) stopTimer(); showTime(entity, txtProcess); } /** * 根据不同的比赛状态调整显示底部菜单 * **/ void setBottomBar() { int color = getResources().getColor(R.color.transform); HupuLog.d("setBottomBar", "curGameState=" + curGameState); switch (curGameState) { case ScoreboardEntity.STATUS_NOT_START: case ScoreboardEntity.STATUS_EXTEND: case ScoreboardEntity.STATUS_CANCEL: // 显示三个tab 前瞻,赛况,竞猜,热线 btnReport.setVisibility(View.GONE); btnOuts.setVisibility(View.GONE); break; case ScoreboardEntity.STATUS_START: // 五个tab 直播 赛况 阵容 竞猜 热线 if (!byMan) //btnLive.setVisibility(View.GONE);// 隐藏直播 btnReport.setVisibility(View.GONE); btnOuts.setVisibility(View.VISIBLE); break; case ScoreboardEntity.STATUS_END: // 五个tab 战报 赛况 阵容 竞猜 热线,直播放到战报里去了 btnReport.setVisibility(View.VISIBLE); btnLive.setVisibility(View.GONE);// 隐藏直播 btnOuts.setVisibility(View.VISIBLE); if (curFragmentIndex == INDEX_LIVE || curFragmentIndex == INDEX_LIVE_BY_MAN) { // 直播高亮 } else if (curFragmentIndex == INDEX_STATISTIC) { // 统计高亮 } break; } } void updateProccess() { switch (curGameState) { case ScoreboardEntity.STATUS_START: if (mGameEntity.period == 8) { // 显示点球比分 showShootOut(txtShootout1, txtShootout2, mGameEntity.home_out_goals, mGameEntity.away_out_goals); } else { HupuBaseActivity.hideShootOut(txtShootout1, txtShootout2); } break; case ScoreboardEntity.STATUS_END: if (mGameEntity.home_out_goals > 0 || mGameEntity.away_out_goals > 0) { // 结束后没有period字段,只能通过比分来判断。 showShootOut(txtShootout1, txtShootout2, mGameEntity.home_out_goals, mGameEntity.away_out_goals); txtProcess.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_penalty, 0); } else if (mGameEntity.is_extra > 0) { txtProcess.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_overtime, 0); } else HupuBaseActivity.hideShootOut(txtShootout1, txtShootout2); break; } } /** * 根据不同的比赛状态调整显示的view * **/ void setViewByStatus(boolean init) { setBottomBar(); switch (curGameState) { case ScoreboardEntity.STATUS_START: txtTime.setVisibility(View.GONE); scoreLayout.setVisibility(View.VISIBLE); if (mGameEntity.period == 8) { // 显示点球比分 showShootOut(txtShootout1, txtShootout2, mGameEntity.home_out_goals, mGameEntity.away_out_goals); } else { HupuBaseActivity.hideShootOut(txtShootout1, txtShootout2); } if (!init) { mLayoutScoreBar.setVisibility(View.VISIBLE); txtScore.setVisibility(View.VISIBLE); setSore(mGameEntity.i_home_score, mGameEntity.i_away_score); setScreenLight(true); } break; case ScoreboardEntity.STATUS_END: txtTime.setVisibility(View.GONE); scoreLayout.setVisibility(View.VISIBLE); HupuLog.d("papa", "状态:=" + mGameEntity.code); txtProcess.setText(mGameEntity.str_desc); if (mGameEntity.home_out_goals > 0 || mGameEntity.away_out_goals > 0) { // 结束后没有period字段,只能通过比分来判断。 showShootOut(txtShootout1, txtShootout2, mGameEntity.home_out_goals, mGameEntity.away_out_goals); txtProcess.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_penalty, 0); } else if (mGameEntity.is_extra > 0) { txtProcess.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_overtime, 0); } else HupuBaseActivity.hideShootOut(txtShootout1, txtShootout2); // 比赛结束,停止事件刷新 stopTimer(); break; case ScoreboardEntity.STATUS_NOT_START: case ScoreboardEntity.STATUS_EXTEND: case ScoreboardEntity.STATUS_CANCEL: scoreLayout.setVisibility(View.GONE); txtTime.setVisibility(View.VISIBLE); if (curGameState == ScoreboardEntity.STATUS_NOT_START) { txtTime.setText("未开始"); } else { txtProcess.setText(mGameEntity.str_desc); } break; } } /** 请求热线数据,每页20条 */ public void reqChatData(int id) { UMENG_MAP.clear(); setJsonObj("type", tag); setJsonObj("num", 20); if (id > 0) { setJsonObj("pid", id); setJsonObj("direc", "prev"); } else { // 重新获取最新的聊天记录,不传偏移量 setJsonObj("pid", ""); setJsonObj("direc", "next"); } joinRoom(HuPuRes.ROOM_NBA_CHAT); } public void req() { if (curFragmentIndex == INDEX_LIVE) sendRequest(HuPuRes.REQ_METHOD_GET_FOOTBALL_EVENTS, tag, mParams, new HupuHttpHandler(this), false); else if (curFragmentIndex == INDEX_STATISTIC) { initParameter(); mParams.put("lid", "" + lid); mParams.put("gid", "" + gid); mParams.put("token", mToken); sendRequest(HuPuRes.REQ_METHOD_GET_FOOTBALL_OUTS, tag, mParams, new HupuHttpHandler(this), false); } else if (curFragmentIndex == INDEX_REPORT) sendRequest(HuPuRes.REQ_METHOD_GET_GAME_REPORT, tag, mParams, new HupuHttpHandler(this), false); } @Override public void onSocketConnect() { // Log.d("FootballGameAct", "onSocketConnect >>>>>>:::::"); super.onSocketConnect(); // 连接成功了,加入room。 joinRoom(); mApp.setNetState(HuPuApp.STATE_CONNECTED); } @Override public void onErrResponse(Throwable error, String content, boolean isBackGroundThread) { if (content != null) { showToast(content); } } @Override public void onSocketResp(JSONObject obj) { HupuLog.e("footballGamesActivity--socket", "---socket="+obj.toString()); if (!bottombarVisible) { showBottomBar(); } if (obj != null) { try { String room = obj.optString("room"); if (HuPuRes.ROOM_USER_NOTIFY.equals(room)) { final PushNotify notify = new PushNotify(); notify.paser(obj); if (notify.gid == gid && notify.lid == lid&&(notify.roomid == roomid || notify.roomid == -1)) { mQid = notify.qid; if (curFragmentIndex != INDEX_QUIZ) { if (mToken != null) { imgRedPiont.setVisibility(View.VISIBLE); } } else { getQuizList(); } if (mToken != null) { startAnim(notify.coin); } } return; } int gd = obj.optInt(BaseEntity.KEY_GAME_ID, -1); if (gd != gid) return;// 如果不是这场比赛的ID,忽略该数据 if (HuPuRes.ROOM_NBA_CHAT.equals(room)) { ChatResp data = new ChatResp(); data.paser(obj); mFragmentChat.stopLoad(); if (data.mList != null) { if (data.direc.equals("next") && data.pid > 0 && data.pid <= lastChatID) return; } mFragmentChat.setData(data,roomid); if (curFragmentIndex == INDEX_CHAT && data.online != null) txtTitle.setText("热线(" + data.online + "人)"); updateData(data.score); } else if ((playByPlayRoom).equals(room)) { if (curGameState == STATUS_END) { bEnd = true; getLiveEndData = true; } // 直播 SoccerLiveResp data = new SoccerLiveResp(); data.paser(obj); if (curFragmentIndex == INDEX_LIVE_BY_MAN && data.online != null) { boolean isShowRoomlist = false; boolean isShow = false; if (data.roomList != null) { isShow = data.roomList!=null&&data.roomList.size()>1?true:false; if (data.is_enter == 0&&isShow) { isShowRoomlist = true; }else{ isShowRoomlist = false; } } setRoomOnlineNum(String.format(this.live_online, data.online),!isShowRoomlist); } mFragmentLive.stopLoad(); if (data.bHasData) { if (data.i_pId > lastLiveID && data.i_pId > -1) mFragmentLive.updateData(data); } else if (data.casinoList != null) { mFragmentLive.updateData(data); } if (data.i_pId > -1 && data.i_pId > lastLiveID) { lastLiveID = data.i_pId; // 更新消息id setJsonObj(BaseEntity.KEY_PID, data.i_pId); } updateData(data.scoreBoard); if(data.giftList!=null && data.giftList.size()>0){ pushUpdataGift(data.giftList); } } } catch (Exception e) { e.printStackTrace(); } } mApp.setNetState(HuPuApp.STATE_ON_LINE); setNetTitle(); } /** 更新状态 */ private void updateData(SimpleScoreboard score) { if (score != null) { if (score.id > 0 && score.id != curGameState) { curGameState = mGameEntity.code = (byte) score.id; mGameEntity.str_desc = score.desc; // setViewByStatus(false); updateProccess(); } setSore(score.i_scoreHome, score.i_scoreAway); mGameEntity.i_away_score = score.i_scoreAway; mGameEntity.i_home_score = score.i_scoreAway; mGameEntity.away_out_goals = score.away_out_goals; mGameEntity.home_out_goals = score.home_out_goals; if (score.period > -1) { if (mGameEntity.period != score.period) dif = 0; period = mGameEntity.period = (byte) score.period; } if (period == 8) { showShootOut(txtShootout1, txtShootout2, mGameEntity.home_out_goals, mGameEntity.away_out_goals); } if (score.str_process != null) { updateTime(period, score.str_process); } } } /** * @param period * 中场,下半场等 * */ private void updateTime(int period, String pro) { if (mGameEntity.code == ScoreboardEntity.STATUS_START) { HupuLog.e("papa", "比赛状态===" + period); String txt = null; // 已经开始 switch (period) { case 3:// 中场休息: txt = "中场休息"; break; case 4:// 下半场结束 txt = "下半场结束"; break; case 7:// txt = "加时赛结束"; break; case 9: txt = "加时中场休息"; break; case 8: txt = "点球大战"; break; } if (txt != null) { txtProcess.setText(txt); mGameEntity.str_desc = txt; dif = 0; } else { try { int p = Integer.parseInt(pro); if (p > lastTime + dif) { mGameEntity.process = p; lastTime = p; dif = 0; updateTime(); } } catch (NumberFormatException e) { e.printStackTrace(); } } } } int dif; Handler timeHandler; private void showTime(ScoreboardEntity en, TextView tv) { mGameEntity = en; showTime(en, tv, dif); } /** 时间计数 */ private void updateTime() { if (mGameEntity != null) { dif++; showTime(mGameEntity, txtProcess); } } private void showLineup() { } /** 比赛是否处于开赛状态 */ boolean startTime; boolean isResume; boolean bJoinRoom; @Override protected void onResume() { super.onResume(); if (startTime) startTimer(); if (bJoinRoom) { // 如果需要加入房间 if (DeviceInfo.isNetWorkEnable(this)) { // 如果是非聊天 if (curFragmentIndex == INDEX_LIVE_BY_MAN) { setJsonObj(BaseEntity.KEY_PID, lastLiveID); // 如果是有竞猜的比赛,需要加入所有为关闭的竞猜id setJsonObj("qids", mFragmentLive.getQids()); joinRoom(); } else if (curFragmentIndex == INDEX_CHAT) { // reqChatData(lastChatID); // if (!mApp.isSocketConn()) { // Log.d("onResume", "join statistic"); // Log.d("onResume", "join statistic="+toChat); if (lastChatID > 0) setJsonObj(BaseEntity.KEY_PID, lastChatID); if (!toChat) { setJsonObj("direc", "next"); joinRoom(); } toChat = false; } } else { mApp.setNetState(HuPuApp.STATE_NO_NET); reconnect(false); } } if (curFragmentIndex == INDEX_QUIZ) { if (isResume) { getQuizList(); } else { isResume = true; } joinRoom(); } } /** 直播过程中请求刷,就是重新加入room */ public void reqFresh() { if (bJoinRoom && getRoom() != null) joinRoom(); // mFragmentLive.stopLoad(); } @Override protected void onStop() { super.onStop(); stopTimer(); if (bJoinRoom) reqLeaveRoom(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); stopTimer(); bJoinRoom = false; // quitLive(); roomid = -1; } Timer timer; TimerHandler timerHandler; MyTimerTask task; boolean bStartTimer; private void stopTimer() { // Stop timer if (null != task) { task.cancel(); task = null; } if (null != timer) { timer.cancel(); // Cancel timer timer.purge(); timer = null; } bStartTimer = false; } private void startTimer() { if (bStartTimer) return; if (timer == null) { timer = new Timer(); task = new MyTimerTask(); timer.schedule(task, 0, 1000); } bStartTimer = true; } private class MyTimerTask extends TimerTask { public void run() { timerHandler.sendEmptyMessage(0); } } public class TimerHandler extends Handler { @Override public void handleMessage(Message msg) { updateTime(); } } // 竞猜部分 @Override public void onLoginSuccess() { // TODO Auto-generated method stub super.onLoginSuccess(); if (curFragmentIndex == INDEX_QUIZ) { getQuizList(); joinRoom(); } } public void getQuizList() { HupuLog.e("papa", "gid===" + gid + "---------lid===" + lid); initParameter(); mParams.put("lid", "" + lid); mParams.put("gid", "" + gid); mParams.put("token", mToken); sendRequest(HuPuRes.REQ_METHOD_QUIZ_LIST, mParams, new HupuHttpHandler( this), false); } public void getLineupList() { initParameter(); // mParams.put("lid", "" + lid); mParams.put("gid", "" + gid); sendRequest(HuPuRes.REQ_METHOD_GET_ROSTER, tag, mParams, new HupuHttpHandler(this), false); } public void reqBitCoin(int qid) { if (mToken != null) { initParameter(); mParams.put("token", mToken); mParams.put("qid", "" + qid); sendRequest(HuPuRes.REQ_METHOD_BET_COINS, mParams, new HupuHttpHandler(this), false); } } public void toEventsActivity(HupuScheme scheme) { if (scheme.id <= 0) return; Intent in = new Intent(this, SoccerEventsActivity.class); in.putExtra("gid", scheme.id); in.putExtra("tag", scheme.game); in.putExtra("data", mGameEntity); in.putExtra("lid", lid); startActivity(in); } public String getTag() { return tag; } public int getLid() { return lid; } /***********************房间相关*****************************/ /** * 请求房间列表 */ private void req_room_http(int id) { if (sortId == HuPuRes.REQ_METHOD_GET_LIVE_DESC) mParams.put("sort", "desc"); else mParams.put("sort", "asc"); roomid = id; mParams.put("roomid", roomid+""); reqHttp(sortId); } /** * 初始化房间列表和礼物 view */ private void initRoomAndGift() { eAnimation = new EpandDownAnimation(this,new EpandCallBack()); title_layout = (RelativeLayout)findViewById(R.id.layout_live_title); mRoomView = (LinearLayout) findViewById(R.id.choose_room_dialog); mRoomListView = (ListView) findViewById(R.id.list_room); mRoomListAdapter = new RoomListAdapter(this, click); } private void setRoomList(final ArrayList<RoomEntity> roomList,int default_id){ HupuLog.d("papa", "roomlistSize=="+roomList.size()); mRoomListAdapter.setData(roomList); mRoomListAdapter.setDefaultId(default_id); mRoomListView.setAdapter(mRoomListAdapter); mRoomListAdapter.notifyDataSetChanged(); mRoomListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub RoomEntity roomEntity = roomList == null || roomList.get(position)==null?null:roomList.get(position); if(roomEntity!=null) { req_room_http(roomList.get(position).id); setRoomTitle(roomEntity.name); setRoomOnlineNum(String.format(live_online, roomEntity.count),true); } hideRoomAction(); } }); } private void setRoomTitle(String title){ if(curRoomtitle == null){ curRoomtitle = this.getString(R.string.title_select_room); } this.curRoomtitle = title; txtTitle.setText(curRoomtitle); } private void setRoomOnlineNum(String num,boolean isShowRoomlist){ if(isShowRoomlist){ room_people_numTextView.setVisibility(View.VISIBLE); } room_people_numTextView.setText(num); curRoomOnline = num; } private EpandDownAnimation eAnimation; public void showRoomAction() { if(eAnimation==null) { return; } if(mRoomView.getVisibility()==View.VISIBLE) { // mRoomView.setVisibility(View.VISIBLE); hideRoomAction(); } else { eAnimation.startAction_TopToBottom(findViewById(R.id.list_room),mRoomView); } } public void hideRoomAction() { if(eAnimation==null) { return; } eAnimation.finishAction(findViewById(R.id.list_room),mRoomView); } @SuppressLint("ResourceAsColor") private void switchRoomStatus(int curtab,boolean isShowAction) { if(curtab == INDEX_LIVE || curtab == INDEX_LIVE_BY_MAN) { title_room_switch.setVisibility(View.VISIBLE); if(isShowAction){ room_people_numTextView.setVisibility(View.GONE); setRoomTitle(getString(R.string.title_select_room)); } else{ setRoomTitle(curRoomtitle); setRoomOnlineNum(curRoomOnline,true); } if(mRoomView==null) { return; } if(mRoomView.getVisibility()==View.VISIBLE ) { // txtTitle.setTextColor(this.getResources().getColor(R.color.txt_title_live_color)); // room_people_numTextView.setTextColor(this.getResources().getColor(R.color.txt_title_live_color)); title_room_switch.setImageResource(R.drawable.icon_arrow_up_live); } else { txtTitle.setTextColor(this.getResources().getColor(android.R.color.white)); room_people_numTextView.setTextColor(this.getResources().getColor(android.R.color.white)); title_room_switch.setImageResource(R.drawable.icon_arrow_down_live); } } else//非直播tab { if(mRoomView!=null && mRoomView.getVisibility()==View.VISIBLE ){ mRoomView.setVisibility(View.GONE); } title_room_switch.setVisibility(View.GONE); room_people_numTextView.setVisibility(View.GONE); txtTitle.setTextColor(this.getResources().getColor(android.R.color.white)); } // livefirstIn=false; } /** * TODO 点击选择房间时候 重新获取房间列表 * * * @return void */ public void reqRoomlist() { initParameter(); mParams.put("gid", gid + ""); mParams.put("lid", lid + ""); mParams.put("roomid", roomid+""); sendRequest(HuPuRes.REQ_METHOD_GET_PLAY_LIVE_ROOMLIST, mParams, new HupuHttpHandler(FootballGameActivity.this), false); } class EpandCallBack implements EpandAnimationCallBack { @Override public void callBack(int type) { switchRoomStatus(INDEX_LIVE,livefirstIn); } } }