diff --git a/common/src/main/java/com/yunbao/common/views/weight/ViewClicksAntiShake.java b/common/src/main/java/com/yunbao/common/views/weight/ViewClicksAntiShake.java new file mode 100644 index 000000000..850d8ba0e --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/weight/ViewClicksAntiShake.java @@ -0,0 +1,51 @@ +package com.yunbao.common.views.weight; + +import android.view.View; + +import com.jakewharton.rxbinding3.view.RxView; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import kotlin.Unit; + +/** + * View防抖 + */ +public class ViewClicksAntiShake { + //防抖回调 + public interface ViewClicksCallBack { + void onViewClicks(); + } + + /** + * 防抖 + */ + public static void clicksAntiShake(View view, ViewClicksCallBack callBack) { + RxView.clicks(view) + .throttleFirst(2, TimeUnit.SECONDS) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Unit unit) { + if (callBack != null) + callBack.onViewClicks(); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } +} diff --git a/main/src/main/java/com/yunbao/main/activity/MainActivity.java b/main/src/main/java/com/yunbao/main/activity/MainActivity.java index 68049ec03..1ef242629 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainActivity.java @@ -33,6 +33,7 @@ import com.android.billingclient.api.Purchase; import com.android.billingclient.api.SkuDetails; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import com.jakewharton.rxbinding3.view.RxView; import com.tencent.imsdk.v2.V2TIMCallback; import com.tencent.imsdk.v2.V2TIMManager; import com.tencent.imsdk.v2.V2TIMSDKConfig; @@ -113,10 +114,14 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.concurrent.TimeUnit; import cn.rongcloud.rtc.api.RCRTCConfig; import cn.rongcloud.rtc.api.RCRTCEngine; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; import io.rong.imlib.RongIMClient; +import kotlin.Unit; import static com.yunbao.common.CommonAppContext.isReady; @@ -162,7 +167,6 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene private int messageNumber = 0, numberMe = 1; private ImageView waitingTip; private FloatBannerView floatBanner; - private boolean isClickfloatBanner = false; private boolean isfloatBannernet = true; @@ -366,44 +370,54 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene mViewPager.setCurrentItem(0); mTabButtonGroup.setCurPosition(0); isInstructor(); - findViewById(R.id.banner_click).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!isClickfloatBanner) { - isClickfloatBanner = true; - String Uid = floatBanner.getUid(); - LiveHttpUtil.getLiveInfo(Uid + "", new HttpCallback() { - @Override - public void onSuccess(int code, String msg, String[] info) { - if (code == 0 && info.length > 0) { - LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class); + RxView.clicks(findViewById(R.id.banner_click)) + .throttleFirst(2, TimeUnit.SECONDS) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Unit unit) { + String Uid = floatBanner.getUid(); + LiveHttpUtil.getLiveInfo(Uid + "", new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class); - LiveRoomCheckLivePresenter mCheckLivePresenter = new LiveRoomCheckLivePresenter(mContext, new LiveRoomCheckLivePresenter.ActionListener() { - @Override - public void onLiveRoomChanged(LiveBean liveBean, int liveType, int liveTypeVal, int liveSdk) { - if (liveBean == null) { - return; + LiveRoomCheckLivePresenter mCheckLivePresenter = new LiveRoomCheckLivePresenter(mContext, new LiveRoomCheckLivePresenter.ActionListener() { + @Override + public void onLiveRoomChanged(LiveBean liveBean, int liveType, int liveTypeVal, int liveSdk) { + if (liveBean == null) { + return; + } + LiveAudienceActivity.forward(mContext, liveBean, liveType, liveTypeVal, "", 0, liveSdk); + } - LiveAudienceActivity.forward(mContext, liveBean, liveType, liveTypeVal, "", 0, liveSdk); + }); - } - }); - - mCheckLivePresenter.checkLive(liveBean); - isClickfloatBanner = false; - } else { - - RouteUtil.forwardUserHome(mContext, Uid, 0); - isClickfloatBanner = false; + mCheckLivePresenter.checkLive(liveBean); + } else { + RouteUtil.forwardUserHome(mContext, Uid, 0); + } } - } - }); + }); + } - } + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); - } - }); //选中监听 mTabButtonGroup.addTabButtonGroupChangeListener((view, index) -> { if (index == 0) { @@ -414,7 +428,6 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene floatBanner.setVisibility(View.GONE); findViewById(R.id.banner_click).setVisibility(View.GONE); isfloatBannernet = false; - isClickfloatBanner = false; } }); } diff --git a/main/src/main/java/com/yunbao/main/adapter/MainHomeLiveAdapter.java b/main/src/main/java/com/yunbao/main/adapter/MainHomeLiveAdapter.java index 169c66070..8b6744437 100644 --- a/main/src/main/java/com/yunbao/main/adapter/MainHomeLiveAdapter.java +++ b/main/src/main/java/com/yunbao/main/adapter/MainHomeLiveAdapter.java @@ -23,21 +23,14 @@ import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; -import com.squareup.picasso.Picasso; -import com.xj.marqueeview.MarqueeView; import com.yunbao.common.Constants; import com.yunbao.common.adapter.RefreshAdapter; import com.yunbao.common.bean.WeekListBean; -import com.yunbao.common.custom.RatioRoundImageView; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.utils.DpUtil; -import com.yunbao.common.utils.formatBigNum; import com.yunbao.live.bean.LiveBean; import com.yunbao.main.R; -import com.yunbao.main.bean.HomeTopBean; -import com.yunbao.main.utils.MainIconUtil; import com.yunbao.main.views.MainHomeLiveItemViewHolder; -import com.yunbao.main.views.MainHomeLiveViewHolder; import com.yunbao.main.views.MainHomeLiveWeekItemViewHolder; import java.util.List; @@ -54,7 +47,6 @@ public class MainHomeLiveAdapter extends RefreshAdapter { private static final int LEFT = 1; private static final int RIGHT = 2; private final int WEEKLAYOUT = 5005; - private View.OnClickListener mOnClickListener; private View mHeadView; private Context context; private int Height; @@ -66,26 +58,6 @@ public class MainHomeLiveAdapter extends RefreshAdapter { this.Height = h; mHeadView = mInflater.inflate(R.layout.item_main_home_live_head, null, false); mHeadView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DpUtil.dp2px(140))); - mOnClickListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!canClick()) { - return; - } - Object tag = v.getTag(); - if (tag != null) { - int position = (int) tag; - if (mOnItemClickListener != null) { - if (mList.get(position).getIs_week() != null && mList.get(position).getIs_week().equals("1")) { - if (mList.get(position).getmWeekList() != null && mList.get(position).getmWeekList().size() > 0) { - mList.get(position).setUid(mList.get(position).getmWeekList().get(weekListIndex).getAnchor_id()); - } - } - mOnItemClickListener.onItemClick(mList.get(position), position); - } - } - } - }; } public View getHeadView() { @@ -174,138 +146,6 @@ public class MainHomeLiveAdapter extends RefreshAdapter { } } - HomeTopBean HomeTopData; - -// class Vh extends RecyclerView.ViewHolder { -// LinearLayout live_info_view, lt_week_list; -// ImageView mCover, img_week_head; -// TextView mName, name2; -// TextView mTitle; -// TextView mNum; -// ImageView mType; -// ImageView live_type; -// -// ImageView mLiveIco; -// TextView mLiveState; -// MarqueeView mRvRankingList; -// ImageView PkAvatar; -// ImageView Pkico; -// ImageView dr_pk_ico; -// View views; -// RatioRoundImageView bgs; -// SVGAImageView week_svga; -// -// public Vh(View itemView) { -// super(itemView); -// live_info_view = (LinearLayout) itemView.findViewById(R.id.live_info_view); -// lt_week_list = (LinearLayout) itemView.findViewById(R.id.lt_week_list); -// mCover = (ImageView) itemView.findViewById(R.id.cover); -// mName = (TextView) itemView.findViewById(R.id.name); -// mTitle = (TextView) itemView.findViewById(R.id.title); -// mNum = (TextView) itemView.findViewById(R.id.num); -// mType = (ImageView) itemView.findViewById(R.id.type); -// mLiveIco = (ImageView) itemView.findViewById(R.id.tv_live_ico); -// PkAvatar = (ImageView) itemView.findViewById(R.id.pk_avatar); -// Pkico = (ImageView) itemView.findViewById(R.id.pk_ico); -// dr_pk_ico = (ImageView) itemView.findViewById(R.id.dr_pk_ico); -// mLiveState = (TextView) itemView.findViewById(R.id.tv_live_state); -// mRvRankingList = (MarqueeView) itemView.findViewById(R.id.rv_ranking_list); -// live_type = (ImageView) itemView.findViewById(R.id.live_type); -// views = itemView.findViewById(R.id.views); -// bgs = itemView.findViewById(R.id.bgs); -// itemView.setOnClickListener(mOnClickListener); -// -// week_svga = (SVGAImageView) itemView.findViewById(R.id.week_svga); -// img_week_head = (ImageView) itemView.findViewById(R.id.img_week_head); -// name2 = (TextView) itemView.findViewById(R.id.name2); -// } -// -// void setData(LiveBean bean, int position) { -// Log.e("MainHomeLiveAdapter", position + " ***************" + "LiveBean:" + bean.getThumb()); -//// Log.e("MainHomeLiveAdapter", position + " ***************" + "LiveBean:" + new Gson().toJson(bean)); -// itemView.setTag(position); -// live_info_view.setVisibility(View.VISIBLE); -// live_type.setImageDrawable(null); -// if (bean.getContent_pic_size_two() != null && !bean.getContent_pic_size_two().equals("") && Height <= 1920) { -// Picasso.with(mContext) -// .load(bean.getContent_pic_size_two()) -// .into(live_type); -// } else if (bean.getContent_pic_size_three() != null && !bean.getContent_pic_size_three().equals("") && Height > 1920) { -// Log.e("t1", position + "222啊" + Height + bean.getContent_pic_size_three()); -// Picasso.with(mContext) -// .load(bean.getContent_pic_size_three()) -// .into(live_type); -// } -// live_info_view.setVisibility(View.GONE); -// lt_week_list.setVisibility(View.GONE); -// if (bean.getIsTop() != null && bean.getIsTop().equals("1")) { -// if (MainHomeLiveViewHolder.pp != 1) { -// live_info_view.setVisibility(View.GONE); -// mRvRankingList.setVisibility(View.GONE); -// } -// } else { -// live_info_view.setVisibility(View.VISIBLE); -// mRvRankingList.setVisibility(View.GONE); -// bgs.setVisibility(View.GONE); -// if (bean.getIs_week() != null && bean.getIs_week().equals("1")) { -// bgs.setVisibility(View.GONE); -// getWeekIntIndex = Constants.getWeekIntIndex; -// getUserHotList(week_svga, live_info_view, lt_week_list, img_week_head, mTitle, name2, position, bean.getmWeekList()); -// Log.e("MainHomeLiveAdapter", position + " ***************" + "周星榜"); -// } else { -// ImgLoader.display(mContext, bean.getThumb(), mCover); -// bgs.setVisibility(View.VISIBLE); -// } -// Pkico.setVisibility(View.GONE); -// PkAvatar.setVisibility(View.GONE); -// dr_pk_ico.setVisibility(View.GONE); -// if (bean.getDrpk_status() != null && bean.getDrpk_status().equals("1")) { -// dr_pk_ico.setVisibility(View.VISIBLE); -// } -// if (bean.getPk_avatar_thumb() != null && !bean.getPk_avatar_thumb().equals("")) { -// ImgLoader.display(mContext, bean.getPk_avatar_thumb(), PkAvatar); -// Pkico.setVisibility(View.VISIBLE); -// PkAvatar.setVisibility(View.VISIBLE); -// } -// mName.setText(bean.getUserNiceName()); -// if (TextUtils.isEmpty(bean.getTitle())) { -// if (mTitle.getVisibility() == View.VISIBLE) { -// mTitle.setVisibility(View.GONE); -// } -// } else { -// if (mTitle.getVisibility() != View.VISIBLE) { -// mTitle.setVisibility(View.VISIBLE); -// } -// mTitle.setText(bean.getTitle()); -// } -// mNum.setText(formatBigNum.formatBigNum(bean.getHot_num())); -// views.setVisibility(View.GONE); -// if ("1".equals(bean.getIslive())) { -// views.setVisibility(View.VISIBLE); -// //直播中 -// mType.setImageResource(MainIconUtil.getLiveTypeIcon(bean.getType())); -// mType.setVisibility(View.VISIBLE); -// mLiveIco.setImageResource(R.mipmap.icon_main_rest_work); -// mNum.setVisibility(View.VISIBLE); -// live_type.setVisibility(View.VISIBLE); -// mLiveState.setText(R.string.lives_state); -// } else { -// views.setVisibility(View.VISIBLE); -// //休息中 -// mType.setImageResource(MainIconUtil.getLiveTypeIcon(Constants.LIVE_TYPE_RESTING)); -// mType.setVisibility(View.GONE); -// mLiveIco.setImageResource(R.mipmap.icon_main_rest_spot); -// mLiveState.setText(R.string.rest_state); -// live_type.setVisibility(View.GONE); -// mNum.setVisibility(View.GONE); -// } -// if (bean.getIs_week() != null && bean.getIs_week().equals("1")) { -// views.setVisibility(View.GONE); -// } -// } -// } -// } - private int weekListIndex = 0; public CountDownTimer countDownTimer; @@ -372,7 +212,7 @@ public class MainHomeLiveAdapter extends RefreshAdapter { @Override public void onError() { } - },null); + }, null); } catch (Exception e) { e.printStackTrace(); } diff --git a/main/src/main/java/com/yunbao/main/adapter/MainHomeRemFollLiveAdapter.java b/main/src/main/java/com/yunbao/main/adapter/MainHomeRemFollLiveAdapter.java index 1ffa642fb..d500b999a 100644 --- a/main/src/main/java/com/yunbao/main/adapter/MainHomeRemFollLiveAdapter.java +++ b/main/src/main/java/com/yunbao/main/adapter/MainHomeRemFollLiveAdapter.java @@ -1,8 +1,6 @@ package com.yunbao.main.adapter; import android.content.Context; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -11,6 +9,10 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.jakewharton.rxbinding3.view.RxView; import com.squareup.picasso.Picasso; import com.xj.marqueeview.MarqueeView; import com.yunbao.common.Constants; @@ -22,13 +24,18 @@ import com.yunbao.live.bean.LiveBean; import com.yunbao.main.R; import com.yunbao.main.utils.MainIconUtil; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import kotlin.Unit; + /** * 关注和推荐的适配器 */ public class MainHomeRemFollLiveAdapter extends RefreshAdapter { - private View.OnClickListener mOnClickListener; private Context context; private int Height; @@ -38,27 +45,9 @@ public class MainHomeRemFollLiveAdapter extends RefreshAdapter { Log.e("t1", h + "屏1"); this.Height = h; - mOnClickListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!canClick()) { - return; - } - Object tag = v.getTag(); - if (tag != null) { - int position = (int) tag; - if (mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(mList.get(position), position); - } - } - } - }; } - - - @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -109,7 +98,38 @@ public class MainHomeRemFollLiveAdapter extends RefreshAdapter { live_type = (ImageView) itemView.findViewById(R.id.live_type); views = itemView.findViewById(R.id.views); bgs = itemView.findViewById(R.id.bgs); - itemView.setOnClickListener(mOnClickListener); + RxView.clicks(itemView) + .throttleFirst(2, TimeUnit.SECONDS) // 才发送 2s内第1次点击按钮的事件 + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Unit unit) { + if (!canClick()) { + return; + } + Object tag = itemView.getTag(); + if (tag != null) { + int position = (int) tag; + if (mOnItemClickListener != null) { + mOnItemClickListener.onItemClick(mList.get(position), position); + } + } + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); } void setData(LiveBean bean, int position) { @@ -131,64 +151,63 @@ public class MainHomeRemFollLiveAdapter extends RefreshAdapter { } - live_info_view.setVisibility(View.GONE); - live_info_view.setVisibility(View.VISIBLE); - mRvRankingList.setVisibility(View.GONE); + live_info_view.setVisibility(View.VISIBLE); + mRvRankingList.setVisibility(View.GONE); + bgs.setVisibility(View.GONE); + if (bean.getIs_week() != null && bean.getIs_week().equals("1")) { + ImgLoader.display(mContext, bean.getImg(), mCover); bgs.setVisibility(View.GONE); - if (bean.getIs_week() != null && bean.getIs_week().equals("1")) { - ImgLoader.display(mContext, bean.getImg(), mCover); - bgs.setVisibility(View.GONE); - } else { - ImgLoader.display(mContext, bean.getThumb(), mCover); - bgs.setVisibility(View.VISIBLE); + } else { + ImgLoader.display(mContext, bean.getThumb(), mCover); + bgs.setVisibility(View.VISIBLE); + } + Pkico.setVisibility(View.GONE); + PkAvatar.setVisibility(View.GONE); + dr_pk_ico.setVisibility(View.GONE); + if (bean.getDrpk_status() != null && bean.getDrpk_status().equals("1")) { + dr_pk_ico.setVisibility(View.VISIBLE); + } + if (bean.getPk_avatar_thumb() != null && !bean.getPk_avatar_thumb().equals("")) { + ImgLoader.display(mContext, bean.getPk_avatar_thumb(), PkAvatar); + Pkico.setVisibility(View.VISIBLE); + PkAvatar.setVisibility(View.VISIBLE); + } + mName.setText(bean.getUserNiceName()); + if (TextUtils.isEmpty(bean.getTitle())) { + if (mTitle.getVisibility() == View.VISIBLE) { + mTitle.setVisibility(View.GONE); } - Pkico.setVisibility(View.GONE); - PkAvatar.setVisibility(View.GONE); - dr_pk_ico.setVisibility(View.GONE); - if (bean.getDrpk_status() != null && bean.getDrpk_status().equals("1")) { - dr_pk_ico.setVisibility(View.VISIBLE); + } else { + if (mTitle.getVisibility() != View.VISIBLE) { + mTitle.setVisibility(View.VISIBLE); } - if (bean.getPk_avatar_thumb() != null && !bean.getPk_avatar_thumb().equals("")) { - ImgLoader.display(mContext, bean.getPk_avatar_thumb(), PkAvatar); - Pkico.setVisibility(View.VISIBLE); - PkAvatar.setVisibility(View.VISIBLE); - } - mName.setText(bean.getUserNiceName()); - if (TextUtils.isEmpty(bean.getTitle())) { - if (mTitle.getVisibility() == View.VISIBLE) { - mTitle.setVisibility(View.GONE); - } - } else { - if (mTitle.getVisibility() != View.VISIBLE) { - mTitle.setVisibility(View.VISIBLE); - } - mTitle.setText(bean.getTitle()); - } - mNum.setText(formatBigNum.formatBigNum(bean.getHot_num())); + mTitle.setText(bean.getTitle()); + } + mNum.setText(formatBigNum.formatBigNum(bean.getHot_num())); + views.setVisibility(View.GONE); + if ("1".equals(bean.getIslive())) { + views.setVisibility(View.VISIBLE); + //直播中 + mType.setImageResource(MainIconUtil.getLiveTypeIcon(bean.getType())); + mType.setVisibility(View.VISIBLE); + mLiveIco.setImageResource(R.mipmap.icon_main_rest_work); + mNum.setVisibility(View.VISIBLE); + live_type.setVisibility(View.VISIBLE); + mLiveState.setText(R.string.lives_state); + } else { + views.setVisibility(View.VISIBLE); + //休息中 + mType.setImageResource(MainIconUtil.getLiveTypeIcon(Constants.LIVE_TYPE_RESTING)); + mType.setVisibility(View.GONE); + mLiveIco.setImageResource(R.mipmap.icon_main_rest_spot); + mLiveState.setText(R.string.rest_state); + live_type.setVisibility(View.GONE); + mNum.setVisibility(View.GONE); + } + if (bean.getIs_week() != null && bean.getIs_week().equals("1")) { views.setVisibility(View.GONE); - if ("1".equals(bean.getIslive())) { - views.setVisibility(View.VISIBLE); - //直播中 - mType.setImageResource(MainIconUtil.getLiveTypeIcon(bean.getType())); - mType.setVisibility(View.VISIBLE); - mLiveIco.setImageResource(R.mipmap.icon_main_rest_work); - mNum.setVisibility(View.VISIBLE); - live_type.setVisibility(View.VISIBLE); - mLiveState.setText(R.string.lives_state); - } else { - views.setVisibility(View.VISIBLE); - //休息中 - mType.setImageResource(MainIconUtil.getLiveTypeIcon(Constants.LIVE_TYPE_RESTING)); - mType.setVisibility(View.GONE); - mLiveIco.setImageResource(R.mipmap.icon_main_rest_spot); - mLiveState.setText(R.string.rest_state); - live_type.setVisibility(View.GONE); - mNum.setVisibility(View.GONE); - } - if (bean.getIs_week() != null && bean.getIs_week().equals("1")) { - views.setVisibility(View.GONE); - } + } } } diff --git a/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java b/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java index 36018ba82..fc08aebd3 100644 --- a/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java +++ b/main/src/main/java/com/yunbao/main/fragment/SearchResultsItemFragment.java @@ -75,8 +75,10 @@ public class SearchResultsItemFragment extends BaseFragment { searchList.addOnScrollListener(new OnRecyclerViewScrollListener() { @Override public void onBottom() { - page = page + 1; - setSearchKey(searchKey, type); + if (type>1){ + page = page + 1; + setSearchKey(searchKey, type); + } } }); emptyLayout.setVisibility(View.GONE); @@ -139,9 +141,7 @@ public class SearchResultsItemFragment extends BaseFragment { @Override public void onSuccess(List> data) { if (getActivity().isFinishing()) return; - if (page > 1) { - itemAdapter.onLoadMoreData(data, searchKey); - } else { + if (data.get(0).size() == 0 && data.get(1).size() == 0) { emptyLayout.setVisibility(View.VISIBLE); @@ -150,7 +150,7 @@ public class SearchResultsItemFragment extends BaseFragment { itemAdapter.showData(data, type, searchKey); searchList.setVisibility(View.VISIBLE); } - } + } @Override diff --git a/main/src/main/java/com/yunbao/main/views/FloatBannerView.java b/main/src/main/java/com/yunbao/main/views/FloatBannerView.java index e7a5b70f0..6a1b9af37 100644 --- a/main/src/main/java/com/yunbao/main/views/FloatBannerView.java +++ b/main/src/main/java/com/yunbao/main/views/FloatBannerView.java @@ -103,7 +103,7 @@ public class FloatBannerView extends FrameLayout { if (next == 0) { index = 0; } - + Uid = String.valueOf(list.get(next).getUid()); float targetX = bannerLayout2.getX() - bannerLayout3.getX(); float targetY = bannerLayout2.getY() - bannerLayout3.getY(); bannerLayout3.setVisibility(GONE); diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeLiveItemViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeLiveItemViewHolder.java index 4c117b181..47c78b65c 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeLiveItemViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeLiveItemViewHolder.java @@ -8,6 +8,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import com.jakewharton.rxbinding3.view.RxView; import com.squareup.picasso.Picasso; import com.yunbao.common.Constants; import com.yunbao.common.custom.RatioRoundImageView; @@ -17,6 +18,12 @@ import com.yunbao.live.bean.LiveBean; import com.yunbao.main.R; import com.yunbao.main.utils.MainIconUtil; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import kotlin.Unit; + /** * 直播页面布局 */ @@ -110,14 +117,37 @@ public class MainHomeLiveItemViewHolder extends RecyclerView.ViewHolder { liveType.setVisibility(View.GONE); mNum.setVisibility(View.GONE); } - itemView.setOnClickListener(new View.OnClickListener() { + RxView.clicks(itemView) + .throttleFirst(2, TimeUnit.SECONDS) // 才发送 2s内第1次点击按钮的事件 + .subscribe(new Observer() { @Override - public void onClick(View v) { + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Unit unit) { if (listener != null) { listener.onItemClick(bean, position); } } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } }); +// itemView.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { + +// } +// }); } public interface OnItemClickListener { diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeLiveWeekItemViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeLiveWeekItemViewHolder.java index c47ee8f54..6b9fa0235 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeLiveWeekItemViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeLiveWeekItemViewHolder.java @@ -11,6 +11,7 @@ import android.widget.ViewFlipper; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.jakewharton.rxbinding3.view.RxView; import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; @@ -22,6 +23,11 @@ import com.yunbao.main.R; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import kotlin.Unit; /** * 直播星榜数据 @@ -68,7 +74,7 @@ public class MainHomeLiveWeekItemViewHolder extends RecyclerView.ViewHolder { public void onError() { Log.e("errqs", "errl"); } - },null); + }, null); } @@ -111,17 +117,33 @@ public class MainHomeLiveWeekItemViewHolder extends RecyclerView.ViewHolder { } bannerHandler.removeCallbacks(mFlipRunnable); bannerHandler.postDelayed(mFlipRunnable, delayMillis); + RxView.clicks(itemView) + .throttleFirst(2, TimeUnit.SECONDS) // 才发送 2s内第1次点击按钮的事件 + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (listener != null) { - WeekListBean model = weekList.get(viewflipperBanner.getDisplayedChild()); - bean.setUid(model.getAnchor_id()); - listener.onItemClick(bean, position); - } - } - }); + } + + @Override + public void onNext(Unit unit) { + if (listener != null) { + WeekListBean model = weekList.get(viewflipperBanner.getDisplayedChild()); + bean.setUid(model.getAnchor_id()); + listener.onItemClick(bean, position); + } + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); } catch (Exception e) { e.printStackTrace(); } diff --git a/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyItemViewHolder.java b/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyItemViewHolder.java index 1f00e0e74..6307e794d 100644 --- a/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyItemViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/SearchRecommendBodyItemViewHolder.java @@ -9,6 +9,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import com.jakewharton.rxbinding3.view.RxView; import com.squareup.picasso.Picasso; import com.yunbao.common.Constants; import com.yunbao.common.bean.AnchorRecommendItemModel; @@ -21,6 +22,12 @@ import com.yunbao.main.R; import com.yunbao.main.event.JumpUserHomeEvent; import com.yunbao.main.utils.MainIconUtil; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; +import kotlin.Unit; + public class SearchRecommendBodyItemViewHolder extends RecyclerView.ViewHolder { private ImageView mCover, liveType, mLiveIco, mType, pkico, drPkIco, pkAvatar; private RatioRoundImageView bgs; @@ -105,14 +112,32 @@ public class SearchRecommendBodyItemViewHolder extends RecyclerView.ViewHolder { mLiveState.setText(R.string.rest_state); liveType.setVisibility(View.GONE); mNum.setVisibility(View.GONE); - } - mCover.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - SearchModel searchModel = new SearchModel(); - searchModel.setId(Long.parseLong(model.getUid())); - Bus.get().post(new JumpUserHomeEvent(searchModel)); - } - }); + }//防抖 + RxView.clicks(mCover) + .throttleFirst(2, TimeUnit.SECONDS) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Unit unit) { + SearchModel searchModel = new SearchModel(); + searchModel.setId(Long.parseLong(model.getUid())); + Bus.get().post(new JumpUserHomeEvent(searchModel)); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } } diff --git a/main/src/main/java/com/yunbao/main/views/SearchResultsViewHolder.java b/main/src/main/java/com/yunbao/main/views/SearchResultsViewHolder.java index 8d0ed3ffb..326bc2adb 100644 --- a/main/src/main/java/com/yunbao/main/views/SearchResultsViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/SearchResultsViewHolder.java @@ -18,6 +18,7 @@ import com.yunbao.common.bean.LevelBean; import com.yunbao.common.bean.SearchModel; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.utils.Bus; +import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.main.R; import com.yunbao.main.event.JumpUserHomeEvent; import com.yunbao.main.utils.WordsTypeUtil; @@ -46,14 +47,18 @@ public class SearchResultsViewHolder extends RecyclerView.ViewHolder { contribute = itemView.findViewById(R.id.contribute); nickLayout = itemView.findViewById(R.id.nick_layout); avatarLayout = itemView.findViewById(R.id.avatar_layout); - nickLayout.setOnClickListener(jumpUserHome); - avatarLayout.setOnClickListener(jumpUserHome); //关注主播或者用户 - itemView.findViewById(R.id.focus_on).setOnClickListener(v -> { + ViewClicksAntiShake.clicksAntiShake(itemView.findViewById(R.id.focus_on), () -> { if (callback != null) { callback.focusOn(model); } }); + ViewClicksAntiShake.clicksAntiShake(nickLayout, () -> { + Bus.get().post(new JumpUserHomeEvent(model)); + }); + ViewClicksAntiShake.clicksAntiShake(avatarLayout, () -> { + Bus.get().post(new JumpUserHomeEvent(model)); + }); } public void showData(SearchModel model, int type, String searchKey) { @@ -87,15 +92,6 @@ public class SearchResultsViewHolder extends RecyclerView.ViewHolder { focusOn.setVisibility(TextUtils.equals(model.getIsattention(), "1") ? View.GONE : View.VISIBLE); } - /** - * 跳转点击用户主页 - */ - View.OnClickListener jumpUserHome = new View.OnClickListener() { - @Override - public void onClick(View v) { - Bus.get().post(new JumpUserHomeEvent(model)); - } - }; public interface SearchResultsCallback { void focusOn(SearchModel model);