package com.yuyh.sprintnba.ui;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.text.TextUtils;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
import com.yuyh.library.utils.DimenUtils;
import com.yuyh.library.utils.log.LogUtils;
import com.yuyh.library.view.viewpager.indicator.IndicatorViewPager;
import com.yuyh.library.view.viewpager.indicator.ScrollIndicatorView;
import com.yuyh.sprintnba.R;
import com.yuyh.sprintnba.base.BaseSwipeBackCompatActivity;
import com.yuyh.sprintnba.event.RefreshCompleteEvent;
import com.yuyh.sprintnba.event.RefreshEvent;
import com.yuyh.sprintnba.http.bean.match.MatchBaseInfo;
import com.yuyh.sprintnba.ui.adapter.VPGameDetailAdapter;
import com.yuyh.sprintnba.ui.presenter.impl.MatchDetailPresenter;
import com.yuyh.sprintnba.ui.view.MatchDetailView;
import com.yuyh.sprintnba.utils.FrescoUtils;
import com.yuyh.sprintnba.utils.StatusBarCompat;
import com.yuyh.sprintnba.widget.GameDetailScrollBar;
import com.yuyh.sprintnba.widget.StickyNavLayout;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import butterknife.InjectView;
/**
* @author yuyh.
* @date 16/6/11.
*/
public class MatchDetailActivity extends BaseSwipeBackCompatActivity implements MatchDetailView, StickyNavLayout.OnStickStateChangeListener {
public static final String INTENT_MID = "mid";
public static final String INTENT_YEAR = "year";
private String mid;
private String year;
public static void start(Context context, String mid, String year) {
Intent intent = new Intent(context, MatchDetailActivity.class);
intent.putExtra(MatchDetailActivity.INTENT_MID, mid);
intent.putExtra(MatchDetailActivity.INTENT_YEAR, year);
context.startActivity(intent);
}
@InjectView(R.id.snlViewPager)
ViewPager viewPager;
@InjectView(R.id.snlIindicator)
ScrollIndicatorView indicator;
@InjectView(R.id.stickyNavLayout)
StickyNavLayout stickyNavLayout;
@InjectView(R.id.rlMatchToolbar)
RelativeLayout rlMatchToolbar;
@InjectView(R.id.tvBack)
TextView tvBack;
@InjectView(R.id.tvMatchTitle)
TextView tvMatchTitle;
@InjectView(R.id.tvLeftRate)
TextView tvLeftRate;
@InjectView(R.id.tvMatchState)
TextView tvMatchState;
@InjectView(R.id.tvRightRate)
TextView tvRightRate;
@InjectView(R.id.tvMatchLeftScore)
TextView tvMatchLeftScore;
@InjectView(R.id.tvMatchType)
TextView tvMatchType;
@InjectView(R.id.tvMatchRightScore)
TextView tvMatchRightScore;
@InjectView(R.id.tvMatchStartTime)
TextView tvMatchStartTime;
@InjectView(R.id.ivMatchLeftTeam)
SimpleDraweeView ivMatchLeftTeam;
@InjectView(R.id.ivMatchRightTeam)
SimpleDraweeView ivMatchRightTeam;
@InjectView(R.id.swipeLayout)
SwipeRefreshLayout swipeRefreshLayout;
private IndicatorViewPager indicatorViewPager;
private VPGameDetailAdapter adapter;
private MatchDetailPresenter presenter;
private boolean isNeedUpdateTab = true;
private MatchBaseInfo.BaseInfo info;
@Override
protected int getContentViewLayoutID() {
return R.layout.activity_game_detail;
}
@Override
protected void initViewsAndEvents() {
EventBus.getDefault().register(this);
mid = getIntent().getStringExtra(INTENT_MID);
year = getIntent().getStringExtra(INTENT_YEAR);
LogUtils.i(year);
//rlMatchToolbar.getBackground().setAlpha(0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
rlMatchToolbar.getLayoutParams().height += StatusBarCompat.getStatusBarHeight(this);
rlMatchToolbar.setPadding(0, StatusBarCompat.getStatusBarHeight(this), 0, 0);
}
indicator.setScrollBar(new GameDetailScrollBar(getApplicationContext(), ContextCompat.getColor(this, R.color.colorPrimary), DimenUtils.dpToPxInt(3)));
indicatorViewPager = new IndicatorViewPager(indicator, viewPager);
stickyNavLayout.setOnStickStateChangeListener(this);
tvBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
swipeRefreshLayout.setColorSchemeResources(R.color.material_red, R.color.material_green);
swipeRefreshLayout.setSize(SwipeRefreshLayout.DEFAULT);
swipeRefreshLayout.setEnabled(true);
swipeRefreshLayout.setOnRefreshListener(mOnRefreshListener);
presenter = new MatchDetailPresenter(this, this);
presenter.getMatchBaseInfo(mid);
}
@Override
public void showTabViewPager(String[] names, boolean isStart) {
isNeedUpdateTab = false;
hideLoadingDialog();
adapter = new VPGameDetailAdapter(this, names, getSupportFragmentManager(), mid, isStart, info);
indicatorViewPager.setAdapter(adapter);
}
@Override
public void showMatchInfo(MatchBaseInfo.BaseInfo info) {
this.info = info;
tvMatchTitle.setText(info.leftName + "vs" + info.rightName);
if (!TextUtils.isEmpty(info.leftWins) && !TextUtils.isEmpty(info.leftLosses))
tvLeftRate.setText(info.leftWins + "胜" + info.leftLosses + "负");
if (!TextUtils.isEmpty(info.rightWins) && !TextUtils.isEmpty(info.rightLosses))
tvRightRate.setText(info.rightWins + "胜" + info.rightLosses + "负");
String startTime = info.startDate + info.startHour;
SimpleDateFormat format = new SimpleDateFormat("yyyyMM月dd日HH:mm");
// 当前比赛状态
String state = "未开始";
try {
Date startDate = format.parse(year + startTime);
Date todayDate = new Date();
if (startDate.getTime() > todayDate.getTime()) { // 未开始
if (isNeedUpdateTab) { // 更新TAB
presenter.getTab(false);
}
} else {
state = info.quarterDesc;
// 第四节 00:00 或 加时n 00:00 表示比赛已经结束
if (((state.contains("第4节") || state.contains("加时"))
&& !info.leftGoal.equals(info.rightGoal))
&& state.contains("00:00")) {
state = "已结束";
}
if (isNeedUpdateTab) {
presenter.getTab(true);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
tvMatchState.setText(state);
tvMatchType.setText(info.desc);
tvMatchStartTime.setText(info.startDate + " " + info.startHour + " " + info.venue);
tvMatchLeftScore.setText(info.leftGoal);
tvMatchRightScore.setText(info.rightGoal);
ivMatchLeftTeam.setController(FrescoUtils.getController(info.leftBadge, ivMatchLeftTeam));
ivMatchRightTeam.setController(FrescoUtils.getController(info.rightBadge, ivMatchRightTeam));
}
private boolean lastIsTopHidden;//记录上次是否悬浮
@Override
public void isStick(boolean isStick) {
if (lastIsTopHidden != isStick) {
lastIsTopHidden = isStick;
}
}
@Override
public void scrollPercent(float percent) {
int color = Color.argb((int) ((float) 255 * percent), 26, 142, 168);
rlMatchToolbar.setBackgroundColor(color);
if (percent == 0) {
swipeRefreshLayout.setEnabled(true);
swipeRefreshLayout.setOnRefreshListener(mOnRefreshListener);
} else {
swipeRefreshLayout.setEnabled(false);
swipeRefreshLayout.setOnRefreshListener(null);
}
}
@Override
public void showLoading(String msg) {
showLoadingDialog();
}
@Override
public void hideLoading() {
hideLoadingDialog();
}
@Override
public void showError(String msg) {
}
@Subscribe
public void onEventMainThread(RefreshCompleteEvent event) {
swipeRefreshLayout.setRefreshing(false);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
private SwipeRefreshLayout.OnRefreshListener mOnRefreshListener = new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
presenter.getMatchBaseInfo(mid);
EventBus.getDefault().post(new RefreshEvent());
}
};
}