Selaa lähdekoodia

1.增加所有返回按钮延迟1秒防止出现未渲染直接返回崩溃问题
2.增加activity共用1秒延迟按钮防止多点触控点击

FailedToRead 2 vuotta sitten
vanhempi
commit
31a46cf620
45 muutettua tiedostoa jossa 359 lisäystä ja 229 poistoa
  1. 3 0
      app/build.gradle
  2. 2 0
      app/src/main/java/com/edufound/reader/activity/CommentActivity.java
  3. 2 0
      app/src/main/java/com/edufound/reader/activity/CustomerServiceActivity.java
  4. 18 21
      app/src/main/java/com/edufound/reader/activity/LoginQRAlertActivity.java
  5. 6 1
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  6. 2 0
      app/src/main/java/com/edufound/reader/activity/MessageActivity.java
  7. 1 0
      app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java
  8. 1 0
      app/src/main/java/com/edufound/reader/activity/MyFollowActivity.java
  9. 3 2
      app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java
  10. 1 0
      app/src/main/java/com/edufound/reader/activity/RecordActivity.java
  11. 2 0
      app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java
  12. 1 0
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  13. 20 24
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  14. 1 0
      app/src/main/java/com/edufound/reader/activity/WebActivity.java
  15. 2 0
      app/src/main/java/com/edufound/reader/activity/payactivity/EventPayActivity.java
  16. 3 2
      app/src/main/java/com/edufound/reader/activity/payactivity/HuaWeiPayActivity.java
  17. 4 2
      app/src/main/java/com/edufound/reader/activity/payactivity/PayActivity.java
  18. 4 2
      app/src/main/java/com/edufound/reader/activity/payactivity/TmailPayActivity.java
  19. 10 11
      app/src/main/java/com/edufound/reader/adapter/CommentItemAdapter.java
  20. 6 1
      app/src/main/java/com/edufound/reader/adapter/EventPayItemAdapter.java
  21. 8 3
      app/src/main/java/com/edufound/reader/adapter/MessageItemAdapter.java
  22. 5 1
      app/src/main/java/com/edufound/reader/adapter/MyCollectionItemAdapter.java
  23. 7 1
      app/src/main/java/com/edufound/reader/adapter/MyFollowItemAdapter.java
  24. 9 14
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  25. 1 1
      app/src/main/java/com/edufound/reader/application/EApplication.java
  26. 19 3
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  27. 5 3
      app/src/main/java/com/edufound/reader/base/BaseFragment.java
  28. 2 1
      app/src/main/java/com/edufound/reader/contract/CharacterFragmentContract.java
  29. 2 1
      app/src/main/java/com/edufound/reader/contract/HuaWeiPayContract.java
  30. 2 2
      app/src/main/java/com/edufound/reader/contract/MainContract.java
  31. 2 1
      app/src/main/java/com/edufound/reader/contract/MyTabFragmentContract.java
  32. 2 1
      app/src/main/java/com/edufound/reader/contract/OthersRecordContract.java
  33. 2 1
      app/src/main/java/com/edufound/reader/contract/PayContract.java
  34. 2 1
      app/src/main/java/com/edufound/reader/contract/TmailPayContract.java
  35. 12 3
      app/src/main/java/com/edufound/reader/cusview/ModelViewC.java
  36. 2 2
      app/src/main/java/com/edufound/reader/fragment/CharacterFragment.java
  37. 2 3
      app/src/main/java/com/edufound/reader/fragment/CharacterFragment3.java
  38. 2 2
      app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java
  39. 5 4
      app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java
  40. 4 0
      app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenterVersionThree.java
  41. 110 74
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  42. 3 0
      app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java
  43. 2 0
      app/src/main/java/com/edufound/reader/presenter/MyFollowPresenter.java
  44. 54 41
      app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java
  45. 3 0
      app/src/main/java/com/edufound/reader/util/Consts.java

+ 3 - 0
app/build.gradle

@@ -298,6 +298,9 @@ dependencies {
     implementation 'com.huawei.hms:hianalytics:6.9.0.301'
 
 
+    //全局共用一个点击时间
+    implementation 'cc.taylorzhang:single-click:1.1.0'
+
 }
 agcp {
     manifest false

+ 2 - 0
app/src/main/java/com/edufound/reader/activity/CommentActivity.java

@@ -86,6 +86,8 @@ public class CommentActivity extends BaseMvpActivity<CommentPresenter> implement
         mPresenter = new CommentPresenter();
         mPresenter.attachView(this);
         backName = EApplication.mActivityList.get(EApplication.mActivityList.size() - 2).getLocalClassName();
+
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             if (backName.contains("SmallFullVideoActivity")) {
                 mPresenter.sendBackReceiver();

+ 2 - 0
app/src/main/java/com/edufound/reader/activity/CustomerServiceActivity.java

@@ -39,6 +39,8 @@ public class CustomerServiceActivity extends BaseMvpActivity<CustomerServicePres
         mActivity = this;
         mPresenter = new CustomerServicePresenter();
         mPresenter.attachView(this);
+
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });

+ 18 - 21
app/src/main/java/com/edufound/reader/activity/LoginQRAlertActivity.java

@@ -106,30 +106,27 @@ public class LoginQRAlertActivity extends BaseMvpActivity<LoginAlertPresenter> i
                 hideSoftInput(mEditVCode);
             }
         });
-        mPhoneNumTab.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                mQRLayout.setVisibility(View.GONE);
-                mPhoneNumLayout.setVisibility(View.VISIBLE);
-                ((TextView) mPhoneNumTab.getChildAt(0)).setTextColor(Color.parseColor("#FF8400"));
-                mPhoneNumTab.getChildAt(1).setVisibility(View.VISIBLE);
-                ((TextView) mQrCodeTab.getChildAt(0)).setTextColor(Color.parseColor("#333333"));
-                mQrCodeTab.getChildAt(1).setVisibility(View.INVISIBLE);
-            }
+
+        addUiClickListener(mPhoneNumTab, o -> {
+            mQRLayout.setVisibility(View.GONE);
+            mPhoneNumLayout.setVisibility(View.VISIBLE);
+            ((TextView) mPhoneNumTab.getChildAt(0)).setTextColor(Color.parseColor("#FF8400"));
+            mPhoneNumTab.getChildAt(1).setVisibility(View.VISIBLE);
+            ((TextView) mQrCodeTab.getChildAt(0)).setTextColor(Color.parseColor("#333333"));
+            mQrCodeTab.getChildAt(1).setVisibility(View.INVISIBLE);
         });
