|
@@ -0,0 +1,640 @@
|
|
|
|
+package org.telegram.onecric.ui.activity;
|
|
|
|
+
|
|
|
|
+import static org.telegram.cricdit.utils.TimeUtils.getDayInfo;
|
|
|
|
+
|
|
|
|
+import android.animation.Animator;
|
|
|
|
+import android.animation.AnimatorListenerAdapter;
|
|
|
|
+import android.animation.ObjectAnimator;
|
|
|
|
+import android.app.Dialog;
|
|
|
|
+import android.graphics.Color;
|
|
|
|
+import android.graphics.Typeface;
|
|
|
|
+import android.graphics.drawable.Drawable;
|
|
|
|
+import android.text.TextUtils;
|
|
|
|
+import android.view.Gravity;
|
|
|
|
+import android.view.LayoutInflater;
|
|
|
|
+import android.view.View;
|
|
|
|
+import android.view.WindowManager;
|
|
|
|
+import android.view.animation.LinearInterpolator;
|
|
|
|
+import android.widget.ImageView;
|
|
|
|
+import android.widget.LinearLayout;
|
|
|
|
+import android.widget.TextView;
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
|
+import androidx.core.graphics.ColorUtils;
|
|
|
|
+import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
|
+import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
+import com.ethanhua.skeleton.RecyclerViewSkeletonScreen;
|
|
|
|
+import com.ethanhua.skeleton.Skeleton;
|
|
|
|
+import com.github.gzuliyujiang.calendarpicker.CalendarPicker;
|
|
|
|
+import com.github.gzuliyujiang.calendarpicker.core.ColorScheme;
|
|
|
|
+import com.google.android.material.appbar.AppBarLayout;
|
|
|
|
+import com.lxj.xpopup.XPopup;
|
|
|
|
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
|
|
|
|
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
|
|
|
|
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
|
|
|
|
+import org.telegram.cricdit.base.BaseTabActivity;
|
|
|
|
+import org.telegram.cricdit.base.IPresenter;
|
|
|
|
+import org.telegram.onecric.adapter.CricketFiltrateAdapter;
|
|
|
|
+import org.telegram.onecric.base.JsonBean;
|
|
|
|
+import org.telegram.onecric.mvp.CricketAllBean;
|
|
|
|
+import org.telegram.onecric.mvp.CricketFiltrateBean;
|
|
|
|
+import org.telegram.cricdit.config.Constants;
|
|
|
|
+import org.telegram.onecric.mvp.CricketNewPresenter;
|
|
|
|
+import org.telegram.onecric.mvp.CricketNewView;
|
|
|
|
+import org.telegram.cricdit.utils.ColorUtil;
|
|
|
|
+import org.telegram.cricdit.utils.SPUtils;
|
|
|
|
+import org.telegram.cricdit.utils.ToastUtil;
|
|
|
|
+import org.telegram.cricdit.utils.UIUtil;
|
|
|
|
+import org.telegram.cricdit.view.popup.PrivacyPolicyPopup;
|
|
|
|
+import org.telegram.messenger.LocaleController;
|
|
|
|
+import org.telegram.messenger.R;
|
|
|
|
+import org.telegram.onecric.adapter.CricketDayAdapter;
|
|
|
|
+import org.telegram.ui.ActionBar.ActionBar;
|
|
|
|
+import org.telegram.ui.ActionBar.ActionBarMenu;
|
|
|
|
+import org.telegram.ui.ActionBar.ActionBarMenuItem;
|
|
|
|
+import org.telegram.ui.ActionBar.Theme;
|
|
|
|
+import org.telegram.ui.WebviewActivity;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Calendar;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
|
|
+public class NewMatchActivity extends BaseTabActivity implements CricketNewView,View.OnClickListener{
|
|
|
|
+ private ActionBarMenu menu;
|
|
|
|
+ private PrivacyPolicyPopup mPopupView;
|
|
|
|
+
|
|
|
|
+ private RecyclerView rv_filtrate;
|
|
|
|
+ private TextView tv_day;
|
|
|
|
+ private TextView tv_date;
|
|
|
|
+ private TextView tv_month;
|
|
|
|
+ private TextView tv_live_now;
|
|
|
|
+ private TextView tv_tours_num;
|
|
|
|
+ private ImageView iv_all;
|
|
|
|
+ private ImageView iv_all_author;
|
|
|
|
+ private ImageView iv_all_match;
|
|
|
|
+ private LinearLayout ll_streaming;
|
|
|
|
+ private ImageView iv_streaming;
|
|
|
|
+ private TextView tv_streaming;
|
|
|
|
+ private SmartRefreshLayout smart_rl;
|
|
|
|
+ private RecyclerView recyclerView;
|
|
|
|
+ private LinearLayout ll_tours;
|
|
|
|
+ private TextView tv_to_today;
|
|
|
|
+ private TextView tv_fresh;
|
|
|
|
+ private LinearLayout ll_empty;
|
|
|
|
+ private CricketDayAdapter mAdapter;
|
|
|
|
+ private CricketFiltrateAdapter mFiltrateAdapter;
|
|
|
|
+
|
|
|
|
+ private boolean isLiveNow = false;
|
|
|
|
+ private int streamType = 0;
|
|
|
|
+ private int selectToursNum = 0;
|
|
|
|
+ private Dialog mStreamDialog;
|
|
|
|
+ private List<CricketFiltrateBean> filtrateCheckedList;
|
|
|
|
+ private String tag="";
|
|
|
|
+ private boolean isNotNetWork;
|
|
|
|
+ private long singleTimeInMillis;
|
|
|
|
+ private CalendarPicker picker;
|
|
|
|
+ private RecyclerViewSkeletonScreen filtrateSkeletonScreen;//会导致回到每次rv数量变化会跳回第一页
|
|
|
|
+ private String lastDay;
|
|
|
|
+ private String endDay;
|
|
|
|
+ public int todayPosition = 0;
|
|
|
|
+ private Drawable drawableTop,drawableDown;
|
|
|
|
+ private LinearLayout skeletonLoadLayout;
|
|
|
|
+ private CricketNewPresenter mPresenter;
|
|
|
|
+ @Override
|
|
|
|
+ protected int getLayoutResId() {
|
|
|
|
+ return R.layout.activity_match_new;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String setActionBarTitle() {
|
|
|
|
+ return LocaleController.getString(R.string.CdMatch);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected IPresenter createPresenter() {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void initView(View view) {
|
|
|
|
+ AppBarLayout appBarLayout = view.findViewById(R.id.match_app_bar);
|
|
|
|
+ appBarLayout.setTargetElevation(0);
|
|
|
|
+ menu = actionBar.createMenu();
|
|
|
|
+ initTopItem();
|
|
|
|
+ mPresenter = new CricketNewPresenter(this);
|
|
|
|
+ rv_filtrate = view.findViewById(R.id.rv_filtrate);
|
|
|
|
+ tv_day = view.findViewById(R.id.tv_day);
|
|
|
|
+ tv_date = view.findViewById(R.id.tv_date);
|
|
|
|
+ tv_month = view.findViewById(R.id.tv_month);
|
|
|
|
+ tv_live_now = view.findViewById(R.id.tv_live_now);
|
|
|
|
+ tv_tours_num = view.findViewById(R.id.tv_tours_num);
|
|
|
|
+ smart_rl = view.findViewById(R.id.smart_rl);
|
|
|
|
+ recyclerView = view.findViewById(R.id.recyclerView);
|
|
|
|
+ ll_tours = view.findViewById(R.id.ll_tours);
|
|
|
|
+ tv_to_today = view.findViewById(R.id.tv_to_today);
|
|
|
|
+ ll_empty = view.findViewById(R.id.ll_empty);
|
|
|
|
+ tv_live_now.setOnClickListener(this);
|
|
|
|
+ tv_tours_num.setOnClickListener(this);
|
|
|
|
+ tv_fresh = view.findViewById(R.id.tv_fresh);
|
|
|
|
+ skeletonLoadLayout = view.findViewById(R.id.ll_skeleton);
|
|
|
|
+ tv_fresh.setOnClickListener(this);
|
|
|
|
+ view.findViewById(R.id.tv_calendar).setOnClickListener(this);
|
|
|
|
+ view.findViewById(R.id.tv_to_today).setOnClickListener(this);
|
|
|
|
+ ll_tours.setOnClickListener(this);
|
|
|
|
+ initStreamDialog();
|
|
|
|
+ initCalendarPicker();
|
|
|
|
+ drawableTop = getContext().getResources().getDrawable(R.mipmap.ic_go_today_up);
|
|
|
|
+ drawableTop.setBounds(0,0,drawableTop.getMinimumWidth(),drawableTop.getMinimumHeight());
|
|
|
|
+ drawableDown = getContext().getResources().getDrawable(R.mipmap.ic_go_today_down);
|
|
|
|
+ drawableDown.setBounds(0,0,drawableDown.getMinimumWidth(),drawableDown.getMinimumHeight());
|
|
|
|
+
|
|
|
|
+ initData();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initData(){
|
|
|
|
+ filtrateCheckedList = new ArrayList<>();
|
|
|
|
+ mFiltrateAdapter = new CricketFiltrateAdapter(R.layout.item_cricket_filtrate,new ArrayList<>());
|
|
|
|
+ mFiltrateAdapter.setOnItemChildClickListener((adapter, view, position) -> {
|
|
|
|
+ if(view.getId() == R.id.tv_name){
|
|
|
|
+ mFiltrateAdapter.getItem(position).setCheck(!mFiltrateAdapter.getItem(position).isCheck());
|
|
|
|
+ if(mFiltrateAdapter.getItem(position).isCheck()){
|
|
|
|
+ ++selectToursNum;
|
|
|
|
+ filtrateCheckedList.add(mFiltrateAdapter.getItem(position));
|
|
|
|
+ mFiltrateAdapter.addData(0,mFiltrateAdapter.getItem(position));
|
|
|
|
+ mFiltrateAdapter.remove(position+1);
|
|
|
|
+ }else{
|
|
|
|
+ --selectToursNum;
|
|
|
|
+ filtrateCheckedList.remove(mFiltrateAdapter.getItem(position));
|
|
|
|
+ mFiltrateAdapter.addData(mFiltrateAdapter.getItem(position));
|
|
|
|
+ mFiltrateAdapter.remove(position);
|
|
|
|
+ }
|
|
|
|
+ rv_filtrate.smoothScrollToPosition(0);
|
|
|
|
+ tv_tours_num.setText(selectToursNum + "");
|
|
|
|
+ tv_tours_num.setVisibility(selectToursNum > 0 ? View.VISIBLE : View.GONE);
|
|
|
|
+ if(filtrateCheckedList.size()>0){
|
|
|
|
+ StringBuilder tagsId = new StringBuilder();
|
|
|
|
+ for(CricketFiltrateBean bean : filtrateCheckedList){
|
|
|
|
+ tagsId.append(","+bean.getId());
|
|
|
|
+ }
|
|
|
|
+ tag = tagsId.substring(1);
|
|
|
|
+ }else{
|
|
|
|
+ tag = "";
|
|
|
|
+ }
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ View headerStreamingView = LayoutInflater.from(getContext()).inflate(R.layout.item_cricket_filtrate_header, null);
|
|
|
|
+ ll_streaming = headerStreamingView.findViewById(R.id.ll_streaming);
|
|
|
|
+ iv_streaming = headerStreamingView.findViewById(R.id.iv_streaming);
|
|
|
|
+ tv_streaming = headerStreamingView.findViewById(R.id.tv_streaming);
|
|
|
|
+ ll_streaming.setOnClickListener(v -> {
|
|
|
|
+ if (mStreamDialog != null) {
|
|
|
|
+ mStreamDialog.show();
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ mFiltrateAdapter.addHeaderView(headerStreamingView,-1, LinearLayout.HORIZONTAL);
|
|
|
|
+
|
|
|
|
+ rv_filtrate.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL, false));
|
|
|
|
+ rv_filtrate.setAdapter(mFiltrateAdapter);
|
|
|
|
+
|
|
|
|
+ smart_rl.setEnableLoadMore(false);
|
|
|
|
+ smart_rl.setOnRefreshListener(new OnRefreshListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
|
|
|
+ //前一天
|
|
|
|
+ requestList(0);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+// recyclerView.getRecycledViewPool().setMaxRecycledViews(0, 20);
|
|
|
|
+// recyclerView.setItemViewCacheSize(20);
|
|
|
|
+// mAdapter = new CricketDayAdapter(this,getActivity(), new ArrayList<>());
|
|
|
|
+ mAdapter = new CricketDayAdapter(this,R.layout.item_cricket_day, new ArrayList<>());
|
|
|
|
+ LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
|
|
|
|
+ recyclerView.setLayoutManager(linearLayoutManager);
|
|
|
|
+ recyclerView.setAdapter(mAdapter);
|
|
|
|
+ recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
|
|
|
|
+ LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
|
|
|
|
+ if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
|
|
|
+ int lastVisibleItem = manager.findLastVisibleItemPosition();
|
|
|
|
+ int totalItemCount = manager.getItemCount();
|
|
|
|
+ if (lastVisibleItem == (totalItemCount - 1)) {
|
|
|
|
+ requestList(2);
|
|
|
|
+ }
|
|
|
|
+ }else if(newState == RecyclerView.SCROLL_STATE_DRAGGING){
|
|
|
|
+ if(recyclerView.getChildAt(0) != null){
|
|
|
|
+ int currentPosition = ((RecyclerView.LayoutParams) recyclerView.getChildAt(0).getLayoutParams()).getViewAdapterPosition();
|
|
|
|
+ setDayInfo(getDayInfo(mAdapter.getItem(currentPosition).getDay()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ filtrateSkeletonScreen = Skeleton.bind(rv_filtrate)
|
|
|
|
+ .adapter(mFiltrateAdapter)
|
|
|
|
+ .shimmer(false)
|
|
|
|
+ .count(6)
|
|
|
|
+ .load(R.layout.item_cricket_filtrate_skeleton)
|
|
|
|
+ .show();
|
|
|
|
+
|
|
|
|
+ mPresenter.getFiltrateList();
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initTopItem() {
|
|
|
|
+ ActionBarMenuItem searchItem = menu.addItem(0, R.drawable.ic_ab_search);
|
|
|
|
+ searchItem.setIconColor(ColorUtil.COLOR_WHITE);
|
|
|
|
+
|
|
|
|
+ searchItem.setOnClickListener(v -> {
|
|
|
|
+// SearchMatchActivity.forward(getContext());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ protected void initActionBar(ActionBar actionBar) {
|
|
|
|
+ super.initActionBar(actionBar);
|
|
|
|
+ actionBar.setForceSkipTouches(true);
|
|
|
|
+ actionBar.setAddToContainer(false);
|
|
|
|
+ actionBar.setOccupyStatusBar(false);
|
|
|
|
+ actionBar.setClipContent(false);
|
|
|
|
+ actionBar.setCastShadows(false);
|
|
|
|
+ actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
|
|
|
+ actionBar.setAllowOverlayTitle(false);
|
|
|
|
+ actionBar.setBackgroundColor(Color.TRANSPARENT);
|
|
|
|
+ actionBar.setItemsColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText), false);
|
|
|
|
+ actionBar.setItemsBackgroundColor(Theme.getColor(Theme.key_actionBarWhiteSelector), false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean isLightStatusBar() {
|
|
|
|
+ int color = Theme.getColor(Theme.key_actionBarDefault, null, true);
|
|
|
|
+ return ColorUtils.calculateLuminance(color) > 0.7f;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onStart() {
|
|
|
|
+ super.onStart();
|
|
|
|
+ showPrivacy();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void showPrivacy() {
|
|
|
|
+ boolean privacyPolicy = SPUtils.getInstance().get("privacy_policy", false);
|
|
|
|
+ if (!privacyPolicy) {
|
|
|
|
+ if (mPopupView == null) {
|
|
|
|
+ mPopupView = new PrivacyPolicyPopup(getContext(), new PrivacyPolicyPopup.OnContentClickListener() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void clickContent(int i) {
|
|
|
|
+ mPopupView.dismiss();
|
|
|
|
+ if (i==0) {
|
|
|
|
+ presentFragment(new WebviewActivity(Constants.WEB_URL_PRIVACY_POLICY, ""));
|
|
|
|
+ } else {
|
|
|
|
+ presentFragment(new WebviewActivity(Constants.WEB_URL_TERMS_OF_SERVICE, ""));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public void decline() {
|
|
|
|
+ getParentActivity().finish();
|
|
|
|
+ System.exit(0);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ new XPopup.Builder(getContext())
|
|
|
|
+ .moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面
|
|
|
|
+ .dismissOnTouchOutside(false)
|
|
|
|
+ .dismissOnBackPressed(false)
|
|
|
|
+ .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个
|
|
|
|
+ .asCustom(mPopupView)
|
|
|
|
+ .show();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initStreamDialog() {
|
|
|
|
+ mStreamDialog = new Dialog(getContext(), R.style.dialog);
|
|
|
|
+ mStreamDialog.setContentView(R.layout.dialog_streaming);
|
|
|
|
+ mStreamDialog.setCancelable(true);
|
|
|
|
+ mStreamDialog.setCanceledOnTouchOutside(true);
|
|
|
|
+
|
|
|
|
+ mStreamDialog.getWindow().setWindowAnimations(R.style.bottomToTopAnim);
|
|
|
|
+ WindowManager.LayoutParams params = mStreamDialog.getWindow().getAttributes();
|
|
|
|
+ params.width = WindowManager.LayoutParams.MATCH_PARENT;
|
|
|
|
+ params.gravity = Gravity.BOTTOM;
|
|
|
|
+ mStreamDialog.getWindow().setAttributes(params);
|
|
|
|
+ iv_all = mStreamDialog.findViewById(R.id.iv_all);
|
|
|
|
+ iv_all_author = mStreamDialog.findViewById(R.id.iv_all_author);
|
|
|
|
+ iv_all_match = mStreamDialog.findViewById(R.id.iv_all_match);
|
|
|
|
+ iv_all.setSelected(true);
|
|
|
|
+ mStreamDialog.findViewById(R.id.ll_all_live).setOnClickListener(this);
|
|
|
|
+ mStreamDialog.findViewById(R.id.ll_author_live).setOnClickListener(this);
|
|
|
|
+ mStreamDialog.findViewById(R.id.ll_match_live).setOnClickListener(this);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ int id = v.getId();
|
|
|
|
+ if (id == R.id.tv_live_now) {
|
|
|
|
+ tv_live_now.setSelected(!tv_live_now.isSelected());
|
|
|
|
+ isLiveNow = tv_live_now.isSelected();
|
|
|
|
+ if(isLiveNow){
|
|
|
|
+ smart_rl.setEnableRefresh(false);
|
|
|
|
+ }else{
|
|
|
|
+ smart_rl.setEnableRefresh(true);
|
|
|
|
+ }
|
|
|
|
+ requestList(1);
|
|
|
|
+ }else if(id == R.id.tv_calendar){
|
|
|
|
+ //选择日期 时间选择器
|
|
|
|
+ if(picker == null){
|
|
|
|
+ initCalendarPicker();
|
|
|
|
+ }
|
|
|
|
+ picker.show();
|
|
|
|
+ }else if(id == R.id.ll_tours){
|
|
|
|
+ //展开筛选联赛弹窗
|
|
|
|
+
|
|
|
|
+ }else if(id == R.id.tv_tours_num){
|
|
|
|
+ //数量
|
|
|
|
+ }else if(id == R.id.ll_all_live){
|
|
|
|
+ if(streamType!=0){
|
|
|
|
+ streamType = 0;
|
|
|
|
+ if(iv_all != null){
|
|
|
|
+ iv_all.setSelected(true);
|
|
|
|
+ iv_all_match.setSelected(false);
|
|
|
|
+ iv_all_author.setSelected(false);
|
|
|
|
+ }
|
|
|
|
+ ll_streaming.setSelected(false);
|
|
|
|
+ iv_streaming.setSelected(false);
|
|
|
|
+ tv_streaming.setSelected(false);
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+ if(mStreamDialog != null){
|
|
|
|
+ mStreamDialog.dismiss();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }else if(id == R.id.ll_match_live){
|
|
|
|
+ if(streamType!=1){
|
|
|
|
+ streamType = 1;
|
|
|
|
+ if(iv_all != null){
|
|
|
|
+ iv_all.setSelected(false);
|
|
|
|
+ iv_all_match.setSelected(true);
|
|
|
|
+ iv_all_author.setSelected(false);
|
|
|
|
+ }
|
|
|
|
+ ll_streaming.setSelected(true);
|
|
|
|
+ iv_streaming.setSelected(true);
|
|
|
|
+ tv_streaming.setSelected(true);
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+ if(mStreamDialog != null){
|
|
|
|
+ mStreamDialog.dismiss();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }else if(id == R.id.ll_author_live){
|
|
|
|
+ if(streamType!=2){
|
|
|
|
+ streamType = 2;
|
|
|
|
+ if(iv_all != null){
|
|
|
|
+ iv_all_match.setSelected(false);
|
|
|
|
+ iv_all.setSelected(false);
|
|
|
|
+ iv_all_author.setSelected(true);
|
|
|
|
+ }
|
|
|
|
+ ll_streaming.setSelected(true);
|
|
|
|
+ iv_streaming.setSelected(true);
|
|
|
|
+ tv_streaming.setSelected(true);
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+ if(mStreamDialog != null){
|
|
|
|
+ mStreamDialog.dismiss();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }else if(id == R.id.tv_to_today){
|
|
|
|
+ recyclerView.smoothScrollToPosition(todayPosition);
|
|
|
|
+ setDayInfo(getDayInfo(mAdapter.getItem(todayPosition).getDay()));
|
|
|
|
+ }else if(id == R.id.tv_fresh){
|
|
|
|
+ ll_empty.setVisibility(View.GONE);
|
|
|
|
+ recyclerView.setVisibility(View.VISIBLE);
|
|
|
|
+ if(isLiveNow){
|
|
|
|
+ tv_live_now.setSelected(false);
|
|
|
|
+ isLiveNow = false;
|
|
|
|
+ smart_rl.setEnableRefresh(true);
|
|
|
|
+ }
|
|
|
|
+ if(streamType!=0){
|
|
|
|
+ streamType = 0;
|
|
|
|
+ if(iv_all != null){
|
|
|
|
+ iv_all.setSelected(true);
|
|
|
|
+ iv_all_match.setSelected(false);
|
|
|
|
+ iv_all_author.setSelected(false);
|
|
|
|
+ }
|
|
|
|
+ ll_streaming.setSelected(false);
|
|
|
|
+ iv_streaming.setSelected(false);
|
|
|
|
+ tv_streaming.setSelected(false);
|
|
|
|
+ }
|
|
|
|
+ tag = "";
|
|
|
|
+ mPresenter.getFiltrateList();
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void showTodayBtnAnim(int type){
|
|
|
|
+ switch (type){
|
|
|
|
+ case 0://从下往上 出现
|
|
|
|
+ if(tv_to_today.isSelected()){
|
|
|
|
+ transAnim(tv_to_today,tv_to_today.getMeasuredHeight() + UIUtil.dip2px(getContext(),20),0);
|
|
|
|
+ tv_to_today.setSelected(false);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 1://从上往下 退出
|
|
|
|
+ if(!tv_to_today.isSelected()){
|
|
|
|
+ transAnim(tv_to_today,0,tv_to_today.getMeasuredHeight() + UIUtil.dip2px(getContext(),20));
|
|
|
|
+ tv_to_today.setSelected(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void transAnim(View view,float start,float end) {
|
|
|
|
+ ObjectAnimator mObjectAnimator = ObjectAnimator.ofFloat(view, "translationY",start,end);
|
|
|
|
+ mObjectAnimator.setDuration(500);
|
|
|
|
+ mObjectAnimator.setInterpolator(new LinearInterpolator());
|
|
|
|
+
|
|
|
|
+ mObjectAnimator.addListener(new AnimatorListenerAdapter() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onAnimationEnd(Animator animation) {
|
|
|
|
+ super.onAnimationEnd(animation);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ mObjectAnimator.start(); // 开始播放动画
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void requestList(int type){
|
|
|
|
+ if(type == 0){
|
|
|
|
+ if(mFiltrateAdapter.getItemCount() <=1){
|
|
|
|
+ mPresenter.getFiltrateList();
|
|
|
|
+ }
|
|
|
|
+ if(mAdapter.getItemCount() <= 0 && isNotNetWork){
|
|
|
|
+ requestList(1);
|
|
|
|
+ }else if(!TextUtils.isEmpty(lastDay)){
|
|
|
|
+ mPresenter.getCricketMatchList(type,lastDay,tag,streamType,isLiveNow);
|
|
|
|
+ }else{
|
|
|
|
+ smart_rl.finishRefresh();
|
|
|
|
+ }
|
|
|
|
+ }else if(type == 1){
|
|
|
|
+ lastDay = "";
|
|
|
|
+ endDay = "";
|
|
|
|
+ skeletonLoadLayout.setVisibility(View.VISIBLE);
|
|
|
|
+ recyclerView.setVisibility(View.GONE);
|
|
|
|
+ mPresenter.getCricketMatchList(type,new SimpleDateFormat("yyyy-MM-dd").format(singleTimeInMillis),tag,streamType,isLiveNow);
|
|
|
|
+ }else if(type == 2){
|
|
|
|
+ if(!TextUtils.isEmpty(endDay)){
|
|
|
|
+ mPresenter.getCricketMatchList(type,endDay,tag,streamType,isLiveNow);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getDataSuccess(List<CricketFiltrateBean> list) {
|
|
|
|
+ filtrateCheckedList.clear();
|
|
|
|
+ selectToursNum = 0;
|
|
|
|
+ tv_tours_num.setVisibility(View.GONE);
|
|
|
|
+ if(list!=null){
|
|
|
|
+ mFiltrateAdapter.setNewData(list);
|
|
|
|
+ rv_filtrate.setBackgroundColor(Color.TRANSPARENT);
|
|
|
|
+ filtrateSkeletonScreen.hide();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getDataSuccess(int type, CricketAllBean bean) {
|
|
|
|
+ if(type == 0){
|
|
|
|
+ smart_rl.finishRefresh();
|
|
|
|
+ }
|
|
|
|
+ skeletonLoadLayout.setVisibility(View.GONE);
|
|
|
|
+ if (bean != null && bean.getItem() != null && bean.getItem().size() > 0) {
|
|
|
|
+ if(type == 0 || type == 1){
|
|
|
|
+ this.lastDay = bean.getFrontDay();
|
|
|
|
+ }
|
|
|
|
+ if(type == 2 || type == 1){
|
|
|
|
+ this.endDay = bean.getEndDay();
|
|
|
|
+ }
|
|
|
|
+ ll_empty.setVisibility(View.GONE);
|
|
|
|
+ recyclerView.setVisibility(View.VISIBLE);
|
|
|
|
+ if(type == 0){
|
|
|
|
+ todayPosition = todayPosition+bean.getItem().size();
|
|
|
|
+ mAdapter.addData(0,bean.getItem());
|
|
|
|
+ }else if(type == 1){
|
|
|
|
+ todayPosition = 0;
|
|
|
|
+ setDayInfo(getDayInfo(bean.getItem().get(0).getDay()));
|
|
|
|
+ mAdapter.setNewData(bean.getItem());;
|
|
|
|
+ recyclerView.scrollBy(0, (int) (recyclerView.getY() + UIUtil.dip2px(getContext(),60)));
|
|
|
|
+ }else{
|
|
|
|
+ mAdapter.addData(bean.getItem());
|
|
|
|
+ }
|
|
|
|
+ } else if(mAdapter.getItemCount() == 0){
|
|
|
|
+ recyclerView.setVisibility(View.GONE);
|
|
|
|
+ ll_empty.setVisibility(View.VISIBLE);
|
|
|
|
+ } else if(type == 1 && (!TextUtils.isEmpty(tag) || isLiveNow || streamType != 0)){
|
|
|
|
+ mAdapter.setNewData(new ArrayList<>());
|
|
|
|
+ recyclerView.setVisibility(View.GONE);
|
|
|
|
+ ll_empty.setVisibility(View.VISIBLE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getDataFail(int type, String msg) {
|
|
|
|
+ smart_rl.finishRefresh();
|
|
|
|
+ skeletonLoadLayout.setVisibility(View.GONE);
|
|
|
|
+ if (mAdapter.getItemCount() <= 0) {
|
|
|
|
+ recyclerView.setVisibility(View.GONE);
|
|
|
|
+ ll_empty.setVisibility(View.VISIBLE);
|
|
|
|
+ } else {
|
|
|
|
+ ToastUtil.show(getContext(),msg);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(getContext().getString(R.string.no_internet_connection).equals(msg)){
|
|
|
|
+ isNotNetWork = true;
|
|
|
|
+ }else{
|
|
|
|
+ isNotNetWork = false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setDayInfo(String[] info){
|
|
|
|
+ singleTimeInMillis = new Date().getTime();
|
|
|
|
+ tv_date.setText(info[0]);
|
|
|
|
+ tv_month.setText(info[1]);
|
|
|
|
+ tv_day.setText(info[2]);
|
|
|
|
+
|
|
|
|
+ if(Integer.parseInt(info[3]) < 0){
|
|
|
|
+ tv_to_today.setCompoundDrawables(null,null,drawableDown,null);
|
|
|
|
+ showTodayBtnAnim(0);
|
|
|
|
+ }else if(Integer.parseInt(info[3]) > 0){
|
|
|
|
+ tv_to_today.setCompoundDrawables(null,null,drawableTop,null);
|
|
|
|
+ showTodayBtnAnim(0);
|
|
|
|
+ }else{
|
|
|
|
+ showTodayBtnAnim(1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initCalendarPicker(){
|
|
|
|
+ picker = new CalendarPicker(getParentActivity());
|
|
|
|
+ picker.setColorScheme(new ColorScheme()
|
|
|
|
+ .weekTextColor(0xFFBDBFC8)
|
|
|
|
+ .daySelectBackgroundColor(0xFF527da3)
|
|
|
|
+ .daySelectTextColor(0xFFFFFFFF)
|
|
|
|
+ .dayStressTextColor(0xFF000000)
|
|
|
|
+ .dayNormalTextColor(0xFF000000)
|
|
|
|
+ .dayInvalidTextColor(0xFFC8C8C8));
|
|
|
|
+ //范围
|
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
|
+ Calendar c2 = Calendar.getInstance();
|
|
|
|
+ c.setTime(new Date());
|
|
|
|
+ c2.setTime(new Date());
|
|
|
|
+ c.add(Calendar.DATE, -15);
|
|
|
|
+ c2.add(Calendar.DATE, 15);
|
|
|
|
+ picker.setRangeDate(c.getTime(),c2.getTime());
|
|
|
|
+ picker.setTitle("Select Date");
|
|
|
|
+ picker.getCancelView().setVisibility(View.GONE);
|
|
|
|
+ picker.getTitleView().setTypeface(Typeface.DEFAULT_BOLD);
|
|
|
|
+ picker.getTitleView().setTextColor(0xFF000000);
|
|
|
|
+ picker.getOkView().setText("confirm");
|
|
|
|
+ if (singleTimeInMillis == 0) {
|
|
|
|
+ singleTimeInMillis = System.currentTimeMillis();
|
|
|
|
+ }
|
|
|
|
+ picker.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.shape_white_25dp_half_rec));
|
|
|
|
+ picker.setSelectedDate(singleTimeInMillis);
|
|
|
|
+ picker.setOnSingleDatePickListener(date -> {
|
|
|
|
+ if(singleTimeInMillis != date.getTime()){
|
|
|
|
+ singleTimeInMillis = date.getTime();
|
|
|
|
+ requestList(1);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void showLoading() {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void hideLoading() {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getDataSuccess(JsonBean model) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void getDataFail(String msg) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onResume() {
|
|
|
|
+ super.onResume();
|
|
|
|
+ setNavigationBarColor(ColorUtil.COLOR_WHITE);
|
|
|
|
+ }
|
|
|
|
+}
|