-        mQrCodeTab.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                mPhoneNumLayout.setVisibility(View.GONE);
-                mQRLayout.setVisibility(View.VISIBLE);
-                ((TextView) mQrCodeTab.getChildAt(0)).setTextColor(Color.parseColor("#FF8400"));
-                mQrCodeTab.getChildAt(1).setVisibility(View.VISIBLE);
-                ((TextView) mPhoneNumTab.getChildAt(0)).setTextColor(Color.parseColor("#333333"));
-                mPhoneNumTab.getChildAt(1).setVisibility(View.INVISIBLE);
-                mPresenter.showLoginQRCode(mQRImg);
 
-            }
+
+        addUiClickListener(mQrCodeTab, o -> {
+            mPhoneNumLayout.setVisibility(View.GONE);
+            mQRLayout.setVisibility(View.VISIBLE);
+            ((TextView) mQrCodeTab.getChildAt(0)).setTextColor(Color.parseColor("#FF8400"));
+            mQrCodeTab.getChildAt(1).setVisibility(View.VISIBLE);
+            ((TextView) mPhoneNumTab.getChildAt(0)).setTextColor(Color.parseColor("#333333"));
+            mPhoneNumTab.getChildAt(1).setVisibility(View.INVISIBLE);
+            mPresenter.showLoginQRCode(mQRImg);
         });
+
         mPhoneNumTab.performClick();
     }
 

+ 6 - 1
app/src/main/java/com/edufound/reader/activity/MainActivity.java

@@ -94,7 +94,7 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         addUiClickListener(mExitApp, o -> {
             PopWindowUtil.showExitAppWindow(getActivity(), getRootView());
         });
-        
+
         mTabLayout.setVisibility(View.GONE);
         mPresenter.userIsLogin();
         mPresenter.checkModelIsDebug();
@@ -253,6 +253,11 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         mTabLayout.setVisibility(View.VISIBLE);
     }
 
+    @Override
+    public RadioGroup getRadioGroup() {
+        return mRadioGroupTab;
+    }
+
 
     @Override
     protected void botHandleIntent(BotIntent intent, String customData) {

+ 2 - 0
app/src/main/java/com/edufound/reader/activity/MessageActivity.java

@@ -49,6 +49,8 @@ public class MessageActivity extends BaseMvpActivity<MessagePresenter> implement
         mActivity = this;
         mPresenter = new MessagePresenter();
         mPresenter.attachView(this);
+
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });

+ 1 - 0
app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java

@@ -46,6 +46,7 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
         mActivity = this;
         mPresenter = new MyCollectionPresenter();
         mPresenter.attachView(this);
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });

+ 1 - 0
app/src/main/java/com/edufound/reader/activity/MyFollowActivity.java

@@ -48,6 +48,7 @@ public class MyFollowActivity extends BaseMvpActivity<MyFollowPresenter> impleme
         mActivity = this;
         mPresenter = new MyFollowPresenter();
         mPresenter.attachView(this);
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });

+ 3 - 2
app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java

@@ -109,6 +109,7 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
         RxView.scrollChangeEvents(mScrollView).subscribe(viewScrollChangeEvent -> {
             loadMoreItem();
         });
+        setBackClick(mBack);
         addUiClick(mBack, o -> {
             if (intoPage.equals("MyFollowActivity")) {
                 Intent i = new Intent();
@@ -162,8 +163,8 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 1 - 0
app/src/main/java/com/edufound/reader/activity/RecordActivity.java

@@ -78,6 +78,7 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
         mPresenter.getReadInfo(getIntent());
         mJzVideoViwe.setCanPause(false);
         mJzVideoViwe.setHideAllUI(true);
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             if (ThroughUtil.mThroughTypeBean != null && ThroughUtil.mThroughTypeBean.getmThroughType().equals(ThroughType.TYPEA.getTypeCode())) {
                 if (mPresenter.getBackModel() == null || mPresenter.getBackModel().equals("") || mPresenter.getBackModel().equals("home")) {

+ 2 - 0
app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java

@@ -73,6 +73,8 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
         mPresenter.attachView(this);
         mMainFrame.setVisibility(View.VISIBLE);
         mWindowFrame.setVisibility(View.INVISIBLE);
+
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });

+ 1 - 0
app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java

@@ -44,6 +44,7 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
         mActivity = this;
         mPresenter = new SmallFullVideoPresenter(getSupportFragmentManager());
         mPresenter.attachView(this);
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             if (ThroughUtil.mThroughTypeBean != null && ThroughUtil.mThroughTypeBean.getmThroughType().equals(ThroughType.TYPEC.getTypeCode())) {
                 String backModel = ThroughUtil.mThroughTypeBean.getBackModel();

+ 20 - 24
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -98,6 +98,8 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
         mActivity = this;
         mPresenter = new UserInfoSettingPresenter();
         mPresenter.attachView(this);
+
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             mNickName.clearFocus();
             hideSoftInput();
@@ -315,35 +317,29 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             }
 
         });
-        mGrade.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    if (mNickName.hasFocus()) {
-                        mNickName.clearFocus();
-                        return;
-                    }
-                    PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
-                        @Override
-                        public void clickCancel() {
+        addUiClickListener(mGenderFeMale, o -> {
+            try {
+                if (mNickName.hasFocus()) {
+                    mNickName.clearFocus();
+                    return;
+                }
+                PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
+                    @Override
+                    public void clickCancel() {
 
-                        }
+                    }
 
-                        @Override
-                        public void clickSubmit(Object object) {
+                    @Override
+                    public void clickSubmit(Object object) {
 //                             Toast.makeText(getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
-                            Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
-                            mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
-                        }
-                    });
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
+                        Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
+                        mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+                    }
+                });
+            } catch (Exception e) {
+                e.printStackTrace();
             }
         });
-//        addUiClickListener(mGrade, o -> {
-//
-//        });
         RxView.focusChanges(mNickName).
 
                 subscribe(hasFocus ->

+ 1 - 0
app/src/main/java/com/edufound/reader/activity/WebActivity.java

@@ -55,6 +55,7 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
         mPresenter.attachView(this);
         mWebView = mPresenter.initWebView(getIntent());
         mWebFrame.addView(mWebView);
+        setBackClick(mBack);
         addUiClickListener(mBack, o -> {
             closeWebActivity();
         });

+ 2 - 0
app/src/main/java/com/edufound/reader/activity/payactivity/EventPayActivity.java

@@ -20,6 +20,7 @@ import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.EventPayContract;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.presenter.EventPayPresenter;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.SizeUtils;
 import com.orhanobut.logger.Logger;
 
@@ -65,6 +66,7 @@ public class EventPayActivity extends BaseMvpActivity<EventPayPresenter> impleme
             }
         }, 100);
 
+
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });

+ 3 - 2
app/src/main/java/com/edufound/reader/activity/payactivity/HuaWeiPayActivity.java

@@ -63,6 +63,7 @@ public class HuaWeiPayActivity extends BaseMvpActivity<HuaWeiPayPresenter> imple
         mPresenter.attachView(this);
         mBgFrame.setBackgroundResource(R.drawable.huawei_pay_bg);
 
+
         addUiClick(mImgBack, o -> {
             mActivity.finish();
         });
@@ -136,8 +137,8 @@ public class HuaWeiPayActivity extends BaseMvpActivity<HuaWeiPayPresenter> imple
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 4 - 2
app/src/main/java/com/edufound/reader/activity/payactivity/PayActivity.java

@@ -57,6 +57,8 @@ public class PayActivity extends BaseMvpActivity<PayPresenter> implements PayCon
         mActivity = this;
         mPresenter = new PayPresenter();
         mPresenter.attachView(this);
+
+
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });
@@ -113,8 +115,8 @@ public class PayActivity extends BaseMvpActivity<PayPresenter> implements PayCon
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 4 - 2
app/src/main/java/com/edufound/reader/activity/payactivity/TmailPayActivity.java

@@ -64,6 +64,8 @@ public class TmailPayActivity extends BaseMvpActivity<TmailPayPresenter> impleme
             BotRegisterListener.payBaiDuVip();
             return;
         }
+
+
         addUiClickListener(mImgBack, o -> {
             mActivity.finish();
         });
@@ -119,8 +121,8 @@ public class TmailPayActivity extends BaseMvpActivity<TmailPayPresenter> impleme
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 10 - 11
app/src/main/java/com/edufound/reader/adapter/CommentItemAdapter.java

@@ -8,23 +8,19 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.bumptech.glide.Glide;
 import com.edufound.reader.R;
 import com.edufound.reader.bean.CommentListReplyBean;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.TimeUtil;
-import com.jakewharton.rxbinding4.view.RxView;
-import com.orhanobut.logger.Logger;
 
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import io.reactivex.rxjava3.core.Observer;
-import io.reactivex.rxjava3.disposables.Disposable;
-import io.reactivex.rxjava3.functions.Consumer;
-import kotlin.Unit;
+import cc.taylorzhang.singleclick.SingleClickUtil;
 
 public class CommentItemAdapter extends RecyclerView.Adapter<CommentItemHolder> {
 
@@ -81,12 +77,15 @@ public class CommentItemAdapter extends RecyclerView.Adapter<CommentItemHolder>
         }
         holder.mThumbNum.setText(mListData.get(position).getLikeCount() != null ? mListData.get(position).getLikeCount() : "0");
         if (mItemClickListener != null) {
-            RxView.clicks(holder.mReCommentLayout).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+            SingleClickUtil.onSingleClick(holder.mReCommentLayout, Consts.VIEW_CLICK_TIME, true, v -> {
+                // 处理单次点击
                 mItemClickListener.clickItemReComment(holder.mReCommentLayout, mListData.get(position).getId(), position);
             });
+
         }
         if (mItemClickListener != null) {
-            RxView.clicks(holder.mThumbLayout).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+            SingleClickUtil.onSingleClick(holder.mThumbLayout, Consts.VIEW_CLICK_TIME, true, v -> {
+                // 处理单次点击
                 mItemClickListener.clickItemThumb(holder.mThumbLayout, mListData.get(position).getId(), position);
             });
         }

+ 6 - 1
app/src/main/java/com/edufound/reader/adapter/EventPayItemAdapter.java

@@ -16,6 +16,7 @@ import com.edufound.reader.R;
 import com.edufound.reader.bean.ActivityEventPayBean;
 import com.edufound.reader.bean.PayResultBean;
 import com.edufound.reader.listener.RecyclerItemClickListener;
+import com.edufound.reader.util.Consts;
 import com.jakewharton.rxbinding4.view.RxView;
 import com.orhanobut.logger.Logger;
 
@@ -23,6 +24,8 @@ import java.text.DecimalFormat;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
+
 public class EventPayItemAdapter extends RecyclerView.Adapter<EventPayItemHolder> {
 
 
@@ -58,7 +61,9 @@ public class EventPayItemAdapter extends RecyclerView.Adapter<EventPayItemHolder
         holder.mRFDetail.setText("抵用券减" + df.format(Double.parseDouble(mListData.get(position).getVoucherAmount()) / 100) + "元  剩余小红花" + mListData.get(position).getRedFlower() + "朵");
         ;
         holder.mTitle.setText(mListData.get(position).getProduct().getTitle());
-        RxView.clicks(holder.itemView).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+
+        SingleClickUtil.onSingleClick(holder.itemView, Consts.VIEW_CLICK_TIME, true, v -> {
+            // 处理单次点击
             if (mItemClickListener != null) {
                 mItemClickListener.onClickListener(position, holder.itemView, mListData.get(position));
             } else {

+ 8 - 3
app/src/main/java/com/edufound/reader/adapter/MessageItemAdapter.java

@@ -10,6 +10,7 @@ import android.widget.TextView;
 import com.edufound.reader.R;
 import com.edufound.reader.bean.MessageBean;
 import com.edufound.reader.listener.RecyclerItemClickListener;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.TimeUtil;
 import com.jakewharton.rxbinding4.view.RxView;
@@ -20,6 +21,8 @@ import java.util.concurrent.TimeUnit;
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
+
 public class MessageItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 
     private LayoutInflater mLayoutInflater;
@@ -60,7 +63,9 @@ public class MessageItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
         ((MessageItemHolder) holder).mItemTime.setText(TimeUtil.timeStamp2Date(Long.valueOf(mListData.get(position).getGmtCreated()), "yyyy年MM月dd日 HH:mm"));
         if (mListData.get(position).getContent().length() > 50 && ((MessageItemHolder) holder).isShowALl == false) {
             ((MessageItemHolder) holder).mItemContent.setText(mListData.get(position).getContent().substring(0, 50) + "...");
-            RxView.clicks(((MessageItemHolder) holder).mItemLoadAll).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+            SingleClickUtil.onSingleClick(((MessageItemHolder) holder).mItemLoadAll, Consts.VIEW_CLICK_TIME, true, v -> {
+                // 处理单次点击
+                // 处理单次点击
                 ((MessageItemHolder) holder).mItemContent.setText("");
                 ((MessageItemHolder) holder).mItemContent.setText(mListData.get(position).getContent());
                 ((MessageItemHolder) holder).mItemLoadAll.setVisibility(View.INVISIBLE);
@@ -78,8 +83,8 @@ public class MessageItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
         if (mListData.get(position).getStatus().equals("DISABLE")) {
             ((MessageItemHolder) holder).mItemIsNew.setVisibility(View.INVISIBLE);
         } else {
-            RxView.clicks(((MessageItemHolder) holder).itemView).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
-                //已读操作
+            SingleClickUtil.onSingleClick(((MessageItemHolder) holder).itemView, Consts.VIEW_CLICK_TIME, true, v -> {
+                // 处理单次点击
                 if (mItemClick != null) {
                     mItemClick.onClickListener(position, holder.itemView, mListData.get(position));
                 }

+ 5 - 1
app/src/main/java/com/edufound/reader/adapter/MyCollectionItemAdapter.java

@@ -11,6 +11,7 @@ import android.widget.TextView;
 import com.edufound.reader.R;
 import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.listener.RecyclerItemClickListener;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.SizeUtils;
@@ -21,6 +22,8 @@ import java.util.concurrent.TimeUnit;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
+
+import cc.taylorzhang.singleclick.SingleClickUtil;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import kotlin.Unit;
@@ -85,7 +88,8 @@ public class MyCollectionItemAdapter extends RecyclerView.Adapter<RecyclerView.V
         ((MyCollectionItemHolder) holder).mThumbNum.setText(EfunboxUtil.checkNum10000(String.valueOf(mListData.get(position).getUserRead().getLikeAmount())));
         ((MyCollectionItemHolder) holder).mStartNum.setText(EfunboxUtil.checkNum10000(String.valueOf(mListData.get(position).getUserRead().getFavoritesAmount())));
         if (mRecyclerItemClickListener != null) {
-            RxView.clicks(((MyCollectionItemHolder) holder).mItemView).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+            SingleClickUtil.onSingleClick(((MyCollectionItemHolder) holder).mItemView, Consts.VIEW_CLICK_TIME, true, v -> {
+                // 处理单次点击
                 mRecyclerItemClickListener.onClickListener(position, ((MyCollectionItemHolder) holder).mItemView, null);
             });
         }

+ 7 - 1
app/src/main/java/com/edufound/reader/adapter/MyFollowItemAdapter.java

@@ -14,6 +14,7 @@ import com.edufound.reader.R;
 import com.edufound.reader.activity.OthersRecordActivity;
 import com.edufound.reader.bean.MyFollowBean;
 import com.edufound.reader.listener.RecyclerItemClickListener;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.TimeUtil;
@@ -24,6 +25,8 @@ import java.util.concurrent.TimeUnit;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
+
+import cc.taylorzhang.singleclick.SingleClickUtil;
 import io.reactivex.rxjava3.core.Observer;
 import io.reactivex.rxjava3.disposables.Disposable;
 import kotlin.Unit;
@@ -122,9 +125,12 @@ public class MyFollowItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
             ((MyFollowItemHolder) holder).mCommentNum.setText(EfunboxUtil.checkNum10000(String.valueOf(mListData.get(position - mHeaderCount).getUserInfo().getCommentAmount())));
             ((MyFollowItemHolder) holder).mStarNum.setText(EfunboxUtil.checkNum10000(String.valueOf(mListData.get(position - mHeaderCount).getUserInfo().getFavoritesAmount())));
             if (mRecyclerItemClickListener != null) {
-                RxView.clicks(((MyFollowItemHolder) holder).mItemView).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+
+                SingleClickUtil.onSingleClick(((MyFollowItemHolder) holder).mItemView, Consts.VIEW_CLICK_TIME, true, v -> {
+                    // 处理单次点击
                     mRecyclerItemClickListener.onClickListener(position, ((MyFollowItemHolder) holder).mItemView, null);
                 });
+
             }
         } else if (holder instanceof MyCollectionBottomViewHolder) {
 

+ 9 - 14
app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java

@@ -43,6 +43,7 @@ import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.RecyclerView;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
 import cn.jzvd.JZDataSource;
 import cn.jzvd.JzvdStd;
 
@@ -114,25 +115,19 @@ public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
                 case 2:
                     //抵用券,加载webview
                     holder.mEventFrame.setVisibility(View.VISIBLE);
-                    holder.mEventFrame.setOnClickListener(new View.OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            Logger.e("mListData.get(position).getUserRead().getActivityId():" + mListData.get(position).getUserRead().getActivityId());
-                            EfunboxUtil.toWebFlowerActivity(mContext, mListData.get(position).getUserRead().getActivityUrl(), mListData.get(position).getUserRead().getActivityId());
-                        }
+                    SingleClickUtil.onSingleClick(holder.mEventFrame, Consts.VIEW_CLICK_TIME, true, v -> {
+                        // 处理单次点击
+                        EfunboxUtil.toWebFlowerActivity(mContext, mListData.get(position).getUserRead().getActivityUrl(), mListData.get(position).getUserRead().getActivityId());
                     });
                     break;
                 case 3:
                     //优秀作品或者是竞赛,跳转活动tab并且定位
                     holder.mEventFrame.setVisibility(View.VISIBLE);
-                    holder.mEventFrame.setOnClickListener(new View.OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            Logger.e("mListData.get(position).getUserRead().getActivityType():" + mListData.get(position).getUserRead().getActivityType());
-                            Consts.setEventPosition(Integer.valueOf(mListData.get(position).getUserRead().getActivityNumber()));
-                            Intent intent = new Intent("com.edufound.reader.main.setindex");
-                            mContext.sendBroadcast(intent);
-                        }
+
+                    SingleClickUtil.onSingleClick(holder.mEventFrame, Consts.VIEW_CLICK_TIME, true, v -> {
+                        Consts.setEventPosition(Integer.valueOf(mListData.get(position).getUserRead().getActivityNumber()));
+                        Intent intent = new Intent("com.edufound.reader.main.setindex");
+                        mContext.sendBroadcast(intent);
                     });
 
 

+ 1 - 1
app/src/main/java/com/edufound/reader/application/EApplication.java

@@ -63,7 +63,7 @@ public class EApplication extends Application {
             Consts.setmApplicAtion(this);
 
             //初始化异常监听
-            initException();
+//            initException();
 
             XmlPullParserFactory.newInstance().setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
 

+ 19 - 3
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -84,6 +84,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
 import io.reactivex.rxjava3.annotations.Nullable;
 import io.reactivex.rxjava3.disposables.CompositeDisposable;
 import io.reactivex.rxjava3.disposables.Disposable;
@@ -270,9 +271,10 @@ public abstract class BaseActivity extends AppCompatActivity {
         }
     }
 
-    @SuppressLint("AutoDispose")
-    public void addUiClickListener(View view, Consumer onNext) {
-        addDisposable(RxView.clicks(view).throttleFirst(2, TimeUnit.SECONDS).subscribe(onNext));
+
+    public void addUiClickListener(View view, View.OnClickListener listener) {
+        //isShareSingleClick为true,表示共用时间.为false表示单独计时
+        SingleClickUtil.onSingleClick(view, Consts.VIEW_CLICK_TIME, true, listener);
     }
 
     public abstract void onGetDisconnect();
@@ -1006,5 +1008,19 @@ public abstract class BaseActivity extends AppCompatActivity {
             getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
         }
     }
+
+
+    //设置每个界面返回按钮稍等才可用
+    public void setBackClick(View view) {
+        view.setClickable(false);
+        view.setEnabled(false);
+        view.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                view.setClickable(true);
+                view.setEnabled(true);
+            }
+        }, Consts.VIEW_CLICK_TIME);
+    }
 }
 

+ 5 - 3
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -44,6 +44,7 @@ import java.util.concurrent.TimeUnit;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
 import io.reactivex.rxjava3.annotations.Nullable;
 import io.reactivex.rxjava3.disposables.CompositeDisposable;
 import io.reactivex.rxjava3.disposables.Disposable;
@@ -133,9 +134,10 @@ public abstract class BaseFragment extends Fragment {
         super.onDestroy();
     }
 
-    @SuppressLint("AutoDispose")
-    public void addUiClickListener(View view, Consumer onNext) {
-        addDisposable(RxView.clicks(view).throttleFirst(2, TimeUnit.SECONDS).subscribe(onNext));
+
+    public void addUiClickListener(View view, View.OnClickListener listener) {
+        //isShareSingleClick为true,表示共用时间.为false表示单独计时
+        SingleClickUtil.onSingleClick(view, Consts.VIEW_CLICK_TIME, true, listener);
     }
 
     public abstract void onGetDisconnect();

+ 2 - 1
app/src/main/java/com/edufound/reader/contract/CharacterFragmentContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.app.Activity;
+import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.GridLayout;
 import android.widget.HorizontalScrollView;
@@ -21,7 +22,7 @@ public interface CharacterFragmentContract {
     }
 
     interface View extends BaseView {
-        void addUiClick(android.view.View view, Consumer onNext);
+        void addUiClick(android.view.View view, android.view.View.OnClickListener listener);
 
         void getExampleAllSuccess();
 

+ 2 - 1
app/src/main/java/com/edufound/reader/contract/HuaWeiPayContract.java

@@ -2,6 +2,7 @@ package com.edufound.reader.contract;
 
 import android.app.Activity;
 import android.content.Intent;
+import android.view.View;
 import android.widget.LinearLayout;
 
 import com.edufound.reader.base.BaseView;
@@ -19,7 +20,7 @@ public interface HuaWeiPayContract {
     interface View extends BaseView {
         void getProductSuccess();
 
-        void addUiClick(android.view.View view, Consumer onNext);
+        void addUiClick(android.view.View view, android.view.View.OnClickListener listener);
     }
 
     interface Presenter {

+ 2 - 2
app/src/main/java/com/edufound/reader/contract/MainContract.java

@@ -22,7 +22,7 @@ public interface MainContract {
 
         void setCheckIndex();
 
-
+        RadioGroup getRadioGroup();
     }
 
     interface Presenter {
@@ -49,6 +49,6 @@ public interface MainContract {
         void refMyFragment();
 
         void resumeFragment();
-        
+
     }
 }

+ 2 - 1
app/src/main/java/com/edufound/reader/contract/MyTabFragmentContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.app.Activity;
+import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.GridLayout;
 
@@ -25,7 +26,7 @@ public interface MyTabFragmentContract {
     }
 
     interface View extends BaseView {
-        void addUiClick(android.view.View view, Consumer onNext);
+        void addUiClick(android.view.View view, android.view.View.OnClickListener listener);
 
         void setUserInfo(MyInfoBean bean);
 

+ 2 - 1
app/src/main/java/com/edufound/reader/contract/OthersRecordContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.app.Activity;
+import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.GridLayout;
 
@@ -22,7 +23,7 @@ public interface OthersRecordContract {
 
     interface View extends BaseView {
 
-        void addUiClick(android.view.View view, Consumer onNext);
+        void addUiClick(android.view.View view, android.view.View.OnClickListener listener);
 
         void loadMoreItem();
 

+ 2 - 1
app/src/main/java/com/edufound/reader/contract/PayContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.app.Activity;
+import android.view.View;
 import android.widget.LinearLayout;
 
 import com.edufound.reader.base.BaseView;
@@ -18,7 +19,7 @@ public interface PayContract {
     interface View extends BaseView {
         void getProductSuccess();
 
-        void addUiClick(android.view.View view, Consumer onNext);
+        void addUiClick(android.view.View view, android.view.View.OnClickListener listener);
 
         void isPaySuccess();
 

+ 2 - 1
app/src/main/java/com/edufound/reader/contract/TmailPayContract.java

@@ -2,6 +2,7 @@ package com.edufound.reader.contract;
 
 import android.app.Activity;
 import android.content.Intent;
+import android.view.View;
 import android.widget.LinearLayout;
 
 import com.edufound.reader.base.BaseView;
@@ -23,7 +24,7 @@ public interface TmailPayContract {
     interface View extends BaseView {
         void getProductSuccess();
 
-        void addUiClick(android.view.View view, Consumer onNext);
+        void addUiClick(android.view.View view, android.view.View.OnClickListener listener);
 
         void isPaySuccess();
 

+ 12 - 3
app/src/main/java/com/edufound/reader/cusview/ModelViewC.java

@@ -21,6 +21,7 @@ import androidx.recyclerview.widget.RecyclerView;
 import com.edufound.reader.R;
 import com.edufound.reader.bean.ModelBean;
 import com.edufound.reader.bean.UserRecordBean;
+import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.SizeUtils;
@@ -29,6 +30,8 @@ import com.jakewharton.rxbinding4.view.RxView;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
+
 
 /**
  * 上面一个课程,下面一个list展示所有读过课程的用户
@@ -104,12 +107,16 @@ public class ModelViewC extends FrameLayout {
         mThumbNum.setText(EfunboxUtil.checkNum10000(bean.getReadUserList().get(0).getExample().getLikeAmount()));
         mStartNum.setText(EfunboxUtil.checkNum10000(bean.getReadUserList().get(0).getExample().getFavoritesAmount()));
 
-        RxView.clicks(mCourseLayout).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+
+        SingleClickUtil.onSingleClick(mCourseLayout, Consts.VIEW_CLICK_TIME, true, v -> {
+            // 处理单次点击
             mItemClickListener.clickExample(bean);
         });
-        RxView.clicks(mshowRule).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+        SingleClickUtil.onSingleClick(mshowRule, Consts.VIEW_CLICK_TIME, true, v -> {
+            // 处理单次点击
             mItemClickListener.clickRule(bean);
         });
+
         if (!TextUtils.isEmpty(bgurl)) {
             GlideUtils.loadImageSizeKipMemoryCache(mContext, bgurl, mBackgroundImg);
         } else {
@@ -172,7 +179,9 @@ public class ModelViewC extends FrameLayout {
             }
             holder.mScore.setText(mListData.get(position).getUserRead().getScore() + "分");
             if (mItemClickListener != null) {
-                RxView.clicks(holder.itemView).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+
+                SingleClickUtil.onSingleClick(holder.itemView, Consts.VIEW_CLICK_TIME, true, v -> {
+                    // 处理单次点击
                     mItemClickListener.clickItem(holder.itemView, position, mListData.get(position));
                 });
             }

+ 2 - 2
app/src/main/java/com/edufound/reader/fragment/CharacterFragment.java

@@ -120,8 +120,8 @@ public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresente
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 2 - 3
app/src/main/java/com/edufound/reader/fragment/CharacterFragment3.java

@@ -121,15 +121,14 @@ public class CharacterFragment3 extends BaseMvpFragment<CharacterFragmentPresent
     }
 
 
-
     @Override
     public ViewGroup getRootView() {
         return (ViewGroup) mRootView;
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 2 - 2
app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java

@@ -221,8 +221,8 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
     }
 
     @Override
-    public void addUiClick(View view, Consumer onNext) {
-        addUiClickListener(view, onNext);
+    public void addUiClick(View view, View.OnClickListener listener) {
+        addUiClickListener(view, listener);
     }
 
     @Override

+ 5 - 4
app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java

@@ -55,6 +55,7 @@ import java.util.concurrent.TimeUnit;
 import androidx.annotation.Nullable;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
+import cc.taylorzhang.singleclick.SingleClickUtil;
 import io.reactivex.rxjava3.functions.Consumer;
 
 public class PopWindowUtil {
@@ -292,7 +293,7 @@ public class PopWindowUtil {
         mPresenter.initRecordStatusWindow(context, record_view, bean, userread, listener);
         recordPopupWindow = new PopupWindow(record_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         recordPopupWindow.setFocusable(false);
-        mPopupWindow.setClippingEnabled(false);
+        recordPopupWindow.setClippingEnabled(false);
         recordPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
         hideBottomUIMenuForPopupWindow(recordPopupWindow);
         recordPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@@ -409,7 +410,7 @@ public class PopWindowUtil {
         });
         eventPopupWindow = new PopupWindow(dialog_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         eventPopupWindow.setFocusable(true);
-        mPopupWindow.setClippingEnabled(false);
+        eventPopupWindow.setClippingEnabled(false);
         eventPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
         hideBottomUIMenuForPopupWindow(eventPopupWindow);
         eventPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@@ -645,8 +646,8 @@ public class PopWindowUtil {
     }
 
 
-    private static void setClickListener(View view, Consumer onNext) {
-        RxView.clicks(view).throttleFirst(2, TimeUnit.SECONDS).subscribe(onNext);
+    private static void setClickListener(View view, View.OnClickListener listener) {
+        SingleClickUtil.onSingleClick(view, Consts.VIEW_CLICK_TIME, true, listener);
     }
 
     private static void newPopupWindow(View parent, boolean nedFocus) {

+ 4 - 0
app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenterVersionThree.java

@@ -3,6 +3,7 @@ package com.edufound.reader.presenter;
 import android.content.Context;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -289,6 +290,9 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
                                     mRecommendFragment.setChangeCharacterListener(new RecommendFragment.ChangeCharacterListener() {
                                         @Override
                                         public void changeDataList(UserRecordBean list) {
+                                            if (TextUtils.isEmpty(list.getUserRead().getReadAmount())) {
+                                                list.getUserRead().setReadAmount(ttt.readMount);
+                                            }
                                             mRecommendFragment.setTopStatus(list);
                                         }
                                     });

+ 110 - 74
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -2,6 +2,8 @@ package com.edufound.reader.presenter;
 
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
+import android.os.Handler;
+import android.os.Message;
 import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.View;
@@ -54,6 +56,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
+import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
@@ -71,6 +74,9 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
     CharacterFragment3 mCharacterFragment;
     int mRadioCheckIndex = -1;
 
+    boolean pauseChange = false;
+    final int PAUSE_CHANGE = 0x22321;
+
     public MainPresenter(FragmentManager fragmentManager) {
         mModel = new MainModel();
         mUserApi = new UserApiServerImpl();
@@ -84,90 +90,104 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
 
     @Override
     public void onRadioChecked(RadioGroup radioGroup, int id) {
-        ((BaseActivity) mView.getActivity()).removeFirstTipView();
-        switch (id) {
-            case R.id.main_left_tab_layout_myinfo:
-                //我的
-                if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
-                    mRadioCheckIndex = 0;
+
+        if (pauseChange) {
+            return;
+        } else {
+            ((BaseActivity) mView.getActivity()).removeFirstTipView();
+            switch (id) {
+                case R.id.main_left_tab_layout_myinfo:
+                    //我的
+                    if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
+                        mRadioCheckIndex = 0;
+                        mRecommendFragment = null;
+                        mEventFragment = null;
+                        mFollowFragment = null;
+                        mCharacterFragment = null;
+                        if (mUserFragment == null) {
+                            mUserFragment = new MyTabFragment();
+                        }
+                        changeFragmentLayout(mUserFragment);
+                        mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
+                    } else {
+                        if (radioGroup != null) {
+                            if (radioGroup.getChildAt(mRadioCheckIndex) != null) {
+                                ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                            }
+                        }
+                    }
+                    break;
+
+                case R.id.main_left_tab_layout_event:
+                    //活动
+                    mRadioCheckIndex = 1;
                     mRecommendFragment = null;
-                    mEventFragment = null;
+                    mUserFragment = null;
                     mFollowFragment = null;
                     mCharacterFragment = null;
-                    if (mUserFragment == null) {
-                        mUserFragment = new MyTabFragment();
+                    if (mEventFragment == null) {
+                        mEventFragment = new EventFragment();
                     }
-                    changeFragmentLayout(mUserFragment);
-                    mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
-                } else {
-                    if (radioGroup != null) {
-                        if (radioGroup.getChildAt(mRadioCheckIndex) != null) {
-                            ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
-                        }
-                    }
-                }
-                break;
-
-            case R.id.main_left_tab_layout_event:
-                //活动
-                mRadioCheckIndex = 1;
-                mRecommendFragment = null;
-                mUserFragment = null;
-                mFollowFragment = null;
-                mCharacterFragment = null;
-                if (mEventFragment == null) {
-                    mEventFragment = new EventFragment();
-                }
-                changeFragmentLayout(mEventFragment);
-                mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_EVENT.getEvent());
-                break;
-            case R.id.main_left_tab_layout_recommend:
-                //推荐
-                mRadioCheckIndex = 2;
+                    changeFragmentLayout(mEventFragment);
+                    mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_EVENT.getEvent());
+                    break;
+                case R.id.main_left_tab_layout_recommend:
+                    //推荐
+                    mRadioCheckIndex = 2;
 //                ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
-                mUserFragment = null;
-                mFollowFragment = null;
-                mEventFragment = null;
-                mCharacterFragment = null;
-                if (mRecommendFragment == null) {
-                    mRecommendFragment = new RecommendFragment(0);
-                }
-                changeFragmentLayout(mRecommendFragment);
-                mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RECOMMEND.getEvent());
-                break;
-            case R.id.main_left_tab_layout_follow:
-                //关注
-                if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
-                    mRadioCheckIndex = 3;
                     mUserFragment = null;
-                    mCharacterFragment = null;
+                    mFollowFragment = null;
                     mEventFragment = null;
-                    mRecommendFragment = null;
-                    if (mFollowFragment == null) {
-                        mFollowFragment = new RecommendFragment(1);
+                    mCharacterFragment = null;
+                    if (mRecommendFragment == null) {
+                        mRecommendFragment = new RecommendFragment(0);
                     }
-                    changeFragmentLayout(mFollowFragment);
-                    mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_SUBSCRIBE.getEvent());
-                } else {
+                    changeFragmentLayout(mRecommendFragment);
+                    mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RECOMMEND.getEvent());
+                    break;
+                case R.id.main_left_tab_layout_follow:
+                    //关注
+                    if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
+                        mRadioCheckIndex = 3;
+                        mUserFragment = null;
+                        mCharacterFragment = null;
+                        mEventFragment = null;
+                        mRecommendFragment = null;
+                        if (mFollowFragment == null) {
+                            mFollowFragment = new RecommendFragment(1);
+                        }
+                        changeFragmentLayout(mFollowFragment);
+                        mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_SUBSCRIBE.getEvent());
+                    } else {
+                        ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                    }
+                    break;
+                case R.id.main_left_tab_layout_character:
+                    //任务
+                    Logger.e("任务");
+                    mRadioCheckIndex = 4;
                     ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
-                }
-                break;
-            case R.id.main_left_tab_layout_character:
-                //任务
-                Logger.e("任务");
-                mRadioCheckIndex = 4;
-                ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
-                mUserFragment = null;
-                mFollowFragment = null;
-                mRecommendFragment = null;
-                mEventFragment = null;
-                if (mCharacterFragment == null) {
-                    mCharacterFragment = new CharacterFragment3();
-                }
-                changeFragmentLayout(mCharacterFragment);
-                mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RESOURCES.getEvent());
-                break;
+                    mUserFragment = null;
+                    mFollowFragment = null;
+                    mRecommendFragment = null;
+                    mEventFragment = null;
+                    if (mCharacterFragment == null) {
+                        mCharacterFragment = new CharacterFragment3();
+                    }
+                    changeFragmentLayout(mCharacterFragment);
+                    mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RESOURCES.getEvent());
+                    break;
+            }
+
+            for (int i = 0; i < radioGroup.getChildCount(); i++) {
+                radioGroup.getChildAt(i).setClickable(false);
+            }
+            pauseChange = true;
+            mRadioChangeHandler.sendEmptyMessageDelayed(PAUSE_CHANGE, Consts.VIEW_CLICK_TIME);
+
         }
+
+
     }
 
 
@@ -517,4 +537,20 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
         return false;
     }
 
+
+    Handler mRadioChangeHandler = new Handler(new Handler.Callback() {
+        @Override
+        public boolean handleMessage(@NonNull Message msg) {
+            switch (msg.what) {
+                case PAUSE_CHANGE:
+                    mRadioChangeHandler.removeMessages(PAUSE_CHANGE);
+                    pauseChange = false;
+                    for (int i = 0; i < mView.getRadioGroup().getChildCount(); i++) {
+                        mView.getRadioGroup().getChildAt(i).setClickable(true);
+                    }
+                    break;
+            }
+            return false;
+        }
+    });
 }

+ 3 - 0
app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java

@@ -88,6 +88,9 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
             }
         });
 
+
+
+
         myCollectionItemAdapter.setOnItemClickListener(new RecyclerItemClickListener() {
             @Override
             public void onClickListener(int position, View view, Object object) {

+ 2 - 0
app/src/main/java/com/edufound/reader/presenter/MyFollowPresenter.java

@@ -33,6 +33,7 @@ import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
+
 import io.reactivex.rxjava3.annotations.NonNull;
 
 public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> implements MyFollowContract.Presenter {
@@ -89,6 +90,7 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
         myFollowItemAdapter.setOnItemClickListener(new RecyclerItemClickListener() {
             @Override
             public void onClickListener(int position, View view, Object object) {
+                Logger.e("进来这里了");
                 toNextPosition = position;
                 Bundle bundle = new Bundle();
                 bundle.putString("intoPage", "MyFollowActivity");

+ 54 - 41
app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java

@@ -38,7 +38,6 @@ import com.edufound.reader.bean.UserEventEnum;
 import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.cusview.CusToast;
 import com.edufound.reader.listener.PopupRecordStatusListener;
-import com.edufound.reader.util.miutil.MiSoundSDKUtil;
 import com.edufound.reader.model.PopWindowModelImpl;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.util.Consts;
@@ -48,6 +47,7 @@ import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.OkHttpClient;
 import com.edufound.reader.util.QRCodeUtil;
 import com.edufound.reader.util.SizeUtils;
+import com.edufound.reader.util.miutil.MiSoundSDKUtil;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.jakewharton.rxbinding4.view.RxView;
@@ -63,7 +63,8 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
+
+import cc.taylorzhang.singleclick.SingleClickUtil;
 
 public class PopWindowPresneter {
 
@@ -246,14 +247,12 @@ public class PopWindowPresneter {
                                             Logger.e("请求评测成功:" + info.getRetDetail());
                                             mUploadingSuccessFrame.setVisibility(View.VISIBLE);
                                             FrameLayout toLisMySelf = mUploadingSuccessFrame.findViewById(R.id.popup_record_status_upload_success_btn);
-                                            toLisMySelf.setOnClickListener(new View.OnClickListener() {
-                                                @Override
-                                                public void onClick(View view) {
-                                                    PopWindowUtil.hidePopupWindow();
+                                            addUIClick(toLisMySelf, v -> {
+                                                PopWindowUtil.hidePopupWindow();
 //                                                    Toast.makeText(context, "去听听(首页->我的tab)", Toast.LENGTH_SHORT).show();
-                                                    EApplication.reloadApp(0);
-                                                }
+                                                EApplication.reloadApp(0);
                                             });
+
                                         }
 
                                         @Override
@@ -266,6 +265,24 @@ public class PopWindowPresneter {
                                 @Override
                                 public void onFailure(HttpInfo info) throws IOException {
                                     Logger.e("发布朗读失败了:" + info.getRetDetail());
+                                    //失败逻辑
+                                    {
+                                        mUploadingErrorFrame.setVisibility(View.VISIBLE);
+                                        FrameLayout mCancelUpload = mUploadingErrorFrame.findViewById(R.id.popupwindow_record_status_uploading_error_cancel_upload);
+                                        FrameLayout mReUpload = mUploadingErrorFrame.findViewById(R.id.popupwindow_record_status_uploading_error_re_upload);
+                                        addUIClick(mCancelUpload, v -> {
+                                            PopWindowUtil.hidePopupWindow();
+                                        });
+
+                                        addUIClick(mReUpload, v -> {
+                                            PopWindowUtil.hidePopupWindow();
+                                            Logger.e("重新上传");
+                                            mUploadingErrorFrame.setVisibility(View.GONE);
+                                            mUploadingFrame.setVisibility(View.VISIBLE);
+                                            userApi.postUserEvent(activity, UserEventEnum.EVENT_UPLOAD.getEvent());
+                                            mModel.upLoadRecord(activity, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
+                                        });
+                                    }
                                 }
                             });
 
@@ -276,23 +293,17 @@ public class PopWindowPresneter {
                             mUploadingErrorFrame.setVisibility(View.VISIBLE);
                             FrameLayout mCancelUpload = mUploadingErrorFrame.findViewById(R.id.popupwindow_record_status_uploading_error_cancel_upload);
                             FrameLayout mReUpload = mUploadingErrorFrame.findViewById(R.id.popupwindow_record_status_uploading_error_re_upload);
-                            mCancelUpload.setOnClickListener(new View.OnClickListener() {
-                                @Override
-                                public void onClick(View view) {
-                                    PopWindowUtil.hidePopupWindow();
-
-                                }
+                            addUIClick(mCancelUpload, v -> {
+                                PopWindowUtil.hidePopupWindow();
                             });
-                            mReUpload.setOnClickListener(new View.OnClickListener() {
-                                @Override
-                                public void onClick(View view) {
-//                                    Toast.makeText(context, "重新上传", Toast.LENGTH_SHORT).show();
-                                    Logger.e("重新上传");
-                                    mUploadingErrorFrame.setVisibility(View.GONE);
-                                    mUploadingFrame.setVisibility(View.VISIBLE);
-                                    userApi.postUserEvent(activity, UserEventEnum.EVENT_UPLOAD.getEvent());
-                                    mModel.upLoadRecord(activity, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
-                                }
+
+                            addUIClick(mReUpload, v -> {
+                                PopWindowUtil.hidePopupWindow();
+                                Logger.e("重新上传");
+                                mUploadingErrorFrame.setVisibility(View.GONE);
+                                mUploadingFrame.setVisibility(View.VISIBLE);
+                                userApi.postUserEvent(activity, UserEventEnum.EVENT_UPLOAD.getEvent());
+                                mModel.upLoadRecord(activity, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
                             });
                         }
                     }
@@ -308,23 +319,18 @@ public class PopWindowPresneter {
                     super.onProgressMain(percent, bytesWritten, contentLength, done);
                 }
             };
-            mUpload.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-                    //上传录音
-                    mOverFrame.setVisibility(View.GONE);
-                    mUploadingFrame.setVisibility(View.VISIBLE);
-                    userApi.postUserEvent(activity, UserEventEnum.EVENT_UPLOAD.getEvent());
-                    mModel.upLoadRecord(activity, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
 
-                }
+            SingleClickUtil.onSingleClick(mUpload, Consts.VIEW_CLICK_TIME, false, v -> {
+                // 处理单次点击
+                mOverFrame.setVisibility(View.GONE);
+                mUploadingFrame.setVisibility(View.VISIBLE);
+                userApi.postUserEvent(activity, UserEventEnum.EVENT_UPLOAD.getEvent());
+                mModel.upLoadRecord(activity, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
             });
-            mRePlay.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-                    listener.clickReRecord();
 
-                }
+            SingleClickUtil.onSingleClick(mRePlay, Consts.VIEW_CLICK_TIME, false, v -> {
+                // 处理单次点击
+                listener.clickReRecord();
             });
         }
 
@@ -539,7 +545,8 @@ public class PopWindowPresneter {
                     }
                 });
                 //获取验证码
-                RxView.clicks(getVCodeTimeText).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+                addUIClick(getVCodeTimeText, v -> {
+                    // 处理单次点击
                     String mobile = bindPhoneNumEdit.getText().toString().trim();
                     if (!EfunboxUtil.isMobileNO(mobile)) {
                         //弹不出来
@@ -572,7 +579,8 @@ public class PopWindowPresneter {
 
                 });
                 //提交绑定手机号
-                RxView.clicks(mBindSubmit).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
+                addUIClick(mBindSubmit, v -> {
+                    // 处理单次点击
                     String mobile = bindPhoneNumEdit.getText().toString().trim();
                     if (!EfunboxUtil.isMobileNO(mobile)) {
 //                        CusToast.getInstance(context).show("请输入正确的手机号", 1000);
@@ -610,7 +618,6 @@ public class PopWindowPresneter {
                             mErrorText.setVisibility(View.VISIBLE);
                         }
                     });
-
                 });
             }
             break;
@@ -781,6 +788,10 @@ public class PopWindowPresneter {
 
         void closeWindow();
     }
+
+    public static void addUIClick(View view, View.OnClickListener listener) {
+        SingleClickUtil.onSingleClick(view, Consts.VIEW_CLICK_TIME, true, listener);
+    }
 }
 
 class OrderSpacesItemDecoration extends RecyclerView.ItemDecoration {
@@ -807,6 +818,8 @@ class OrderSpacesItemDecoration extends RecyclerView.ItemDecoration {
             outRect.bottom = space * 10;
         }
     }
+
+
 }
 
 

+ 3 - 0
app/src/main/java/com/edufound/reader/util/Consts.java

@@ -58,6 +58,9 @@ public class Consts {
     public static int eventPosition = 0;
 
 
+    public static int VIEW_CLICK_TIME = 1000;
+
+
     public static boolean isIsHaveFlowerEvent() {
         return isHaveFlowerEvent;
     }