Преглед на файлове

1.我的界面->用户头像
2.用户设置界面->用户头像
3.朗读界面->朗读->测评->上传->发布->回我的界面查看
4.各地方跳转到小窗播放时数据过大导致的崩溃问题

FailedToRead преди 3 години
родител
ревизия
81afdda979
променени са 61 файла, в които са добавени 1407 реда и са изтрити 225 реда
  1. 5 5
      .idea/misc.xml
  2. 12 6
      app/src/main/AndroidManifest.xml
  3. 1 0
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  4. 11 0
      app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java
  5. 28 0
      app/src/main/java/com/edufound/reader/activity/MyFollowActivity.java
  6. 21 1
      app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java
  7. 23 4
      app/src/main/java/com/edufound/reader/activity/RecordActivity.java
  8. 13 2
      app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java
  9. 17 3
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  10. 140 0
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  11. 6 0
      app/src/main/java/com/edufound/reader/adapter/MyCollectionItemAdapter.java
  12. 7 1
      app/src/main/java/com/edufound/reader/adapter/MyFollowItemAdapter.java
  13. 0 2
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  14. 8 0
      app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java
  15. 16 0
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  16. 2 2
      app/src/main/java/com/edufound/reader/bean/UserRecordBean.java
  17. 5 1
      app/src/main/java/com/edufound/reader/contract/CharacterFragmentContract.java
  18. 5 0
      app/src/main/java/com/edufound/reader/contract/MyCollectionContract.java
  19. 7 0
      app/src/main/java/com/edufound/reader/contract/MyFollowContract.java
  20. 2 0
      app/src/main/java/com/edufound/reader/contract/OthersRecordContract.java
  21. 11 1
      app/src/main/java/com/edufound/reader/contract/RecommendFragmentContract.java
  22. 25 5
      app/src/main/java/com/edufound/reader/contract/RecordContract.java
  23. 5 1
      app/src/main/java/com/edufound/reader/contract/SafflowerContract.java
  24. 1 1
      app/src/main/java/com/edufound/reader/contract/SmallFullVideoContract.java
  25. 29 0
      app/src/main/java/com/edufound/reader/contract/UserInfoSettingContract.java
  26. 11 1
      app/src/main/java/com/edufound/reader/cusview/RvListJzvdStd.java
  27. 12 1
      app/src/main/java/com/edufound/reader/fragment/CharacterFragment.java
  28. 16 2
      app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java
  29. 30 15
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  30. 9 0
      app/src/main/java/com/edufound/reader/model/CharacterFragmentModel.java
  31. 1 0
      app/src/main/java/com/edufound/reader/model/MyFollowModel.java
  32. 32 0
      app/src/main/java/com/edufound/reader/model/PopWindowModelImpl.java
  33. 9 0
      app/src/main/java/com/edufound/reader/model/RecommendFragmentModel.java
  34. 11 4
      app/src/main/java/com/edufound/reader/model/RecordModel.java
  35. 22 0
      app/src/main/java/com/edufound/reader/model/UserInfoSettingModel.java
  36. 4 2
      app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java
  37. 56 10
      app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenter.java
  38. 56 2
      app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java
  39. 40 5
      app/src/main/java/com/edufound/reader/presenter/MyFollowPresenter.java
  40. 24 4
      app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java
  41. 20 7
      app/src/main/java/com/edufound/reader/presenter/OthersRecordPresenter.java
  42. 134 45
      app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java
  43. 121 17
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  44. 105 33
      app/src/main/java/com/edufound/reader/presenter/RecordPresenter.java
  45. 30 7
      app/src/main/java/com/edufound/reader/presenter/SafflowerPresenter.java
  46. 2 2
      app/src/main/java/com/edufound/reader/presenter/SmallFullVideoPresenter.java
  47. 90 0
      app/src/main/java/com/edufound/reader/presenter/UserInfoSettingPresenter.java
  48. 19 2
      app/src/main/java/com/edufound/reader/receiver/BackPageReceiver.java
  49. 26 4
      app/src/main/java/com/edufound/reader/services/RecordServices.java
  50. 35 0
      app/src/main/java/com/edufound/reader/util/Consts.java
  51. 19 2
      app/src/main/java/com/edufound/reader/util/EfunboxUtil.java
  52. 6 0
      app/src/main/java/com/edufound/reader/util/OkHttpClient.java
  53. BIN
      app/src/main/res/drawable/activity_userinfo_setting_boy.png
  54. BIN
      app/src/main/res/drawable/activity_userinfo_setting_girl.png
  55. 2 2
      app/src/main/res/layout/activity_comment.xml
  56. 8 2
      app/src/main/res/layout/activity_record.xml
  57. 1 1
      app/src/main/res/layout/activity_saffloer.xml
  58. 22 7
      app/src/main/res/layout/activity_userinfo_setting.xml
  59. 10 8
      app/src/main/res/layout/cusjzplayer_controller.xml
  60. 1 1
      app/src/main/res/layout/fragment_main_character.xml
  61. 23 4
      app/src/main/res/layout/fragment_main_user.xml

+ 5 - 5
.idea/misc.xml

@@ -33,7 +33,7 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/activity_mycollection.xml" value="0.2" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/activity_myfollow.xml" value="0.12" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/activity_smallfull_video.xml" value="0.1" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/adapter_item_record_authority.xml" value="0.67" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/adapter_item_record_authority.xml" value="0.75" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/fragment_user_rv_bottom.xml" value="0.2771317829457364" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popup_window_bind_wechat.xml" value="0.25" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_cancellation_account.xml" value="0.5" />
@@ -55,17 +55,17 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/drawable/player_seekbar_list.xml" value="0.2713541666666667" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/drawable/popupwindow_select_grade_griditem_divder.xml" value="0.5048828125" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_alert_login.xml" value="0.5" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_comment.xml" value="0.1" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_comment.xml" value="0.18" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_crash_dialog.xml" value="0.12" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_customerservice.xml" value="0.33" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_main.xml" value="0.15" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_message.xml" value="0.14" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_otherrecord.xml" value="0.303125" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay.xml" value="0.25" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.20887494397131331" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.33" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer.xml" value="0.22" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer_sign_layout_item.xml" value="0.5" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_userinfo_setting.xml" value="0.33" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_userinfo_setting.xml" value="0.30585683297180044" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_video.xml" value="0.18824087245139876" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_web.xml" value="0.2731143552311436" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/adapter_item_comment.xml" value="0.5" />
@@ -80,7 +80,7 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/adapter_item_slidevideo.xml" value="0.25" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/anim_getfollow.xml" value="0.75" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/curjzplayer_controller.xml" value="0.16" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/cusjzplayer_controller.xml" value="3.0" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/cusjzplayer_controller.xml" value="0.5029154518950437" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/fragment_main_character.xml" value="0.18" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/fragment_main_recommend.xml" value="0.2" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/fragment_main_user.xml" value="0.5" />

+ 12 - 6
app/src/main/AndroidManifest.xml

@@ -79,7 +79,8 @@
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
                 android:theme="@style/efunboxTransparentLoginAlert"
-                android:windowSoftInputMode="adjustNothing|stateHidden" /> <!-- 我的收藏界面 -->
+                android:windowSoftInputMode="adjustNothing|stateHidden" />
+        <!-- 我的收藏界面 -->
         <activity
                 android:name=".activity.MyCollectionActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
@@ -88,7 +89,8 @@
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
                 android:theme="@style/efunboxTransparentLoginAlert"
-                android:windowSoftInputMode="adjustNothing|stateHidden" /> <!-- 我的关注界面 -->
+                android:windowSoftInputMode="adjustNothing|stateHidden" />
+        <!-- 我的关注界面 -->
         <activity
                 android:name=".activity.MyFollowActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
@@ -97,7 +99,8 @@
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
                 android:theme="@style/efunboxTransparentLoginAlert"
-                android:windowSoftInputMode="adjustNothing|stateHidden" /> <!-- 消息通知界面 -->
+                android:windowSoftInputMode="adjustNothing|stateHidden" />
+        <!-- 消息通知界面 -->
         <activity
                 android:name=".activity.MessageActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
@@ -106,7 +109,8 @@
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
                 android:theme="@style/efunboxTransparentLoginAlert"
-                android:windowSoftInputMode="adjustNothing|stateHidden" /> <!-- 联系我们界面 -->
+                android:windowSoftInputMode="adjustNothing|stateHidden" />
+        <!-- 联系我们界面 -->
         <activity
                 android:name=".activity.CustomerServiceActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
@@ -115,7 +119,8 @@
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
                 android:theme="@style/efunboxTransparentLoginAlert"
-                android:windowSoftInputMode="adjustNothing|stateHidden" /> <!-- 支付界面 -->
+                android:windowSoftInputMode="adjustNothing|stateHidden" />
+        <!-- 支付界面 -->
         <activity
                 android:name=".activity.PayActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
@@ -124,7 +129,8 @@
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
                 android:theme="@style/efunboxTransparentLoginAlert"
-                android:windowSoftInputMode="adjustNothing|stateHidden" /> <!-- 评论界面 -->
+                android:windowSoftInputMode="adjustNothing|stateHidden" />
+        <!-- 评论界面 -->
         <activity
                 android:name=".activity.CommentActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"

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

@@ -70,6 +70,7 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         });
         mPresenter.userIsLogin();
         mPresenter.checkModelIsDebug();
+        setTheme(R.style.Theme_AppCompat_Light_NoActionBar_FullScreen);
 
 
     }

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

@@ -45,6 +45,12 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
     }
 
     @Override
+    protected void onStart() {
+        mPresenter.activityOnStart();
+        super.onStart();
+    }
+
+    @Override
     public void onGetDisconnect() {
 
     }
@@ -93,4 +99,9 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
     public void getFavoritesSuccess() {
         mPresenter.initRecyclerView(mRecyclerView);
     }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
 }

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

@@ -1,6 +1,8 @@
 package com.edufound.reader.activity;
 
 import android.app.Activity;
+import android.content.Intent;
+import android.os.Build;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 
@@ -10,9 +12,13 @@ import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.MyCollectionContract;
 import com.edufound.reader.contract.MyFollowContract;
+import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.presenter.MyCollectionPresenter;
 import com.edufound.reader.presenter.MyFollowPresenter;
+import com.orhanobut.logger.Logger;
 
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.RecyclerView;
 
 public class MyFollowActivity extends BaseMvpActivity<MyFollowPresenter> implements MyFollowContract.View {
@@ -88,8 +94,30 @@ public class MyFollowActivity extends BaseMvpActivity<MyFollowPresenter> impleme
         return mNoFollow;
     }
 
+    @RequiresApi(api = Build.VERSION_CODES.M)
     @Override
     public void getFollowSuccess() {
         mPresenter.initRecyclerView(mRecyclerView);
     }
+
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        switch (resultCode) {
+            case MyFollowModel.OTHERPAGE_BACK:
+                //从他人界面回来了
+                boolean remove = data.getBooleanExtra("isRemove", false);
+                if (remove) {
+                    mPresenter.removeItemByPosition(mPresenter.getToNextPosition());
+                    return;
+                }
+                break;
+        }
+        super.onActivityResult(requestCode, resultCode, data);
+    }
 }

+ 21 - 1
app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java

@@ -2,6 +2,7 @@ package com.edufound.reader.activity;
 
 import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.content.Intent;
 import android.graphics.Rect;
 import android.os.Build;
 import android.os.Bundle;
@@ -21,7 +22,9 @@ import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.bean.MyInfoBean;
 import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.contract.OthersRecordContract;
+import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.presenter.OthersRecordPresenter;
+import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.GlideUtils;
 import com.jakewharton.rxbinding4.view.RxView;
@@ -80,6 +83,8 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
     boolean isNeedLoad = true;
 
     String mOtherId = null;
+    String intoPage = null;
+    boolean isRemoveFollow = false;
 
     @Override
     public int getLayoutId() {
@@ -98,10 +103,17 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
             loadMoreItem();
         });
         addUiClick(mBack, o -> {
+            if (intoPage.equals("MyFollowActivity")) {
+                Intent i = new Intent();
+                i.putExtra("isRemove", isRemoveFollow);
+                setResult(MyFollowModel.OTHERPAGE_BACK, i);
+            }
             mActivity.finish();
         });
         Bundle params = getIntent().getBundleExtra("params_bundle");
+        intoPage = params.getString("intoPage", "default");
         mOtherId = params.getString("other_uid");
+        Logger.e("mOtherId:" + mOtherId);
         mPresenter.getOtherRecordList(mOtherId);
         mPresenter.getOtherUserInfo(mOtherId);
     }
@@ -150,6 +162,14 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
     @Override
     protected void onDestroy() {
         isNeedLoad = true;
+        if (intoPage.equals("RecommendFragment")) {
+            mPresenter.sendBackReceiver(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+        } else if (intoPage.equals("MyFollowActivity")) {
+            //我的关注所有人页面进入不需要发送广播,但是要告诉是不是有删除
+
+        } else if (intoPage.equals("default")) {
+
+        }
         mPresenter.onDestory(mGridLayout);
         super.onDestroy();
     }
@@ -189,6 +209,7 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
 
     @Override
     public void doFollowSuccess(boolean isfollow) {
+        isRemoveFollow = !isfollow;
         if (isfollow) {
             mIsFansCheckBox.setImageResource(R.drawable.activity_otherrecord_isfans_true);
         } else {
@@ -197,5 +218,4 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
     }
 
 
-
 }

+ 23 - 4
app/src/main/java/com/edufound/reader/activity/RecordActivity.java

@@ -14,6 +14,7 @@ import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.RecordContract;
+import com.edufound.reader.cusview.RvListJzvdStd;
 import com.edufound.reader.presenter.RecordPresenter;
 
 public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements RecordContract.View {
@@ -22,6 +23,8 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
 
     @BindView(id = R.id.player_frame)
     FrameLayout mPlayerFrame;
+    @BindView(id = R.id.activity_record_jzvideo)
+    RvListJzvdStd mJzVideoViwe;
 
     @BindView(id = R.id.activity_record_back)
     ImageView mBack;
@@ -52,9 +55,8 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
         mPresenter = new RecordPresenter();
         mPresenter.attachView(this);
         mPresenter.bindRecordServices();
-        mPresenter.createVideoPlayer(mPlayerFrame);
-//        mPresenter.addVideoController(mPlayerFrame);
-        mPresenter.initVideoPlayer(getIntent());
+        mPresenter.createVideoPlayer();
+        mPresenter.getReadInfo(getIntent());
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });
@@ -68,6 +70,7 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
         addUiClickListener(mDemonsFrame, o -> {
             Animation animation = AnimationUtils.loadAnimation(this, R.anim.activity_record_demonstration_anim);
             mDemonsIcon.startAnimation(animation);
+            mPresenter.clickExampleUI();
         });
     }
 
@@ -115,6 +118,7 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
     @Override
     protected void onDestroy() {
         mPresenter.activityDestroy();
+        mJzVideoViwe = null;
         super.onDestroy();
     }
 
@@ -154,6 +158,21 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
         mMikeAnim.start();
         isRecordNow = true;
         mRecordStatus.setText("配音中");
-        mPresenter.startRecord("不知道", "一二三四五六七");
+        mPresenter.startRecord();
+    }
+
+    @Override
+    public void getReadVideoInfoSuccess() {
+    }
+
+    @Override
+    public RvListJzvdStd getJZVideoView() {
+        return mJzVideoViwe;
+    }
+
+    @Override
+    public void hasShowOtherUI(int visibility) {
+        mBack.setVisibility(visibility);
+        mDemonsFrame.setVisibility(visibility);
     }
 }

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

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import com.edufound.reader.R;
@@ -26,6 +27,8 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
     ImageView mBack;
     @BindView(id = R.id.activity_saffloer_sign)
     FrameLayout mSign;
+    @BindView(id = R.id.activity_saffloer_sign_day)
+    TextView mSignDay;
 
     @Override
     public int getLayoutId() {
@@ -41,7 +44,8 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
             mActivity.finish();
         });
         addUiClickListener(mSign, o -> {
-            Toast.makeText(mActivity, "点击签到", Toast.LENGTH_SHORT).show();
+//            Toast.makeText(mActivity, "点击签到", Toast.LENGTH_SHORT).show();
+            mPresenter.loginSign();
         });
         mPresenter.getTaskData();
         mPresenter.getSignInfo();
@@ -88,7 +92,14 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
     }
 
     @Override
-    public void getSignInfoSuccess() {
+    public void getSignInfoSuccess(String signDday) {
         mPresenter.initSignLayout(mSignLayout);
+        mSignDay.setText("已签到" + signDday + "天");
+    }
+
+    @Override
+    protected void onDestroy() {
+        mPresenter.activityDestory();
+        super.onDestroy();
     }
 }

+ 17 - 3
app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.activity;
 
 import android.app.Activity;
+import android.os.Bundle;
 import android.view.KeyEvent;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -11,6 +12,7 @@ import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.SmallFullVideoContract;
 import com.edufound.reader.presenter.SmallFullVideoPresenter;
+import com.edufound.reader.util.MMKVUtil;
 import com.orhanobut.logger.Logger;
 
 import cn.jzvd.Jzvd;
@@ -38,9 +40,13 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });
-        int index = Integer.valueOf(getIntent().getStringExtra("index"));
-        Toast.makeText(getActivity(), "index:" + index, Toast.LENGTH_SHORT).show();
-        mPresenter.initFragment(index);
+        Bundle params = getIntent().getBundleExtra("params_bundle");
+        int index = Integer.valueOf(params.getString("index"));
+        String dataJson = params.getString("dataJson");
+        if (dataJson.equals("getmmkv")) {
+            dataJson = MMKVUtil.getInstance().decodeString("example_video");
+        }
+        mPresenter.initFragment(index, dataJson);
     }
 
     @Override
@@ -86,20 +92,28 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
 
     @Override
     protected void onDestroy() {
+        MMKVUtil.getInstance().removeKey("getmmkv");
         super.onDestroy();
     }
 
     @Override
     public void onBackPressed() {
+        if (Jzvd.backPress()) {
+            return;
+        }
+        super.onBackPressed();
     }
 
     @Override
     protected void onPause() {
         super.onPause();
+        Jzvd.releaseAllVideos();
+        JzvdStd.goOnPlayOnPause();
     }
 
     @Override
     protected void onResume() {
         super.onResume();
+        JzvdStd.goOnPlayOnResume();
     }
 }

+ 140 - 0
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -1,19 +1,40 @@
 package com.edufound.reader.activity;
 
+import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
+import android.graphics.Color;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
+import com.edufound.reader.application.EApplication;
 import com.edufound.reader.base.BaseMvpActivity;
+import com.edufound.reader.bean.MyInfoBean;
+import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.contract.UserInfoSettingContract;
 import com.edufound.reader.listener.PopUtilClickListener;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.presenter.UserInfoSettingPresenter;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.EfunboxUtil;
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.MMKVEncodeKey;
+import com.edufound.reader.util.MMKVUtil;
+import com.edufound.reader.util.SizeUtils;
+import com.jakewharton.rxbinding4.view.RxView;
+import com.jakewharton.rxbinding4.widget.RxTextView;
+import com.orhanobut.logger.Logger;
 
 public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPresenter> implements UserInfoSettingContract.View {
 
@@ -36,11 +57,24 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
     @BindView(id = R.id.activity_userinfo_setting_switchuser_layout)
     LinearLayout mSwitchLayout;
 
+    @BindView(id = R.id.activity_userinfo_setting_nickname)
+    TextView mNickName;
+    @BindView(id = R.id.activity_userinfo_setting_gender_male)
+    FrameLayout mGenderMale;
+    @BindView(id = R.id.activity_userinfo_setting_gender_female)
+    FrameLayout mGenderFeMale;
+    @BindView(id = R.id.activity_userinfo_setting_grade)
+    TextView mGrade;
+    @BindView(id = R.id.activity_userinfo_setting_userhead)
+    ImageView mUserHead;
+
+
     @Override
     public int getLayoutId() {
         return R.layout.activity_userinfo_setting;
     }
 
+    @SuppressLint("AutoDispose")
     @Override
     public void initView() {
         mActivity = this;
@@ -59,6 +93,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
                 @Override
                 public void clickSubmit(Object obj) {
                     Toast.makeText(mActivity, "退出账号", Toast.LENGTH_SHORT).show();
+                    mPresenter.loginOut();
                 }
             });
         });
@@ -104,6 +139,73 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             Intent tologin = new Intent(getActivity(), LoginAlertActivity.class);
             getActivity().startActivity(tologin);
         });
+
+        addUiClickListener(mGenderMale, o -> {
+            mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
+            mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
+            Consts.getmConstsUserBean().setGender("1");
+            mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+
+        });
+        addUiClickListener(mGenderFeMale, o -> {
+            mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
+            mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
+            Consts.getmConstsUserBean().setGender("0");
+            mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+        });
+        addUiClickListener(mGrade, o -> {
+            PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
+                @Override
+                public void clickCancel() {
+
+                }
+
+                @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());
+                }
+            });
+        });
+//        RxView.focusChanges(mNickName).subscribe(hasFocus -> {
+//            if (!hasFocus) {
+//                if (TextUtils.isEmpty(mNickName.getText().toString())) {
+//                    Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
+//                    return;
+//                }
+//                InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));
+//                if (manager != null) {
+//                    manager.hideSoftInputFromWindow(mNickName.getWindowToken(), 0);
+//                }
+//                Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
+//                mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+//            }
+//
+//        });
+        mNickName.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
+                if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {
+                    Logger.e("setOnEditorActionListener");
+                    if (TextUtils.isEmpty(mNickName.getText().toString())) {
+                        Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
+                        return true;
+                    }
+                    InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));
+                    if (manager != null) {
+                        manager.hideSoftInputFromWindow(mNickName.getWindowToken(), 0);
+                    }
+                    Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
+                    mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+                    mNickName.clearFocus();
+                    return true;
+                }
+                return false;
+            }
+        });
+
+        mPresenter.getMyInfo();
     }
 
     @Override
@@ -141,4 +243,42 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
     public Activity getActivity() {
         return mActivity;
     }
+
+    @Override
+    public void getUserInfoSuccess(UserBean bean) {
+//        m
+        mNickName.setText(bean.getNickName());
+        mGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getGrade()));
+        if (bean.getGender().equals("1")) {
+            //男孩子
+            mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
+            mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
+            mUserHead.setImageResource(R.drawable.activity_userinfo_setting_boy);
+        } else if (bean.getGender().equals("0")) {
+            //女孩子
+            mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
+            mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
+            mUserHead.setImageResource(R.drawable.activity_userinfo_setting_girl);
+        }
+        if (bean.getAvatar() == null || bean.getAvatar().equals("")) {
+        } else {
+            GlideUtils.loadCircleWithBorderImage(getActivity(), bean.getAvatar(), mUserHead, SizeUtils.px2dp(getActivity(), 10), Color.WHITE);
+        }
+    }
+
+    @Override
+    public void loginOutSuccess() {
+        for (int i = 0; i < EApplication.mActivityList.size(); i++) {
+            EApplication.mActivityList.get(i).finish();
+        }
+        Intent intent = new Intent(getActivity(), MainActivity.class);
+        intent.putExtra("defaultIndex", 1);
+        startActivity(intent);
+    }
+
+    @Override
+    protected void onDestroy() {
+        mPresenter.activityDestory();
+        super.onDestroy();
+    }
 }

+ 6 - 0
app/src/main/java/com/edufound/reader/adapter/MyCollectionItemAdapter.java

@@ -48,6 +48,12 @@ public class MyCollectionItemAdapter extends RecyclerView.Adapter<RecyclerView.V
     }
 
 
+    public void removeByPosition(int position) {
+        mListData.remove(position);
+        notifyItemRemoved(position);
+        notifyDataSetChanged();
+    }
+
     public void setOnItemClickListener(RecyclerItemClickListener listener) {
         mRecyclerItemClickListener = listener;
     }

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

@@ -45,13 +45,19 @@ public class MyFollowItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
         mLayoutInflater = LayoutInflater.from(context);
         mListData = listData;
 
-
     }
 
     public void addMored(List<MyFollowBean> listData) {
         mListData.addAll(listData);
     }
 
+    //  删除数据
+    public void removeData(int position) {
+        mListData.remove(position);
+        //删除动画
+        notifyItemRemoved(position);
+        notifyDataSetChanged();
+    }
 
     //判断当前item是否是HeadView
     public boolean isHeaderView(int position) {

+ 0 - 2
app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java

@@ -43,12 +43,10 @@ public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
         mContext = context;
         mLayoutInflater = LayoutInflater.from(context);
         this.mListData = data;
-        Logger.e("init--size:" + mListData.size());
     }
 
 
     public void addMored(List<UserRecordBean> listData) {
-        Logger.e("loadMore---" + listData.size());
         mListData.addAll(listData);
     }
 

+ 8 - 0
app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java

@@ -66,6 +66,11 @@ public class UserApiServerImpl implements userApiServer {
     public void getOtherUserInfo(Activity activity, String uid, Callback callback) {
         OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/user/info").addParam("uid", uid), callback);
     }
+
+    @Override
+    public void loginSign(Activity activity, Callback callback) {
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/loginLog"), callback);
+    }
 }
 
 
@@ -104,4 +109,7 @@ interface userApiServer {
      */
     void getOtherUserInfo(Activity activity, String uid, Callback callback);
 
+
+    void loginSign(Activity activity, Callback callback);
+
 }

+ 16 - 0
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -249,5 +249,21 @@ public abstract class BaseActivity extends AppCompatActivity {
         return mGson;
     }
 
+    public void toNextActivity(Class clazz) {
+        Intent intent = new Intent(this, clazz);
+        startActivity(intent);
+    }
+
+    public void toNextActivity(Class clazz, Bundle bundle) {
+        Intent intent = new Intent(this, clazz);
+        intent.putExtra("params_bundle", bundle);
+        startActivity(intent);
+    }
+
+    public void toNextActivityForResult(Class clazz, Bundle bundle, int resultCode) {
+        Intent intent = new Intent(this, clazz);
+        intent.putExtra("params_bundle", bundle);
+        startActivityForResult(intent, resultCode);
+    }
 
 }

+ 2 - 2
app/src/main/java/com/edufound/reader/bean/UserRecordBean.java

@@ -25,11 +25,11 @@ public class UserRecordBean {
         return isLike;
     }
 
-    public Favorites getFavorites() {
+    public Favorites getFavoritesBean() {
         return favorites;
     }
 
-    public void setFavorites(Favorites favorites) {
+    public void setFavoritesBean(Favorites favorites) {
         this.favorites = favorites;
     }
 

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

@@ -13,12 +13,14 @@ import io.reactivex.rxjava3.functions.Consumer;
 
 public interface CharacterFragmentContract {
     interface Model {
-
+        void getExampleAll(Activity activity, Callback callback);
     }
 
     interface View extends BaseView {
         void addUiClick(android.view.View view, Consumer onNext);
 
+        void getExampleAllSuccess();
+
         Space getBottomView();
     }
 
@@ -29,5 +31,7 @@ public interface CharacterFragmentContract {
 
         void onDestory(GridLayout layout);
 
+        void getExampleAll();
+
     }
 }

+ 5 - 0
app/src/main/java/com/edufound/reader/contract/MyCollectionContract.java

@@ -23,5 +23,10 @@ public interface MyCollectionContract {
         void initRecyclerView(RecyclerView rv);
 
         void getFavoritesData();
+
+        void activityDestory();
+
+        void activityOnStart();
+
     }
 }

+ 7 - 0
app/src/main/java/com/edufound/reader/contract/MyFollowContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.widget.ImageView;
 
 import com.edufound.reader.base.BaseView;
@@ -26,5 +27,11 @@ public interface MyFollowContract {
         void initRecyclerView(RecyclerView rv);
 
         void getFollowAll();
+
+        void activityForResult(Intent intent, int resultCode);
+
+        int getToNextPosition();
+
+        void removeItemByPosition(int position);
     }
 }

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

@@ -46,5 +46,7 @@ public interface OthersRecordContract {
 
         void doFollow(String uid);
 
+        void sendBackReceiver(String action);
+
     }
 }

+ 11 - 1
app/src/main/java/com/edufound/reader/contract/RecommendFragmentContract.java

@@ -30,6 +30,8 @@ public interface RecommendFragmentContract {
          */
         void getRecordInfoById(Activity activity, String recordId, Callback callback);
 
+        void getMyFollowAllVideo(Activity activity, int pageIndex, Callback callback);
+
     }
 
     interface View extends BaseView {
@@ -38,6 +40,8 @@ public interface RecommendFragmentContract {
         void setFavorites(boolean isfavorites);
 
         void setLikes(String count);
+
+        String getDataJson();
     }
 
     interface Presenter {
@@ -45,6 +49,8 @@ public interface RecommendFragmentContract {
 
         Object getCurPlayVideo();
 
+        Object getCurVideoExampleId();
+
         void fragmentPause(RecyclerView rv);
 
         void fragmentResume(RecyclerView rv);
@@ -55,8 +61,12 @@ public interface RecommendFragmentContract {
 
         void doLike(UserRecordBean.UserRead userRead);
 
-        void destory();
+        void activityDestory();
 
         void getRecordInfoById(String id);
+
+
+        void getMyFollowAllVideo();
+
     }
 }

+ 25 - 5
app/src/main/java/com/edufound/reader/contract/RecordContract.java

@@ -1,21 +1,32 @@
 package com.edufound.reader.contract;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.widget.FrameLayout;
 
 import com.edufound.reader.base.BaseView;
 import com.edufound.reader.bean.RecordResultBean;
+import com.edufound.reader.bean.UserRecordBean;
+import com.edufound.reader.cusview.RvListJzvdStd;
+import com.okhttplib.callback.Callback;
 
 
 public interface RecordContract {
     interface Model {
-//        Observable<Object> login(String username, String password);
+        void getReadInfo(Activity activity, String id, Callback callback);
     }
 
     interface View extends BaseView {
         void refRecordStatus();
 
         void startRecordStatus();
+
+        void getReadVideoInfoSuccess();
+
+        RvListJzvdStd getJZVideoView();
+
+        void hasShowOtherUI(int visibility);
+
     }
 
     interface Presenter {
@@ -23,13 +34,13 @@ public interface RecordContract {
         /*
          * 创建播放器及其方法
          * */
-        void createVideoPlayer(FrameLayout frame);
+        void createVideoPlayer();
 
 
         /*
          * 设置播放器播放路径等
          * */
-        void initVideoPlayer(Intent intent);
+        void initVideoPlayer(String url);
 
 
         /*
@@ -60,15 +71,24 @@ public interface RecordContract {
 
         void activityResume();
 
-        void showRecordStatusWindow(RecordResultBean bean);
+        void showRecordStatusWindow(RecordResultBean bean, UserRecordBean.UserRead userread);
 
 
         void bindRecordServices();
 
-        void startRecord(String name, String refText);
+        void startRecord();
 
         void stopRecord();
 
         void rePlayRecord();
+
+        void getReadInfo(Intent intent);
+
+
+        String getExampleUrl();
+
+        String getRecordUrl();
+
+        void clickExampleUI();
     }
 }

+ 5 - 1
app/src/main/java/com/edufound/reader/contract/SafflowerContract.java

@@ -19,7 +19,7 @@ public interface SafflowerContract {
     interface View extends BaseView {
         void getTaskSuccess();
 
-        void getSignInfoSuccess();
+        void getSignInfoSuccess(String signDay);
     }
 
     interface Presenter {
@@ -30,5 +30,9 @@ public interface SafflowerContract {
         void getTaskData();
 
         void getSignInfo();
+
+        void loginSign();
+
+        void activityDestory();
     }
 }

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

@@ -10,6 +10,6 @@ public interface SmallFullVideoContract {
     }
 
     interface Presenter {
-        void initFragment(int index);
+        void initFragment(int index, String dataJson);
     }
 }

+ 29 - 0
app/src/main/java/com/edufound/reader/contract/UserInfoSettingContract.java

@@ -1,14 +1,43 @@
 package com.edufound.reader.contract;
 
+import android.app.Activity;
+
 import com.edufound.reader.base.BaseView;
+import com.edufound.reader.bean.MyInfoBean;
+import com.edufound.reader.bean.UserBean;
+import com.edufound.reader.util.OkHttpClient;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 
 public interface UserInfoSettingContract {
     interface Model {
+
+        void getMyInfo(Activity activity, Callback callback);
+
+        void updateMyInfo(Activity activity, String json, Callback callback);
+
+        void loginOut(Activity activity, Callback callback);
+
     }
 
     interface View extends BaseView {
+
+        void getUserInfoSuccess(UserBean bean);
+
+        void loginOutSuccess();
+
+
     }
 
     interface Presenter {
+        void getMyInfo();
+
+        String getGradeEnum();
+
+        void upadteMyInfo(UserBean bean);
+
+        void activityDestory();
+
+        void loginOut();
     }
 }

+ 11 - 1
app/src/main/java/com/edufound/reader/cusview/RvListJzvdStd.java

@@ -110,6 +110,10 @@ public class RvListJzvdStd extends Jzvd {
 
     public VideoCallBack mCallBack;
 
+
+    public boolean canPause = true;
+
+
     public RvListJzvdStd(Context context) {
         super(context);
     }
@@ -206,6 +210,10 @@ public class RvListJzvdStd extends Jzvd {
         titleTextView.setText(jzDataSource.title);
     }
 
+    public void setCanPause(boolean canpause) {
+        this.canPause = canpause;
+    }
+
     public void changeStartButtonSize(int size) {
         ViewGroup.LayoutParams lp = startButton.getLayoutParams();
         lp.height = size;
@@ -321,7 +329,9 @@ public class RvListJzvdStd extends Jzvd {
                 case MotionEvent.ACTION_MOVE:
                     break;
                 case MotionEvent.ACTION_UP:
-                    startButton.performClick();
+                    if (canPause) {
+                        startButton.performClick();
+                    }
 //                    startDismissControlViewTimer();
 //                    if (mChangePosition) {
 //                        long duration = getDuration();

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

@@ -11,6 +11,7 @@ import android.widget.ImageView;
 import android.widget.Space;
 
 import com.edufound.reader.R;
+import com.edufound.reader.activity.SafflowerActivity;
 import com.edufound.reader.base.BaseMvpFragment;
 import com.edufound.reader.contract.CharacterFragmentContract;
 import com.edufound.reader.presenter.CharacterFragmentPresenter;
@@ -45,8 +46,13 @@ public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresente
         mScrollView = view.findViewById(R.id.fragment_main_character_scrollview);
         mGridLayout = view.findViewById(R.id.fragment_my_recyclerview);
         mBottomView = view.findViewById(R.id.fragment_main_character_bottomview);
+        addUiClick(mCharacterImage, o -> {
+            toNextActivity(SafflowerActivity.class);
+        });
 //        mPresenter.initRecyclerView(mRecyclerView);
-        mPresenter.initGridLayout(mGridLayout);
+
+        mPresenter.getExampleAll();
+
 
     }
 
@@ -100,6 +106,11 @@ public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresente
     }
 
     @Override
+    public void getExampleAllSuccess() {
+        mPresenter.initGridLayout(mGridLayout);
+    }
+
+    @Override
     public Space getBottomView() {
         return mBottomView;
     }

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

@@ -48,7 +48,7 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
     TextView mHeadUserGrade;
     TextView mHeadUserFans;
     TextView mHeadUserPlayCount;
-    ImageView mHeadUserVip;
+    FrameLayout mHeadUserVip;
     FrameLayout mHeadUserRedFlower;
     ImageView mHeadUserMyAttention;
     ImageView mHeadUserMyCollection;
@@ -58,6 +58,7 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
     TextView mRecordSize;
     ImageView mUnReadIcon;
     TextView mFlowerCount;
+    TextView mOverDate;
     Space mBottomView;
     Rect mScreenRect;
     boolean isNeedLoad = true;
@@ -80,10 +81,13 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
         mHeadUserFans = headlayout.findViewById(R.id.fragment_main_user_fans);
         mHeadUserPlayCount = headlayout.findViewById(R.id.fragment_main_user_playcount);
         mHeadUserVip = headlayout.findViewById(R.id.fragment_main_user_vip);
+        mOverDate = view.findViewById(R.id.fragment_main_user_vip_date);
         if (true) {
             mHeadUserVip.setBackgroundResource(R.drawable.fragment_my_vip_renew);
+            mOverDate.setVisibility(View.VISIBLE);
         } else {
             mHeadUserVip.setBackgroundResource(R.drawable.fragment_my_vip);
+            mOverDate.setVisibility(View.INVISIBLE);
         }
         mHeadUserRedFlower = headlayout.findViewById(R.id.fragment_main_user_redflower);
         mHeadUserMyAttention = headlayout.findViewById(R.id.fragment_main_user_myattention);
@@ -194,7 +198,17 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
 
     @Override
     public void setUserInfo(MyInfoBean bean) {
-        GlideUtils.loadCircleImage(getContext(), bean.getUser().getAvatar(), mHeaderUserImg);
+        if (bean.getUser().getAvatar() == null || bean.getUser().getAvatar().equals("")) {
+            if (bean.getUser().getGender().equals("1")) {
+                //男孩
+                mHeaderUserImg.setImageResource(R.drawable.activity_userinfo_setting_boy);
+            } else if (bean.getUser().getGender().equals("0")) {
+                //女孩
+                mHeaderUserImg.setImageResource(R.drawable.activity_userinfo_setting_girl);
+            }
+        } else {
+            GlideUtils.loadCircleImage(getContext(), bean.getUser().getAvatar(), mHeaderUserImg);
+        }
         mHeadUserPhone.setText(bean.getUser().getNickName());
         mHeadUserGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getUser().getGrade()));
         mHeadUserFans.setText(String.valueOf(bean.getFansAmount()));

+ 30 - 15
app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java

@@ -10,13 +10,11 @@ import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import com.edufound.reader.R;
 import com.edufound.reader.activity.CommentActivity;
 import com.edufound.reader.activity.OthersRecordActivity;
 import com.edufound.reader.activity.RecordActivity;
-import com.edufound.reader.activity.UserInfoSettingActivity;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BaseMvpFragment;
 import com.edufound.reader.bean.UserRecordBean;
@@ -27,6 +25,7 @@ import com.edufound.reader.util.GlideUtils;
 import com.orhanobut.logger.Logger;
 
 import androidx.recyclerview.widget.RecyclerView;
+import cn.jzvd.JzvdStd;
 
 public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresenter> implements RecommendFragmentContract.View {
 
@@ -58,14 +57,18 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
     //关注的人的mFragmentType=3
     int mFragmentType = 0;
 
-    public RecommendFragment(int type) {
-        mFragmentType = type;
-    }
-
     boolean hideBottom = false;
 
     int startPosition = 0;
 
+
+    String mDataJson = null;
+
+
+    public RecommendFragment(int type) {
+        mFragmentType = type;
+    }
+
     @Override
     protected void initView(View view) {
         mRootView = view;
@@ -137,8 +140,9 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
         addUiClickListener(mToRecordLayout, o -> {
             Logger.e("点击我要录音了:" + mPresenter.getCurPlayVideo());
+            Logger.e("exampleId:" + mPresenter.getCurVideoExampleId());
             Bundle bundle = new Bundle();
-            bundle.putString("index", mPresenter.getCurPlayVideo().toString());
+            bundle.putString("exampleId", mPresenter.getCurVideoExampleId().toString());
             toNextActivity(RecordActivity.class, bundle);
         });
         mPresenter.initVideoList(mRecyclerView, mFragmentType, startPosition);
@@ -162,18 +166,17 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public void onPause() {
-        super.onPause();
-//        JzvdStd.goOnPlayOnPause();
+        JzvdStd.goOnPlayOnPause();
         mPresenter.fragmentPause(mRecyclerView);
+        super.onPause();
     }
 
 
     @Override
     public void onResume() {
-        Logger.e("onResume");
-        super.onResume();
-//        JzvdStd.goOnPlayOnResume();
+        JzvdStd.goOnPlayOnResume();
         mPresenter.fragmentResume(mRecyclerView);
+        super.onResume();
     }
 
     @Override
@@ -191,6 +194,12 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         startPosition = position;
     }
 
+
+    public void setDataJson(String json) {
+        mDataJson = json;
+    }
+
+
     @Override
     public void setTopStatus(UserRecordBean bean) {
         Logger.e("bean.getuser.getnickName:" + bean.getUser().getNickName());
@@ -204,7 +213,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         } else {
             isFollow.setVisibility(View.VISIBLE);
         }
-        if (bean.getIsFavorites()) {
+        if (bean.getIsFavorites() || bean.getFavoritesBean() != null) {
             mCollentStatus.setText("已收藏");
             ((ImageView) mCollectionLayout.findViewById(R.id.fragment_recommend_collection_icon)).setImageResource(R.drawable.fragment_recommend_collection_icon_s);
         } else {
@@ -222,6 +231,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
             Logger.e("点击了手机号和头像,跳转他人作品界面");
             Bundle bundle = new Bundle();
             bundle.putString("other_uid", bean.getUser().getUid());
+            bundle.putString("intoPage", "RecommendFragment");
             toNextActivity(OthersRecordActivity.class, bundle);
         });
 
@@ -270,8 +280,13 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
     }
 
     @Override
+    public String getDataJson() {
+        return mDataJson;
+    }
+
+    @Override
     public void onDestroy() {
-        mPresenter.destory();
+        mPresenter.activityDestory();
         super.onDestroy();
     }
 
@@ -292,7 +307,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public void onDestroyView() {
-        mPresenter.destory();
+        mPresenter.activityDestory();
         super.onDestroyView();
     }
 }

+ 9 - 0
app/src/main/java/com/edufound/reader/model/CharacterFragmentModel.java

@@ -1,10 +1,19 @@
 package com.edufound.reader.model;
 
+import android.app.Activity;
+
 import com.edufound.reader.contract.CharacterFragmentContract;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.OkHttpClient;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 
 public class CharacterFragmentModel implements CharacterFragmentContract.Model {
     public static final int LOAD_GRID = 0x1231;
     private String API = Consts.getFinalApi();
 
+    @Override
+    public void getExampleAll(Activity activity, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/userRead").addParam("pageNo", String.valueOf(1)).addParam("type", "EXAMPLE").addParam("pageSize", "100000"), callback);
+    }
 }

+ 1 - 0
app/src/main/java/com/edufound/reader/model/MyFollowModel.java

@@ -9,6 +9,7 @@ import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 
 public class MyFollowModel implements MyFollowContract.Model {
+    public static final int OTHERPAGE_BACK = 0x3321;
     private final String API = Consts.getFinalApi();
 
     @Override

+ 32 - 0
app/src/main/java/com/edufound/reader/model/PopWindowModelImpl.java

@@ -1,9 +1,41 @@
 package com.edufound.reader.model;
 
+import android.app.Activity;
+
+import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.OkHttpClient;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
+import com.okhttplib.callback.ProgressCallback;
+import com.orhanobut.logger.Logger;
+
 public class PopWindowModelImpl implements PopWindowModel {
 
+    private final String API = Consts.getFinalApi();
+
+    @Override
+    public void upLoadRecord(Activity activity, String path, ProgressCallback callback) {
+        Logger.e("上传的:" + path);
+        OkHttpClient.doUploadFile(activity, new HttpInfo.Builder().setUrl(API + "/file/upload").addUploadFile("uploadFile", path, callback));
+    }
+
+    @Override
+    public void postUserRead(Activity activity, String json, Callback callback) {
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/userRead").addParamJson(json), callback);
+    }
+
+    @Override
+    public void postAssessment(Activity activity, String json, Callback callback) {
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/assessment").addParamJson(json), callback);
+    }
 }
 
 
 interface PopWindowModel {
+    void upLoadRecord(Activity activity, String path, ProgressCallback callback);
+
+    void postUserRead(Activity activity, String json, Callback callback);
+
+    void postAssessment(Activity activity, String json, Callback callback);
+
 }

+ 9 - 0
app/src/main/java/com/edufound/reader/model/RecommendFragmentModel.java

@@ -36,4 +36,13 @@ public class RecommendFragmentModel implements RecommendFragmentContract.Model {
     public void getRecordInfoById(Activity activity, String recordId, Callback callback) {
         OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/userRead/readInfo/" + recordId + ""), callback);
     }
+
+
+    /**
+     * 获取所有关注的人的视频
+     */
+    @Override
+    public void getMyFollowAllVideo(Activity activity, int pageIndex, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/fans/interest").addParam("pageNo", String.valueOf(pageIndex)).addParam("pageSize", "100"), callback);
+    }
 }

+ 11 - 4
app/src/main/java/com/edufound/reader/model/RecordModel.java

@@ -1,12 +1,19 @@
 package com.edufound.reader.model;
 
+import android.app.Activity;
+
 import com.edufound.reader.contract.RecordContract;
+import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.OkHttpClient;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 
 public class RecordModel implements RecordContract.Model {
+    private final String API = Consts.getFinalApi();
 
+    @Override
+    public void getReadInfo(Activity activity, String recordId, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/userRead/readInfo/" + recordId + ""), callback);
+    }
 
-//    @Override
-//    public Observable<Object> login(String username, String password) {
-//        return null;
-//    }
 }

+ 22 - 0
app/src/main/java/com/edufound/reader/model/UserInfoSettingModel.java

@@ -1,6 +1,28 @@
 package com.edufound.reader.model;
 
+import android.app.Activity;
+
 import com.edufound.reader.contract.UserInfoSettingContract;
+import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.OkHttpClient;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 
 public class UserInfoSettingModel implements UserInfoSettingContract.Model {
+    private String API = Consts.getFinalApi();
+
+    @Override
+    public void getMyInfo(Activity activity, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/user/my"), callback);
+    }
+
+    @Override
+    public void updateMyInfo(Activity activity, String json, Callback callback) {
+        OkHttpClient.doPutAsync(activity, new HttpInfo.Builder().setUrl(API + "/user").addParamJson(json), callback);
+    }
+
+    @Override
+    public void loginOut(Activity activity, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/user/logOut"), callback);
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.edufound.reader.popwindow;
 
+import android.app.Activity;
 import android.content.Context;
 import android.view.Gravity;
 import android.view.KeyEvent;
@@ -12,6 +13,7 @@ import android.widget.PopupWindow;
 import com.edufound.reader.R;
 import com.edufound.reader.application.EApplication;
 import com.edufound.reader.bean.RecordResultBean;
+import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.cusview.GridRadioGroup;
 import com.edufound.reader.listener.PopUtilClickListener;
 import com.edufound.reader.listener.PopupRecordStatusListener;
@@ -207,7 +209,7 @@ public class PopWindowUtil {
     }
 
 
-    public static void showRecordStatusWindow(Context context, View parent, RecordResultBean bean, PopupRecordStatusListener listener) {
+    public static void showRecordStatusWindow(Activity context, View parent, RecordResultBean bean, UserRecordBean.UserRead userread,PopupRecordStatusListener listener) {
         initPresenter();
         if (checkWindowShoing()) {
             return;
@@ -227,7 +229,7 @@ public class PopWindowUtil {
         setClickListener(back, o -> {
             mPopupWindow.dismiss();
         });
-        mPresenter.initRecordStatusWindow(context, dialog_view, bean, listener);
+        mPresenter.initRecordStatusWindow(context, dialog_view, bean, userread, listener);
         mPopupWindow = new PopupWindow(dialog_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         mPopupWindow.setFocusable(false);
         mPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);

+ 56 - 10
app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenter.java

@@ -1,7 +1,9 @@
 package com.edufound.reader.presenter;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.view.LayoutInflater;
@@ -11,14 +13,23 @@ import android.widget.FrameLayout;
 import android.widget.GridLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.edufound.reader.R;
 import com.edufound.reader.activity.SmallFullVideoActivity;
+import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
+import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.bean.HttpResultDataListBean;
+import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.contract.CharacterFragmentContract;
 import com.edufound.reader.model.CharacterFragmentModel;
+import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.MMKVUtil;
+import com.edufound.reader.util.OkHttpClient;
 import com.edufound.reader.util.SizeUtils;
+import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
@@ -30,7 +41,7 @@ import java.util.List;
 public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentContract.View> implements CharacterFragmentContract.Presenter {
     Context mContext;
     CharacterFragmentModel mModel;
-    List<Object> mDataList;
+    List<UserRecordBean> mDataList;
     int mListStart = 0;
     int mListEnd = 6;
 
@@ -38,15 +49,20 @@ public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentC
         mModel = new CharacterFragmentModel();
         mContext = context;
 
-        mDataList = new ArrayList<>();
-        for (int i = 0; i < 100; i++) {
-            mDataList.add("i=" + i);
-        }
+//        mDataList = new ArrayList<>();
+//        for (int i = 0; i < 100; i++) {
+//            mDataList.add("i=" + i);
+//        }
+
+
     }
 
 
     @Override
     public void initGridLayout(GridLayout gridLayout) {
+        if (mDataList == null || mDataList.size() <= 0) {
+            return;
+        }
         gridLayout.setRowCount(2);
         int timeCount = 0;
         for (int j = mListStart; j < mListEnd; j++) {
@@ -76,6 +92,23 @@ public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentC
         mView = null;
     }
 
+    @Override
+    public void getExampleAll() {
+        mModel.getExampleAll(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
+                }.getType());
+                mDataList = bean.getData().getList();
+                mView.getExampleAllSuccess();
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
 
 
     private void setGridItemView(GridLayout gridLayout, int index) {
@@ -86,14 +119,27 @@ public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentC
         View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_item_record_authority, null);
         ImageView imgIcon = view.findViewById(R.id.adapter_item_record_authority_icon);
         TextView name = view.findViewById(R.id.adapter_item_record_authority_name);
-        GlideUtils.loadRoundCircleImage(mContext, "http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640", imgIcon, SizeUtils.dp2px(mContext, 20));
+        TextView allcount = view.findViewById(R.id.adapter_item_record_authority_allcount_num);
+        TextView looknum = view.findViewById(R.id.adapter_item_record_authority_look_num);
+        TextView thumbnum = view.findViewById(R.id.adapter_item_record_authority_thumb_num);
+        TextView startnum = view.findViewById(R.id.adapter_item_record_authority_start_num);
+        GlideUtils.loadRoundCircleImage(mContext, mDataList.get(index).getUserRead().getCoverImg(), imgIcon, SizeUtils.dp2px(mContext, 20));
+        name.setText(mDataList.get(index).getUserRead().getTitle());
+        allcount.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getCommentAmount()));
+        looknum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getPlayAmount()));
+        thumbnum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getLikeAmount()));
+        startnum.setText(EfunboxUtil.checkNum10000(mDataList.get(index).getUserRead().getFavoritesAmount()));
+
         mView.addUiClick(view, o -> {
-            Intent intent = new Intent(mView.getActivity(), SmallFullVideoActivity.class);
-            intent.putExtra("index", index + "");
-            mView.getActivity().startActivity(intent);
+            Bundle bundle = new Bundle();
+            bundle.putString("index", index + "");
+            bundle.putString("dataJson", "getmmkv");
+            //数据太多了。直接传不过去,通过MMKV写一下再读一下
+            MMKVUtil.getInstance().encode("example_video", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
+            ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
         });
 
-        name.setText("当前第:" + index + "个");
+
         GridLayout.LayoutParams params = new GridLayout.LayoutParams(new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 415), SizeUtils.dp2px(mContext, 290)));
         params.setMargins(SizeUtils.dp2px(mContext, 10), 0, SizeUtils.dp2px(mContext, 20), SizeUtils.dp2px(mContext, 20));
         view.setLayoutParams(params);

+ 56 - 2
app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java

@@ -1,10 +1,14 @@
 package com.edufound.reader.presenter;
 
+import android.content.Intent;
 import android.graphics.Rect;
+import android.os.Bundle;
 import android.view.View;
 import android.widget.Toast;
 
+import com.edufound.reader.activity.SmallFullVideoActivity;
 import com.edufound.reader.adapter.MyCollectionItemAdapter;
+import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.CommentListReplyBean;
 import com.edufound.reader.bean.HttpResultBean;
@@ -13,6 +17,9 @@ import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.contract.MyCollectionContract;
 import com.edufound.reader.listener.RecyclerItemClickListener;
 import com.edufound.reader.model.MyCollectionModel;
+import com.edufound.reader.receiver.BackPageReceiver;
+import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.MMKVUtil;
 import com.edufound.reader.util.SizeUtils;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
@@ -38,6 +45,8 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
 
     public MyCollectionPresenter() {
         mModel = new MyCollectionModel();
+        Consts.setIsNeedRemoveBR(true);
+
     }
 
     @Override
@@ -59,7 +68,6 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         rv.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
             @Override
             public void onChildViewAttachedToWindow(@androidx.annotation.NonNull View view) {
-                addMoreData(rv);
             }
 
             @Override
@@ -71,7 +79,20 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         myCollectionItemAdapter.setOnItemClickListener(new RecyclerItemClickListener() {
             @Override
             public void onClickListener(int position, View view, Object object) {
-                Logger.e("position:" + position);
+                Bundle bundle = new Bundle();
+                bundle.putString("index", position + "");
+                bundle.putString("dataJson", "getmmkv");
+                //数据太多了。直接传不过去,通过MMKV写一下再读一下
+                MMKVUtil.getInstance().encode("example_video", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
+//            bundle.putString("dataJson", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
+                ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
+            }
+        });
+        rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
+            @Override
+            public void onScrollStateChanged(@androidx.annotation.NonNull RecyclerView recyclerView, int newState) {
+                super.onScrollStateChanged(recyclerView, newState);
+                addMoreData(rv);
             }
         });
         rv.setAdapter(myCollectionItemAdapter);
@@ -103,6 +124,7 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
                         }
                     });
                 }
+                mPageIndex++;
             }
 
             @Override
@@ -112,6 +134,20 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         });
     }
 
+    @Override
+    public void activityDestory() {
+        Consts.setIsNeedRemoveBR(false);
+        BackPageReceiver.unRegisterReceiver(mView.getActivity());
+    }
+
+    @Override
+    public void activityOnStart() {
+        Logger.e("注册广播");
+        BackPageReceiver.registerReceiver(mView.getActivity(), BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM);
+        BackPageReceiver.registerBackPageReceiverListener(backListener);
+    }
+
+
     public void addMoreData(RecyclerView rv) {
         //获取当前显示的View 的数据
         int childCount = rv.getChildCount();
@@ -129,6 +165,22 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
             getFavoritesData();
         }
     }
+
+    BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
+        @Override
+        public void pageBack(Intent intent) {
+            Logger.e("收的到广播吗");
+            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM)) {
+                //删除item
+                int position = Integer.valueOf(intent.getStringExtra("removePosition"));
+                Logger.e("position:" + position);
+                myCollectionItemAdapter.removeByPosition(position);
+                if (mTotalSize > 0) {
+                    mTotalSize--;
+                }
+            }
+        }
+    };
 }
 
 class MyCollectionItemDecoration extends RecyclerView.ItemDecoration {
@@ -154,4 +206,6 @@ class MyCollectionItemDecoration extends RecyclerView.ItemDecoration {
             outRect.left = mColumnSpacing;
         }
     }
+
+
 }

+ 40 - 5
app/src/main/java/com/edufound/reader/presenter/MyFollowPresenter.java

@@ -2,11 +2,14 @@ package com.edufound.reader.presenter;
 
 import android.content.Intent;
 import android.graphics.Rect;
+import android.os.Build;
+import android.os.Bundle;
 import android.view.View;
 import android.widget.Toast;
 
 import com.edufound.reader.activity.OthersRecordActivity;
 import com.edufound.reader.adapter.MyFollowItemAdapter;
+import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.HttpResultDataListBean;
@@ -17,6 +20,7 @@ import com.edufound.reader.listener.RecyclerItemClickListener;
 import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.util.SizeUtils;
 import com.google.gson.reflect.TypeToken;
+import com.jakewharton.rxbinding4.view.RxView;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
@@ -25,6 +29,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
@@ -37,6 +42,7 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
     int mPageIndex = 1;
     int mTotalSize = 0;
     boolean loadOver = false;
+    int toNextPosition = 0;
 
     public MyFollowPresenter() {
         mModel = new MyFollowModel();
@@ -46,6 +52,7 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
 //        }
     }
 
+    @RequiresApi(api = Build.VERSION_CODES.M)
     @Override
     public void initRecyclerView(RecyclerView rv) {
         if (mDataList == null || mDataList.size() <= 0) {
@@ -71,7 +78,7 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
         rv.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
             @Override
             public void onChildViewAttachedToWindow(@androidx.annotation.NonNull View view) {
-                addMoreData(rv);
+
             }
 
             @Override
@@ -82,12 +89,21 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
         myFollowItemAdapter.setOnItemClickListener(new RecyclerItemClickListener() {
             @Override
             public void onClickListener(int position, View view, Object object) {
-                Toast.makeText(mView.getActivity(), "click:" + position, Toast.LENGTH_SHORT).show();
-                Intent intent = new Intent(mView.getActivity(), OthersRecordActivity.class);
-                intent.putExtra("userId", position);
-                mView.getActivity().startActivity(intent);
+                toNextPosition = position;
+                Bundle bundle = new Bundle();
+                bundle.putString("intoPage", "MyFollowActivity");
+                bundle.putString("other_uid", mDataList.get(position).getUserInfo().getUser().getUid());
+                ((BaseActivity) mView.getActivity()).toNextActivityForResult(OthersRecordActivity.class, bundle, MyFollowModel.OTHERPAGE_BACK);
             }
         });
+        rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
+            @Override
+            public void onScrollStateChanged(@androidx.annotation.NonNull RecyclerView recyclerView, int newState) {
+                super.onScrollStateChanged(recyclerView, newState);
+                addMoreData(rv);
+            }
+        });
+
         rv.setAdapter(myFollowItemAdapter);
     }
 
@@ -115,6 +131,7 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
                             myFollowItemAdapter.notifyDataSetChanged();
                         }
                     });
+                    mPageIndex++;
                 }
             }
 
@@ -125,6 +142,24 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
         });
     }
 
+    @Override
+    public void activityForResult(Intent intent, int resultCode) {
+
+    }
+
+    @Override
+    public int getToNextPosition() {
+        return toNextPosition;
+    }
+
+    @Override
+    public void removeItemByPosition(int position) {
+        myFollowItemAdapter.removeData(position);
+        if (mTotalSize > 0) {
+            mTotalSize--;
+        }
+    }
+
     private void addMoreData(RecyclerView rv) {
         //获取当前显示的View 的数据
         int childCount = rv.getChildCount();

+ 24 - 4
app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java

@@ -25,6 +25,8 @@ import com.edufound.reader.listener.PopUtilClickListener;
 import com.edufound.reader.model.CharacterFragmentModel;
 import com.edufound.reader.model.MyTabFragmentModel;
 import com.edufound.reader.popwindow.PopWindowUtil;
+import com.edufound.reader.receiver.BackPageReceiver;
+import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.SizeUtils;
 import com.google.gson.reflect.TypeToken;
@@ -46,6 +48,8 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
     public MyTabFragmentPresenter(Context context) {
         mContext = context;
         mModel = new MyTabFragmentModel();
+        BackPageReceiver.registerReceiver(context, BackPageReceiver.BACK_HOME_REF_USER_INFO);
+        BackPageReceiver.registerBackPageReceiverListener(backListener);
     }
 
 
@@ -70,6 +74,9 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
             gridLayout.setVisibility(View.GONE);
             return;
         }
+        if (mListEnd > mDataList.size()) {
+            mListEnd = mDataList.size();
+        }
         int timeCount = 0;
         for (int j = mListStart; j < mListEnd; j++) {
             timeCount++;
@@ -156,10 +163,10 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         FrameLayout checkLayout = view.findViewById(R.id.adapter_item_record_user_examine_layout);
         GlideUtils.loadRoundCircleImage(mContext, reader.getCoverImg(), imgIcon, SizeUtils.dp2px(mContext, 20));
         name.setText(reader.getTitle());
-        lookAmount.setText(reader.getPlayAmount());
-        likeAmount.setText(reader.getLikeAmount());
-        commentAmount.setText(reader.getCommentAmount());
-        favoritesAmount.setText(reader.getFavoritesAmount());
+        lookAmount.setText(EfunboxUtil.checkNum10000(reader.getPlayAmount()));
+        likeAmount.setText(EfunboxUtil.checkNum10000(reader.getLikeAmount()));
+        commentAmount.setText(EfunboxUtil.checkNum10000(reader.getCommentAmount()));
+        favoritesAmount.setText(EfunboxUtil.checkNum10000(reader.getFavoritesAmount()));
         switch (reader.getStatus()) {
             case "NORMAL":
                 checkLayout.setVisibility(View.GONE);
@@ -243,6 +250,19 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         }
     });
 
+    BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
+        @Override
+        public void pageBack(Intent intent) {
+            Logger.e("收到数据了");
+            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REF_USER_INFO)) {
+                //刷新一下用户信息
+                Logger.e("刷新用户数据");
+                getMyInfo();
+            }
+
+        }
+    };
+
 
 }
 

+ 20 - 7
app/src/main/java/com/edufound/reader/presenter/OthersRecordPresenter.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.presenter;
 
 import android.content.Intent;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.view.LayoutInflater;
@@ -14,6 +15,7 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.edufound.reader.R;
+import com.edufound.reader.activity.OthersRecordActivity;
 import com.edufound.reader.activity.SmallFullVideoActivity;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.base.BaseActivity;
@@ -25,9 +27,11 @@ import com.edufound.reader.bean.MyInfoBean;
 import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.contract.OthersRecordContract;
 import com.edufound.reader.model.CharacterFragmentModel;
+import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.model.OthersRecordModel;
 import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.MMKVUtil;
 import com.edufound.reader.util.SizeUtils;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
@@ -78,7 +82,7 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
         TextView favoritesAmount = view.findViewById(R.id.adapter_item_record_user_start_num);
         FrameLayout checkLayout = view.findViewById(R.id.adapter_item_record_user_examine_layout);
         GlideUtils.loadRoundCircleImage(mView.getActivity(), reader.getCoverImg(), imgIcon, SizeUtils.dp2px(mView.getActivity(), 20));
-        name.setText(reader.getTitle() + "--" + index);
+        name.setText(reader.getTitle());
         lookAmount.setText(reader.getPlayAmount());
         likeAmount.setText(reader.getLikeAmount());
         commentAmount.setText(reader.getCommentAmount());
@@ -88,9 +92,14 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
         checkLayout.setVisibility(View.GONE);
 
         mView.addUiClick(view, o -> {
-            Intent intent = new Intent(mView.getActivity(), SmallFullVideoActivity.class);
-            intent.putExtra("index", index + "");
-            mView.getActivity().startActivity(intent);
+            Bundle bundle = new Bundle();
+            bundle.putString("index", index + "");
+            bundle.putString("dataJson", "getmmkv");
+            //数据太多了。直接传不过去,通过MMKV写一下再读一下
+            MMKVUtil.getInstance().encode("example_video", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
+//            bundle.putString("dataJson", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
+            ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
+
         });
 
         checkLayout.setOnTouchListener(new View.OnTouchListener() {
@@ -123,7 +132,6 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
             message.obj = gridLayout;
             message.what = OthersRecordModel.LOAD_GRID;
             message.arg1 = j;
-            Logger.e("int j=" + j);
             otherRecordHandler.sendMessageDelayed(message, 50 * timeCount);
         }
         mListStart = mListEnd;
@@ -182,10 +190,15 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
     }
 
     @Override
-    public void onDestory(GridLayout layout) {
-        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+    public void sendBackReceiver(String action) {
+        Intent intent = new Intent(action);
         intent.putExtra("recordId", mDataList.get(0).getUserRead().getId());
         mView.getActivity().sendBroadcast(intent);
+    }
+
+    @Override
+    public void onDestory(GridLayout layout) {
+
         otherRecordHandler.removeMessages(CharacterFragmentModel.LOAD_GRID);
         otherRecordHandler = null;
         layout.removeAllViews();

+ 134 - 45
app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.presenter;
 
 import android.animation.LayoutTransition;
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Handler;
@@ -17,14 +18,25 @@ import com.edufound.reader.R;
 import com.edufound.reader.activity.MainActivity;
 import com.edufound.reader.adapter.PopupMyOrderAdapter;
 import com.edufound.reader.application.EApplication;
+import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.RecordResultBean;
+import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.listener.PopupRecordStatusListener;
 import com.edufound.reader.model.PopWindowModelImpl;
 import com.edufound.reader.popwindow.PopWindowUtil;
+import com.edufound.reader.util.Consts;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
+import com.okhttplib.callback.ProgressCallback;
 import com.orhanobut.logger.Logger;
 
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -33,12 +45,15 @@ import androidx.recyclerview.widget.RecyclerView;
 public class PopWindowPresneter {
 
     PopWindowModelImpl mModel;
+    ProgressCallback mUploadProgressBack;
+    Gson mGson;
 
     public PopWindowPresneter() {
         mModel = new PopWindowModelImpl();
+        mGson = new Gson();
     }
 
-    public void initRecordStatusWindow(Context context, View dialog_view, RecordResultBean bean, PopupRecordStatusListener listener) {
+    public void initRecordStatusWindow(Activity context, View dialog_view, RecordResultBean bean, UserRecordBean.UserRead userread, PopupRecordStatusListener listener) {
         FrameLayout mOverFrame = dialog_view.findViewById(R.id.popupwindow_record_status_over_frame);
         FrameLayout mUploadingFrame = dialog_view.findViewById(R.id.popupwindow_record_status_uploading_frame);
         FrameLayout mUploadingSuccessFrame = dialog_view.findViewById(R.id.popupwindow_record_status_uploading_success_frame);
@@ -57,16 +72,16 @@ public class PopWindowPresneter {
         Logger.e(" (speedd * 0.1):" + (speedd * 0.1));
         Logger.e("(tone * 0.1):" + (tone * 0.1));
         int startCount = 0;
-        if (score >= 0 && score < 20) {
+        if (score > 0 && score <= 20) {
             //1个星星
             startCount = 1;
-        } else if (score > 20 && score < 40) {
+        } else if (score > 20 && score <= 40) {
             //2个星星
             startCount = 2;
-        } else if (score > 40 && score < 60) {
+        } else if (score > 40 && score <= 60) {
             //3个星星
             startCount = 3;
-        } else if (score > 60 && score < 80) {
+        } else if (score > 60 && score <= 80) {
             //4个星星
             startCount = 4;
         } else if (score > 80 && score <= 100) {
@@ -108,7 +123,7 @@ public class PopWindowPresneter {
             correctrateText.post(new Runnable() {
                 @Override
                 public void run() {
-                    for (int correctrate = 0; correctrate < score; correctrate++) {
+                    for (int correctrate = 0; correctrate < accuracy; correctrate++) {
                         Message msg = new Message();
                         msg.obj = correctrateText;
                         msg.arg1 = correctrate + 1;
@@ -144,12 +159,125 @@ public class PopWindowPresneter {
 
                 }
             });
+
+            mUploadProgressBack = new ProgressCallback() {
+
+                @Override
+                public void onResponseMain(String filePath, HttpInfo info) {
+                    super.onResponseMain(filePath, info);
+                    Logger.e("onResponseMain");
+                    Logger.e("onResponseMain--netCode:" + info.getNetCode());
+
+                    if (info.getNetCode() == 200) {
+                        //上传完成了
+                        //上传成功逻辑
+                        {
+                            HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                            }.getType());
+                            Logger.e("filePath:" + bean.getData());
+
+                            //请求发布接口
+                            Map<String, String> postUserRead = new HashMap<>();
+                            postUserRead.put("audioPath", bean.getData());
+                            postUserRead.put("coverImg", userread.getCoverImg());
+                            postUserRead.put("exampleId", userread.getExampleId());
+                            postUserRead.put("originVideo", userread.getOriginVideo());
+                            postUserRead.put("shareImg", userread.getShareImg());
+                            postUserRead.put("title", userread.getTitle());
+                            postUserRead.put("type", "READ");
+                            postUserRead.put("uid", Consts.getUID());
+
+                            mModel.postUserRead(context, mGson.toJson(postUserRead), new Callback() {
+                                @Override
+                                public void onSuccess(HttpInfo info) throws IOException {
+                                    //发布朗读成功了,成功之后求情评测数据接口
+                                    Logger.e("发布朗读成功了:" + info.getRetDetail());
+                                    HttpResultBean<UserRecordBean.UserRead> read = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean.UserRead>>() {
+                                    }.getType());
+                                    Map<String, String> postAssessment = new HashMap<>();
+                                    postAssessment.put("complete", String.valueOf(integrity));
+                                    postAssessment.put("speed", String.valueOf(speedd));
+                                    postAssessment.put("intonation", String.valueOf(tone));
+                                    postAssessment.put("score", String.valueOf(score));
+                                    postAssessment.put("accuracy", String.valueOf(accuracy));
+                                    postAssessment.put("userReadId", read.getData().getId());
+                                    mModel.postAssessment(context, mGson.toJson(postAssessment), new Callback() {
+                                        @Override
+                                        public void onSuccess(HttpInfo info) throws IOException {
+                                            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();
+                                                    Toast.makeText(context, "去听听(首页->我的tab)", Toast.LENGTH_SHORT).show();
+                                                    for (int i = 0; i < EApplication.mActivityList.size(); i++) {
+                                                        EApplication.mActivityList.get(i).finish();
+                                                    }
+                                                    Intent intent = new Intent(context, MainActivity.class);
+                                                    intent.putExtra("defaultIndex", 0);
+                                                    context.startActivity(intent);
+                                                }
+                                            });
+                                        }
+
+                                        @Override
+                                        public void onFailure(HttpInfo info) throws IOException {
+                                            Logger.e("请求评测失败:" + info.getRetDetail());
+                                        }
+                                    });
+                                }
+
+                                @Override
+                                public void onFailure(HttpInfo info) throws IOException {
+                                    Logger.e("发布朗读失败了:" + info.getRetDetail());
+                                }
+                            });
+
+                        }
+                    } else {
+                        //失败逻辑
+                        {
+                            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();
+
+                                }
+                            });
+                            mReUpload.setOnClickListener(new View.OnClickListener() {
+                                @Override
+                                public void onClick(View view) {
+                                    Toast.makeText(context, "重新上传", Toast.LENGTH_SHORT).show();
+                                    mModel.upLoadRecord(context, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
+                                }
+                            });
+                        }
+                    }
+                }
+
+                @Override
+                public void onProgressAsync(int percent, long bytesWritten, long contentLength, boolean done) {
+                    super.onProgressAsync(percent, bytesWritten, contentLength, done);
+                }
+
+                @Override
+                public void onProgressMain(int percent, long bytesWritten, long contentLength, boolean done) {
+                    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);
+                    mModel.upLoadRecord(context, Consts.getRecordUpLoadFileUrl(), mUploadProgressBack);
+
                 }
             });
             mRePlay.setOnClickListener(new View.OnClickListener() {
@@ -162,45 +290,6 @@ public class PopWindowPresneter {
         }
 
 
-        //上传成功逻辑
-        //上传成功逻辑
-//        {
-//            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();
-//                    Toast.makeText(context, "去听听(首页->我的tab)", Toast.LENGTH_SHORT).show();
-//                    for (int i = 0; i < EApplication.mActivityList.size(); i++) {
-//                        EApplication.mActivityList.get(i).finish();
-//                    }
-//                    Intent intent = new Intent(context, MainActivity.class);
-//                    intent.putExtra("defaultIndex", 0);
-//                    context.startActivity(intent);
-//                }
-//            });
-//        }
-
-
-        //失败逻辑
-//        {
-//            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();
-//                }
-//            });
-//            mReUpload.setOnClickListener(new View.OnClickListener() {
-//                @Override
-//                public void onClick(View view) {
-//                    Toast.makeText(context, "重新上传", Toast.LENGTH_SHORT).show();
-//                }
-//            });
-//        }
     }
 
 

+ 121 - 17
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -15,7 +15,6 @@ import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.FavoritesBean;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.HttpResultDataListBean;
-import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.contract.RecommendFragmentContract;
 import com.edufound.reader.cusview.RvListJzvdStd;
@@ -42,7 +41,6 @@ import java.util.Map;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.OrientationHelper;
 import androidx.recyclerview.widget.RecyclerView;
-import cn.jzvd.JZUtils;
 import cn.jzvd.Jzvd;
 
 public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentContract.View> implements RecommendFragmentContract.Presenter {
@@ -53,12 +51,15 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     private int mCurrentPosition = 0;
     List<UserRecordBean> mDataList;
     SlideVideoAdapter mAdapter;
+    int loadType = 0;
+    int mTotalSize = 0;
+    int mPageIndex = 1;
+    boolean loadOver = false;
 
     public RecommendFragmentPresenter(Context context) {
         mModel = new RecommendFragmentModel();
         mContext = context;
-        BackPageReceiver.registerReceiver(context);
-        BackPageReceiver.registerBackPageReceiverListener(backListener);
+
     }
 
     @Override
@@ -74,30 +75,48 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             }
         });
         rv.setClipToOutline(true);
-
-
+        loadType = type;
         if (type == 0) {
             //推荐的接口
             initVideoDate(rv, startPosition);
             getRecommendDataList();
+            initBroadcastReceiver();
         } else if (type == 1) {
-            //关注的接口
+            //关注的所有人的所有视频
+            initVideoDate(rv, startPosition);
+            getMyFollowAllVideo();
+            initBroadcastReceiver();
         } else if (type == 2) {
-            //官方的
-        } else if (type == 3) {
-            //关注的人的
+            //上级页面传的json
+            mDataList = ((BaseActivity) mView.getActivity()).getGson().fromJson(mView.getDataJson(), new TypeToken<List<UserRecordBean>>() {
+            }.getType());
+            initVideoDate(rv, startPosition);
+            mView.getRootView().post(new Runnable() {
+                @Override
+                public void run() {
+                    mAdapter.notifyDataSetChanged();
+                }
+            });
         }
 
     }
 
 
+    public void initBroadcastReceiver() {
+        BackPageReceiver.registerReceiver(mContext, BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+        BackPageReceiver.registerBackPageReceiverListener(backListener);
+    }
+
+
     public void initVideoDate(RecyclerView rv, int startPosition) {
 
         rv.setLayoutManager(new LinearLayoutManager(mView.getActivity()));
         rv.setNestedScrollingEnabled(false);
         mViewPagerLayoutManager = new ViewPagerLayoutManager(mView.getActivity(), OrientationHelper.VERTICAL);
         rv.setLayoutManager(mViewPagerLayoutManager);
-        mDataList = new ArrayList<>();
+        if (mDataList == null) {
+            mDataList = new ArrayList<>();
+        }
         mAdapter = new SlideVideoAdapter(mView.getActivity(), mDataList);
         rv.setAdapter(mAdapter);
         mViewPagerLayoutManager.setOnViewPagerListener(new OnViewPagerListener() {
@@ -146,6 +165,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
         });
         if (startPosition > 0) {
             rv.scrollToPosition(startPosition);
+            mCurrentPosition = startPosition;
         }
     }
 
@@ -155,6 +175,15 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     }
 
     @Override
+    public Object getCurVideoExampleId() {
+        if (mDataList != null && mDataList.size() > 0) {
+
+            return mDataList.get(mCurrentPosition).getUserRead().getExampleId();
+        }
+        return -1;
+    }
+
+    @Override
     public void fragmentPause(RecyclerView rv) {
         if (rv.getChildCount() > 0) {
             RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
@@ -172,6 +201,11 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void getRecommendDataList() {
+//        if (mDataList != null && mDataList.size() >= mTotalSize) {
+//            loadOver = true;
+//            Toast.makeText(mContext, "没有更多了", Toast.LENGTH_SHORT).show();
+//            return;
+//        }
         if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
             //如果是空的,就是没选择过年纪。然后给个默认的一年级
             //PRESCHOOL,FIRST_GRADE,SECOND_GRADE,THIRD_GRADE,FOURTH_GRADE
@@ -184,13 +218,15 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
         if (Consts.getmConstsUserBean() == null) {
             grade = EfunboxUtil.getEnumByCNGrade("一年级");
         }
-        mModel.getRecommendList(mView.getActivity(), grade, (mCurrentPosition / 100) + 1, new Callback() {
+        Logger.e("请求推荐列表");
+        mModel.getRecommendList(mView.getActivity(), grade, mPageIndex, new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
                 HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
                 }.getType());
                 if (mDataList == null) {
                     mDataList = bean.getData().getList();
+                    mTotalSize = Integer.valueOf(bean.getData().getTotalSize());
                 } else {
                     mDataList.addAll(bean.getData().getList());
                     mAdapter.addMored(mDataList);
@@ -199,7 +235,10 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     @Override
                     public void run() {
                         mAdapter.notifyDataSetChanged();
+                        mPageIndex++;
                     }
+
+
                 });
             }
 
@@ -213,17 +252,27 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     @Override
     public void doFavorites(UserRecordBean.UserRead userRead) {
         Map<String, String> map = new HashMap<>();
-        map.put("exampleId", userRead.getExampleId());
-        map.put("targetCode", userRead.getExampleId());
+        map.put("targetCode", userRead.getId());
         String json = ((BaseActivity) mView.getActivity()).getGson().toJson(map);
         mModel.doFavorites(mView.getActivity(), json, new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
                 HttpResultBean<FavoritesBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<FavoritesBean>>() {
                 }.getType());
+
                 if (bean.getData().getStatus().equals("DEL")) {
+                    mDataList.get(mCurrentPosition).setFavorites(false);
+                    mDataList.get(mCurrentPosition).setFavoritesBean(null);
+                    if (Consts.isIsNeedRemoveBR()) {
+                        Logger.e("发送广播");
+                        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM);
+                        intent.putExtra("removePosition", String.valueOf(mCurrentPosition));
+                        mContext.sendBroadcast(intent);
+                    }
                     mView.setFavorites(false);
                 } else if (bean.getData().getStatus().equals("NORMAL")) {
+                    mDataList.get(mCurrentPosition).setFavorites(true);
+                    mDataList.get(mCurrentPosition).setFavoritesBean(null);
                     mView.setFavorites(true);
                 }
             }
@@ -253,7 +302,9 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     }
 
     @Override
-    public void destory() {
+    public void activityDestory() {
+        mDataList = null;
+        mAdapter = null;
         Jzvd.releaseAllVideos();
         Jzvd.backPress();
     }
@@ -282,6 +333,41 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     }
 
+    @Override
+    public void getMyFollowAllVideo() {
+//        if (mDataList != null && mDataList.size() >= mTotalSize) {
+//            loadOver = true;
+//            Toast.makeText(mContext, "没有更多了", Toast.LENGTH_SHORT).show();
+//            return;
+//        }
+        mModel.getMyFollowAllVideo(mView.getActivity(), mPageIndex, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
+                }.getType());
+                if (mDataList == null) {
+                    mDataList = bean.getData().getList();
+                    mTotalSize = Integer.valueOf(bean.getData().getTotalSize());
+                } else {
+                    mDataList.addAll(bean.getData().getList());
+                    mAdapter.addMored(mDataList);
+                }
+                mView.getRootView().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        mAdapter.notifyDataSetChanged();
+                        mPageIndex++;
+                    }
+                });
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
     private void autoPlayVideo(RecyclerView rv) {
         if (rv == null || rv.getChildAt(0) == null) {
             return;
@@ -303,6 +389,10 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                 player.setVideoCallBack(new RvListJzvdStd.VideoCallBack() {
                     @Override
                     public void onComplete() {
+                        if (mCurrentPosition >= mDataList.size() - 1) {
+                            Toast.makeText(mView.getActivity(), "全部播放完成", Toast.LENGTH_SHORT).show();
+                            mView.getActivity().finish();
+                        }
                         scrollToNextFunction(rv, true);
                     }
 
@@ -330,7 +420,8 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
         int childLayoutPosition = rv.getChildLayoutPosition(childAt);
         //如果不是最后一个就向下滑动
 
-        if (childLayoutPosition < rv.getAdapter().getItemCount() - 2) {
+
+        if (childLayoutPosition < rv.getAdapter().getItemCount() - 1) {
             if (needScroll) {
                 rv.smoothScrollToPosition(childLayoutPosition + 1);
             }
@@ -338,7 +429,20 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 //            Toast.makeText(this, "已滑动到底部了", Toast.LENGTH_LONG).show();
 //            CToast.makeText(mView.getActivity(), "滑动到最后一个啦", 3000).show();
 
-            getRecommendDataList();
+            if (loadOver) {
+                return;
+            }
+
+            switch (loadType) {
+                case 0:
+                    getRecommendDataList();
+                    break;
+                case 1:
+                    getMyFollowAllVideo();
+                    break;
+                case 2:
+                    break;
+            }
         }
     }
 

+ 105 - 33
app/src/main/java/com/edufound/reader/presenter/RecordPresenter.java

@@ -8,6 +8,7 @@ import android.media.MediaPlayer;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.util.Log;
+import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import android.widget.Toast;
@@ -15,21 +16,29 @@ import android.widget.Toast;
 import com.chivox.aiengine.EvalResult;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
+import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.RecordResultBean;
+import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.contract.RecordContract;
 import com.edufound.reader.cusview.FullScreenVideoController;
 import com.edufound.reader.cusview.RvListJzvdStd;
 import com.edufound.reader.listener.PopupRecordStatusListener;
 import com.edufound.reader.model.RecordModel;
 import com.edufound.reader.popwindow.PopWindowUtil;
+import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.services.RecordServices;
+import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.videoutil.JZMediaIjk;
 import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
 
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -41,7 +50,14 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
     RecordServices mRecordServices;
     RecordModel mModel;
-    RvListJzvdStd mVideoView;
+    String mReadId = null;
+    String exampleUrl = "";
+    String recordUrl = "";
+    UserRecordBean.UserRead mRecordUserRead;
+    //READ是用户在读,example是厅官方
+    String playType = "EXAMPLE";
+
+    boolean isRecording = false;
 
     public RecordPresenter() {
         this.mModel = new RecordModel();
@@ -49,11 +65,9 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
     }
 
     @Override
-    public void createVideoPlayer(FrameLayout frame) {
+    public void createVideoPlayer() {
         mView.showLoading();
-        mVideoView = new RvListJzvdStd(mView.getActivity());
-        mVideoView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
-        mVideoView.setVideoCallBack(new RvListJzvdStd.VideoCallBack() {
+        mView.getJZVideoView().setVideoCallBack(new RvListJzvdStd.VideoCallBack() {
             @Override
             public void onComplete() {
                 onVideoCompletion();
@@ -69,24 +83,59 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
                 onVideoInfoListener(what, extra);
             }
         });
-        frame.addView(mVideoView);
     }
 
     @Override
-    public void initVideoPlayer(Intent intent) {
+    public void getReadInfo(Intent intent) {
         Bundle params = intent.getBundleExtra("params_bundle");
-        String index = params.getString("index");
-        String play_url = params.getString("playUrl");
-        //play_url没传
-        play_url = "https://reader-wx.ai160.com/reader/resource/video/1610961140479648.mp4";
-        Toast.makeText(mView.getActivity(), "index:" + index, Toast.LENGTH_SHORT).show();
-        mVideoView.setUp(new JZDataSource(play_url), JzvdStd.SCREEN_FULLSCREEN, JZMediaIjk.class);
-//        mVideoView.startVideoAfterPreloading();
+        mReadId = params.getString("exampleId");
+        mModel.getReadInfo(mView.getActivity(), mReadId, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
+                }.getType());
+                mRecordUserRead = bean.getData().getUserRead();
+                exampleUrl = mRecordUserRead.getVideoPath();
+                recordUrl = mRecordUserRead.getOriginVideo();
+                GlideUtils.loadImageSizeKipMemoryCache(mView.getActivity(), mRecordUserRead.getCoverImg(), mView.getJZVideoView().posterImageView);
+                mView.getJZVideoView().setUp(new JZDataSource(exampleUrl), JzvdStd.SCREEN_FULLSCREEN, JZMediaIjk.class);
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
     }
 
     @Override
-    public void onVideoCompletion() {
+    public String getExampleUrl() {
+        return exampleUrl;
+    }
+
+    @Override
+    public String getRecordUrl() {
+        return recordUrl;
+    }
+
+    @Override
+    public void clickExampleUI() {
+        playType = "EXAMPLE";
+        initVideoPlayer(exampleUrl);
+        mView.getJZVideoView().startVideoAfterPreloading();
+    }
 
+    @Override
+    public void initVideoPlayer(String url) {
+        Logger.e("url:" + url);
+        mView.getJZVideoView().setUp(new JZDataSource(url), JzvdStd.SCREEN_FULLSCREEN, JZMediaIjk.class);
+    }
+
+    @Override
+    public void onVideoCompletion() {
+        if (playType.equals("READ")) {
+            stopRecord();
+        }
     }
 
     @Override
@@ -95,10 +144,12 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
             case -10000:
 //                mVideoHandler.sendEmptyMessage(DISCONNECT_NETWORK);
                 Toast.makeText(mView.getActivity(), "网络出现异常", Toast.LENGTH_SHORT).show();
+                mView.getActivity().finish();
                 break;
             default:
-                mVideoView.pauseVideo();
-                mVideoView.reset();
+                mView.getJZVideoView().pauseVideo();
+                mView.getJZVideoView().reset();
+                mView.getJZVideoView().onStatePreparingPlaying();
                 Toast.makeText(mView.getActivity(), "视频异常--what:" + what + "--extra:" + extra, Toast.LENGTH_SHORT).show();
                 mView.getActivity().finish();
                 break;
@@ -108,12 +159,16 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
     @Override
     public void onVideoInfoListener(int what, int extra) {
-        switch (what) {
-            case MediaPlayer.MEDIA_INFO_BUFFERING_START:
-                mView.showLoading();
-                break;
-            case MediaPlayer.MEDIA_INFO_BUFFERING_END:
-                mView.hideLoading();
+        Logger.e("状态:" + mView.getJZVideoView().state + "---+what:" + what);
+
+        switch (mView.getJZVideoView().state) {
+            case Jzvd.STATE_PLAYING:
+                //已经开始播放了
+                if (playType.equals("READ") && (mRecordServices.getIsRecording() == false)) {
+                    Logger.e("准备完毕,可以播放");
+                    mRecordServices.startRecord(mView.getActivity(), mRecordUserRead.getId(), mRecordUserRead.getLessonText());
+                    mView.getJZVideoView().setCanPause(false);
+                }
                 break;
         }
     }
@@ -122,17 +177,26 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
     public void addVideoController(FrameLayout frame) {
 //        mVideoController = (FrameLayout) LayoutInflater.from(mView.getActivity()).inflate(R.layout.player_controller, null);
 //        frame.addView(mVideoController);
-        frame.addView(new FullScreenVideoController(mView.getActivity()).getController());
+//        frame.addView(new FullScreenVideoController(mView.getActivity()).getController());
     }
 
     @Override
-    public void startRecord(String name, String refText) {
-        mRecordServices.startRecord(mView.getActivity(), name, refText);
+    public void startRecord() {
+        mView.hasShowOtherUI(View.INVISIBLE);
+        playType = "READ";
+        initVideoPlayer(recordUrl);
+        mView.getJZVideoView().startVideo();
     }
 
     @Override
     public void stopRecord() {
+        mView.hasShowOtherUI(View.VISIBLE);
+        mView.getJZVideoView().pauseVideo();
         mRecordServices.stopRecord();
+//        mView.getJZVideoView().setCanPause(true);
+//        initVideoPlayer(recordUrl);
+        mView.getJZVideoView().posterImageView.setVisibility(View.VISIBLE);
+
     }
 
     @Override
@@ -143,9 +207,12 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
     @Override
     public void activityDestroy() {
-        mVideoView.pauseVideo();
+        mView.getJZVideoView().pauseVideo();
+        mRecordServices.cancelRecord();
         Jzvd.releaseAllVideos();
-        mVideoView = null;
+//        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+////        intent.putExtra("recordId", );
+//        mView.getActivity().sendBroadcast(intent);
         recordServicesConn = null;
         mRecordServices = null;
     }
@@ -161,8 +228,8 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
     }
 
     @Override
-    public void showRecordStatusWindow(RecordResultBean bean) {
-        PopWindowUtil.showRecordStatusWindow(mView.getActivity(), mView.getRootView(), bean, new PopupRecordStatusListener() {
+    public void showRecordStatusWindow(RecordResultBean bean, UserRecordBean.UserRead userread) {
+        PopWindowUtil.showRecordStatusWindow(mView.getActivity(), mView.getRootView(), bean, userread, new PopupRecordStatusListener() {
             @Override
             public void clickReRecord() {
                 Toast.makeText(mView.getActivity(), "重新录制", Toast.LENGTH_SHORT).show();
@@ -199,7 +266,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
                 @Override
                 public void onRecordResult(String tokenId, EvalResult result) {
-                    Logger.e("录音停止");
+                    Logger.e("录音完成");
                     Log.e("com.edufound.reader", "record-result:" + result);
                     Log.e("com.edufound.reader", "record-result.text:" + result.text());
                     try {
@@ -214,10 +281,10 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
                         int integrity = Integer.valueOf(jsonObject.getString("integrity"));
                         //正确率
                         int accuracy = Integer.valueOf(jsonObject.getString("accuracy"));
-                        mVideoView.post(new Runnable() {
+                        mView.getJZVideoView().post(new Runnable() {
                             @Override
                             public void run() {
-                                showRecordStatusWindow(new RecordResultBean(overall, speed, tone, integrity, accuracy));
+                                showRecordStatusWindow(new RecordResultBean(overall, speed, tone, integrity, accuracy), mRecordUserRead);
                             }
                         });
                     } catch (JSONException e) {
@@ -236,6 +303,11 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
                 public void onRecordError(String tokenId, EvalResult result) {
                     Toast.makeText(mView.getActivity(), "录音失败:" + result.text(), Toast.LENGTH_SHORT).show();
                 }
+
+                @Override
+                public void onRecordStop() {
+                    Logger.e("录音停止");
+                }
             });
         }
 

+ 30 - 7
app/src/main/java/com/edufound/reader/presenter/SafflowerPresenter.java

@@ -1,5 +1,6 @@
 package com.edufound.reader.presenter;
 
+import android.content.Intent;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -10,6 +11,7 @@ import android.widget.TextView;
 
 import com.edufound.reader.R;
 import com.edufound.reader.adapter.SafflowerItemAdapter;
+import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.HttpResultDataListBean;
@@ -17,6 +19,7 @@ import com.edufound.reader.bean.SignInfoBean;
 import com.edufound.reader.bean.TaskBean;
 import com.edufound.reader.contract.SafflowerContract;
 import com.edufound.reader.model.SafflowerModel;
+import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.SizeUtils;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
@@ -36,15 +39,18 @@ public class SafflowerPresenter extends BasePresenter<SafflowerContract.View> im
     List<TaskBean> mDataList;
     List<SignInfoBean.SignInfoItemBean> mSignList;
     SafflowerItemAdapter mSafflowerItemAdapter;
+    UserApiServerImpl userApi;
 
     public SafflowerPresenter() {
         mModel = new SafflowerModel();
         mDataList = new ArrayList<>();
+        userApi = new UserApiServerImpl();
+
     }
 
     @Override
     public void initSignLayout(LinearLayout layout) {
-
+        layout.removeAllViews();
         if (mSignList != null && mSignList.size() > 0) {
             for (int i = 0; i < mSignList.size(); i++) {
                 View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_saffloer_sign_layout_item, null);
@@ -71,7 +77,6 @@ public class SafflowerPresenter extends BasePresenter<SafflowerContract.View> im
             return;
         }
 //        rv.setVisibility(View.VISIBLE);
-        Logger.e("設置:initRecyclearView");
         mSafflowerItemAdapter = new SafflowerItemAdapter(mView.getActivity(), mDataList);
         GridLayoutManager gridLayoutManager = new GridLayoutManager(mView.getActivity(), 2);
         gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
@@ -87,8 +92,6 @@ public class SafflowerPresenter extends BasePresenter<SafflowerContract.View> im
         mModel.getTask(mView.getActivity(), new HttpInfo.Builder(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取任务成功:" + info.getRetDetail());
-                Logger.e("uid:" + info.getHeads());
                 HttpResultBean<List<TaskBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<TaskBean>>>() {
                 }.getType());
                 if (mDataList == null || mDataList.size() <= 0) {
@@ -108,7 +111,6 @@ public class SafflowerPresenter extends BasePresenter<SafflowerContract.View> im
             @Override
             public void onFailure(HttpInfo info) throws IOException {
                 Logger.e("获取任务失败:" + info.getRetDetail());
-                Logger.e("uid:" + info.getHeads());
             }
         });
     }
@@ -118,11 +120,25 @@ public class SafflowerPresenter extends BasePresenter<SafflowerContract.View> im
         mModel.getSignInfo(mView.getActivity(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取签到信息成功:" + info.getRetDetail());
                 HttpResultBean<SignInfoBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<SignInfoBean>>() {
                 }.getType());
                 mSignList = bean.getData().getSignInfo();
-                mView.getSignInfoSuccess();
+                mView.getSignInfoSuccess(bean.getData().getContinuousDay());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public void loginSign() {
+        userApi.loginSign(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                getSignInfo();
             }
 
             @Override
@@ -132,4 +148,11 @@ public class SafflowerPresenter extends BasePresenter<SafflowerContract.View> im
         });
     }
 
+    @Override
+    public void activityDestory() {
+        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_USER_INFO);
+        mView.getActivity().sendBroadcast(intent);
+    }
+
+
 }

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

@@ -21,17 +21,17 @@ public class SmallFullVideoPresenter extends BasePresenter<SmallFullVideoContrac
         mModel = new SmallFullVideoModel();
         mFragmentManager = fragmentManager;
         mRecommendFragment = new RecommendFragment(2);
-//        mRecommendFragment.hiddenBottomView();
 
     }
 
 
     @Override
-    public void initFragment(int index) {
+    public void initFragment(int index, String dataJson) {
         FragmentTransaction transaction = mFragmentManager.beginTransaction();
         transaction.addToBackStack(null);
         transaction.replace(R.id.smallfull_fragment_layout, mRecommendFragment);
         mRecommendFragment.scrollPosition(index);
+        mRecommendFragment.setDataJson(dataJson);
         transaction.commit();
     }
 

+ 90 - 0
app/src/main/java/com/edufound/reader/presenter/UserInfoSettingPresenter.java

@@ -1,7 +1,97 @@
 package com.edufound.reader.presenter;
 
+import android.content.Intent;
+
+import com.edufound.reader.apiserver.UserApiServerImpl;
+import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
+import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.bean.MyInfoBean;
+import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.contract.UserInfoSettingContract;
+import com.edufound.reader.model.UserInfoSettingModel;
+import com.edufound.reader.receiver.BackPageReceiver;
+import com.edufound.reader.util.Consts;
+import com.google.gson.reflect.TypeToken;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
+import com.orhanobut.logger.Logger;
+
+import java.io.IOException;
 
 public class UserInfoSettingPresenter extends BasePresenter<UserInfoSettingContract.View> implements UserInfoSettingContract.Presenter {
+
+    UserInfoSettingModel mModel;
+    String mGradeEnum;
+
+
+    public UserInfoSettingPresenter() {
+        mModel = new UserInfoSettingModel();
+    }
+
+    @Override
+    public void getMyInfo() {
+        mModel.getMyInfo(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+
+                HttpResultBean<MyInfoBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<MyInfoBean>>() {
+                }.getType());
+                mView.getUserInfoSuccess(bean.getData().getUser());
+                mGradeEnum = bean.getData().getUser().getGrade();
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public String getGradeEnum() {
+
+        return mGradeEnum;
+    }
+
+    @Override
+    public void upadteMyInfo(UserBean bean) {
+        mModel.updateMyInfo(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(bean), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("更新信息成功:" + info.getRetDetail());
+                HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
+                }.getType());
+                mView.getUserInfoSuccess(bean.getData());
+                Consts.setmConstsUserBean(bean.getData());
+
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public void activityDestory() {
+        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_USER_INFO);
+        mView.getActivity().sendBroadcast(intent);
+    }
+
+    @Override
+    public void loginOut() {
+        mModel.loginOut(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                mView.loginOutSuccess();
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
 }

+ 19 - 2
app/src/main/java/com/edufound/reader/receiver/BackPageReceiver.java

@@ -5,6 +5,8 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 
+import com.orhanobut.logger.Logger;
+
 
 /**
  * 特定情况下页面返回上一个页面需要修改参数乱七八糟的
@@ -17,6 +19,17 @@ public class BackPageReceiver extends BroadcastReceiver {
      */
     public static final String BACK_HOME_REF_VIDEO_ITEM = "com.edufound.reader.back.home.ref.video.item";
 
+    /**
+     * 从小红花界面/个人信息修改界面回来刷新用户信息
+     */
+    public static final String BACK_HOME_REF_USER_INFO = "com.edufound.reader.back.home.ref.user.info";
+
+    /**
+     * 通知删除item
+     * */
+    public static final String BACK_HOME_REMOVE_VIDEO_ITEM="com.edufound.reader.back.home.remove.video.item";
+
+
     private static boolean isRegister = false;
 
     private static onBackPage mBackListener;
@@ -30,8 +43,12 @@ public class BackPageReceiver extends BroadcastReceiver {
         mBackListener.pageBack(intent);
     }
 
-    public static void registerReceiver(Context context) {
-        IntentFilter intentFilter = new IntentFilter(BACK_HOME_REF_VIDEO_ITEM);
+    public static void registerReceiver(Context context, String action) {
+
+        if(action.equals(BACK_HOME_REMOVE_VIDEO_ITEM)){
+            Logger.e("注册删除广播");
+        }
+        IntentFilter intentFilter = new IntentFilter(action);
         context.registerReceiver(BackPageReceiver.InstanceHolder.INSTANCE, intentFilter);
         isRegister = true;
     }

+ 26 - 4
app/src/main/java/com/edufound/reader/services/RecordServices.java

@@ -38,7 +38,8 @@ public class RecordServices extends Service {
     private String recFilePath;
     private String mUploadBody;
     private RecordCallBack mRecordCallBack;
-    boolean onInit = false;
+    boolean isRecording = false;
+
 
     @Nullable
     @Override
@@ -145,7 +146,7 @@ public class RecordServices extends Service {
                 RECORD_DIR = Consts.getmApplicAtion().getDir("record", MODE_PRIVATE).getAbsolutePath();
             }
             File savepath = new File(RECORD_DIR + "/" + name + ".wav");
-            Logger.e("录音保存地址:" + savepath.getAbsolutePath());
+            Consts.setmRecordSaveFile(savepath);
             innerRecorder.recordParam.saveFile = savepath;
             StringBuilder tokenId = new StringBuilder();
             RetValue ret = mAiengine.start(context, innerRecorder, tokenId, param, new EvalResultListener() {
@@ -159,6 +160,7 @@ public class RecordServices extends Service {
                     mRecordCallBack.onRecordResult(tokenid, evalResult);
                     recFilePath = evalResult.recFilePath();
                     Logger.e("recFilePath:" + recFilePath);
+                    Consts.setRecordUpLoadFileUrl(recFilePath);
                 }
 
                 @Override
@@ -183,6 +185,7 @@ public class RecordServices extends Service {
             });
             Logger.e(" ret.errId:" + ret.errId);
             if (0 == ret.errId) {
+                isRecording = true;
                 mRecordCallBack.onRecordStart();
             } else {
                 return;
@@ -202,7 +205,8 @@ public class RecordServices extends Service {
         }
         RetValue ret = mAiengine.stop();
         if (0 == ret.errId) {
-//            mRecordCallBack!!.onRecordStop(1, "", null)
+            isRecording = false;
+            mRecordCallBack.onRecordStop();
         }
     }
 
@@ -215,10 +219,19 @@ public class RecordServices extends Service {
             return;
         }
         mAiengine.cancel();
+        isRecording = false;
         mRecordCallBack.onRecordCancel();
     }
 
 
+    /**
+     * 是否在录音中
+     */
+    public boolean getIsRecording() {
+        return isRecording;
+    }
+
+
     /*
      * 重播刚刚录音的音频
      * */
@@ -241,6 +254,14 @@ public class RecordServices extends Service {
         });
     }
 
+    @Override
+    public void onDestroy() {
+        if (mAiengine != null) {
+            mAiengine.destroy();
+        }
+        super.onDestroy();
+    }
+
     /*
      * 取消播放录音的音频
      * */
@@ -257,12 +278,13 @@ public class RecordServices extends Service {
     public interface RecordCallBack {
         void onRecordStart();
 
-
         void onRecordResult(String tokenId, EvalResult result);
 
         void onRecordCancel();
 
         void onRecordError(String tokenId, EvalResult result);
+
+        void onRecordStop();
     }
 
 }

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

@@ -4,6 +4,9 @@ import android.app.Application;
 
 import com.edufound.reader.bean.UserBean;
 
+import java.io.File;
+import java.util.Map;
+
 public class Consts {
     private static Application mApplicAtion;
 
@@ -23,6 +26,37 @@ public class Consts {
 
     private static String UID = "";
 
+    private static boolean isNeedRemoveBR = false;
+
+    private static String recordUpLoadFileUrl = "";
+
+    private static File mRecordSaveFile = null;
+
+    public static File getmRecordSaveFile() {
+        return mRecordSaveFile;
+    }
+
+    public static void setmRecordSaveFile(File mRecordSaveFile) {
+        Consts.mRecordSaveFile = mRecordSaveFile;
+    }
+
+    public static String getRecordUpLoadFileUrl() {
+        return recordUpLoadFileUrl;
+    }
+
+    public static void setRecordUpLoadFileUrl(String recordUpLoadFileUrl) {
+        Consts.recordUpLoadFileUrl = recordUpLoadFileUrl;
+    }
+
+    public static boolean isIsNeedRemoveBR() {
+        return isNeedRemoveBR;
+    }
+
+    public static void setIsNeedRemoveBR(boolean isNeedRemoveBR) {
+        Consts.isNeedRemoveBR = isNeedRemoveBR;
+    }
+
+
     public static String getUID() {
         return UID;
     }
@@ -39,6 +73,7 @@ public class Consts {
         Consts.mApplicAtion = mApplicAtion;
     }
 
+
     public static int[] getScreenSize() {
         return screenSize;
     }

+ 19 - 2
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -93,8 +93,8 @@ public class EfunboxUtil {
         return "undefinde";
     }
 
-    public static String getCNGradeByEnum(String cnGrade) {
-        switch (cnGrade) {
+    public static String getCNGradeByEnum(String gradeEnum) {
+        switch (gradeEnum) {
             case "PRIMARY_FIRST_GRADE":
                 return "一年级";
             case "PRIMARY_SECOND_GRADE":
@@ -109,6 +109,23 @@ public class EfunboxUtil {
         return "undefinde";
     }
 
+    public static int getIndexGradeByEnum(String gradeEnum) {
+        switch (gradeEnum) {
+            case "PRIMARY_FIRST_GRADE":
+                return 0;
+            case "PRIMARY_SECOND_GRADE":
+                return 1;
+            case "PRIMARY_THREE_GRADE":
+                return 2;
+            case "PRIMARY_SENIOR_GRADE":
+                return 3;
+            case "PRESCHOOL":
+                return 4;
+        }
+        return -1;
+    }
+
+
     public static boolean checkLogin(Context context) {
         if (!Consts.getUID().equals("test")) {
             //已登录

+ 6 - 0
app/src/main/java/com/edufound/reader/util/OkHttpClient.java

@@ -9,6 +9,7 @@ import com.okhttplib.OkHttpUtil;
 import com.okhttplib.annotation.CacheType;
 import com.okhttplib.annotation.Encoding;
 import com.okhttplib.callback.BaseCallback;
+import com.okhttplib.callback.ProgressCallback;
 import com.okhttplib.cookie.PersistentCookieJar;
 import com.okhttplib.cookie.cache.SetCookieCache;
 import com.okhttplib.cookie.persistence.SharedPrefsCookiePersistor;
@@ -70,6 +71,11 @@ public class OkHttpClient {
         Logger.e("postUid:" + Consts.getUID());
         OkHttpUtil.getDefault(activity).doDeleteAsync(info.addHead("uid", Consts.getUID()).build(), callback);
     }
+
+    public static void doUploadFile(Activity activity, HttpInfo.Builder info) {
+        Logger.e("postUid:" + Consts.getUID());
+        OkHttpUtil.getDefault(activity).doUploadFileAsync(info.addHead("uid", Consts.getUID()).build());
+    }
 }
 
 

BIN
app/src/main/res/drawable/activity_userinfo_setting_boy.png


BIN
app/src/main/res/drawable/activity_userinfo_setting_girl.png


+ 2 - 2
app/src/main/res/layout/activity_comment.xml

@@ -11,8 +11,8 @@
 
     <FrameLayout
             android:id="@+id/frameLayout"
-            android:layout_width="720dp"
-            android:layout_height="560dp"
+            android:layout_width="1280dp"
+            android:layout_height="720dp"
             android:layout_gravity="center"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"

+ 8 - 2
app/src/main/res/layout/activity_record.xml

@@ -4,13 +4,19 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_gravity="center"
-        android:background="@color/blueviolet">
+        android:background="@color/black">
 
     <FrameLayout
             android:id="@+id/player_frame"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_gravity="center"></FrameLayout>
+            android:layout_gravity="center">
+
+        <com.edufound.reader.cusview.RvListJzvdStd
+                android:id="@+id/activity_record_jzvideo"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"></com.edufound.reader.cusview.RvListJzvdStd>
+    </FrameLayout>
 
     <FrameLayout
             android:layout_width="1280dp"

+ 1 - 1
app/src/main/res/layout/activity_saffloer.xml

@@ -56,7 +56,7 @@
                         app:layout_constraintTop_toTopOf="parent"></TextView>
 
                 <TextView
-                        android:id="@+id/textView5"
+                        android:id="@+id/activity_saffloer_sign_day"
                         android:layout_width="200dp"
                         android:layout_height="46dp"
                         android:layout_marginTop="44dp"

+ 22 - 7
app/src/main/res/layout/activity_userinfo_setting.xml

@@ -4,7 +4,9 @@
         xmlns:roundframelayout="http://schemas.android.com/apk/res-auto"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:clickable="true"
+        android:focusableInTouchMode="true">
 
 
     <FrameLayout
@@ -12,6 +14,8 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="#70C1FF"
+            android:clickable="true"
+            android:focusableInTouchMode="true"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
@@ -21,6 +25,8 @@
     <LinearLayout
             android:layout_width="1280dp"
             android:layout_height="720dp"
+            android:clickable="true"
+            android:focusableInTouchMode="true"
             android:orientation="vertical"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintDimensionRatio="h,16:9"
@@ -88,13 +94,12 @@
                                     <FrameLayout
                                             android:layout_width="188dp"
                                             android:layout_height="188dp"
-                                            android:layout_gravity="center"
-                                            android:background="@color/white">
+                                            android:layout_gravity="center">
 
                                         <ImageView
+                                                android:id="@+id/activity_userinfo_setting_userhead"
                                                 android:layout_width="match_parent"
                                                 android:layout_height="match_parent"
-                                                android:padding="8dp"
                                                 android:src="@color/red"></ImageView>
                                     </FrameLayout>
                                 </com.edufound.reader.cusview.RoundFrameLayout>
@@ -129,14 +134,21 @@
                                             android:layout_marginLeft="11dp"
                                             android:background="@drawable/activity_userinfo_setting_item_bg">
 
-                                        <TextView
+                                        <EditText
+                                                android:id="@+id/activity_userinfo_setting_nickname"
                                                 android:layout_width="match_parent"
                                                 android:layout_height="match_parent"
+                                                android:background="@color/transparent"
                                                 android:gravity="center|left"
+                                                android:hint="请输入昵称"
+                                                android:imeOptions="actionDone"
+                                                android:lines="1"
+                                                android:maxLength="6"
                                                 android:paddingLeft="35dp"
-                                                android:text="喔喔奶糖奶糖"
+                                                android:singleLine="true"
+                                                android:text=""
                                                 android:textColor="@color/white"
-                                                android:textSize="36dp"></TextView>
+                                                android:textSize="36dp"></EditText>
                                     </FrameLayout>
                                 </LinearLayout>
 
@@ -163,6 +175,7 @@
                                             android:showDividers="middle">
 
                                         <FrameLayout
+                                                android:id="@+id/activity_userinfo_setting_gender_male"
                                                 android:layout_width="191dp"
                                                 android:layout_height="60dp"
                                                 android:background="@drawable/activity_userinfo_setting_item_sex_true_bg">
@@ -179,6 +192,7 @@
                                         </FrameLayout>
 
                                         <FrameLayout
+                                                android:id="@+id/activity_userinfo_setting_gender_female"
                                                 android:layout_width="191dp"
                                                 android:layout_height="60dp"
                                                 android:background="@drawable/activity_userinfo_setting_item_sex_bg">
@@ -217,6 +231,7 @@
                                             android:background="@drawable/activity_userinfo_setting_item_grade_bg">
 
                                         <TextView
+                                                android:id="@+id/activity_userinfo_setting_grade"
                                                 android:layout_width="match_parent"
                                                 android:layout_height="match_parent"
                                                 android:gravity="center|left"

+ 10 - 8
app/src/main/res/layout/cusjzplayer_controller.xml

@@ -187,10 +187,10 @@
 
     <LinearLayout
             android:id="@+id/loading_layout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerHorizontal="true"
-            android:layout_centerVertical="true"
+            android:layout_width="500dp"
+            android:layout_height="150dp"
+            android:layout_centerInParent="true"
+            android:gravity="center"
             android:orientation="horizontal">
 
         <ProgressBar
@@ -199,12 +199,13 @@
                 android:layout_height="@dimen/jz_start_button_w_h_normal"
                 android:layout_centerHorizontal="true"
                 android:layout_centerVertical="true"
+                android:layout_gravity="center"
                 android:indeterminateDrawable="@drawable/jz_loading"
                 android:visibility="visible" />
 
 
         <TextView
-                android:layout_width="wrap_content"
+                android:layout_width="300dp"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center"
                 android:layout_marginLeft="30dp"
@@ -217,11 +218,12 @@
 
     <LinearLayout
             android:id="@+id/start_layout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="150dp"
+            android:layout_height="150dp"
             android:layout_centerHorizontal="true"
             android:layout_centerVertical="true"
-            android:layout_gravity="center_vertical">
+            android:layout_gravity="center_vertical"
+            android:gravity="center">
 
         <ImageView
                 android:id="@+id/start"

+ 1 - 1
app/src/main/res/layout/fragment_main_character.xml

@@ -67,7 +67,7 @@
                         android:layout_height="wrap_content"
                         android:gravity="center|left"
                         android:paddingLeft="10dp"
-                        android:text="全部作品"
+                        android:text="全部资源"
                         android:textColor="@color/white"
                         android:textSize="26dp"></TextView>
 

+ 23 - 4
app/src/main/res/layout/fragment_main_user.xml

@@ -61,8 +61,7 @@
                                         android:id="@+id/fragment_main_user_head"
                                         android:layout_width="102dp"
                                         android:layout_height="102dp"
-                                        android:layout_gravity="center"
-                                        android:background="@color/wheat"></ImageView>
+                                        android:layout_gravity="center"></ImageView>
                             </FrameLayout>
 
                             <FrameLayout
@@ -199,12 +198,32 @@
                             android:orientation="horizontal"
                             android:showDividers="middle">
 
-                        <ImageView
+                        <FrameLayout
                                 android:id="@+id/fragment_main_user_vip"
                                 android:layout_width="0dp"
                                 android:layout_height="match_parent"
                                 android:layout_weight="1"
-                                android:src="@drawable/fragment_my_vip"></ImageView>
+                                android:background="@drawable/fragment_my_redflower">
+
+                            <ImageView
+
+                                    android:layout_width="match_parent"
+                                    android:layout_height="match_parent"
+                                    android:src="@drawable/fragment_my_vip"></ImageView>
+
+                            <TextView
+                                    android:id="@+id/fragment_main_user_vip_date"
+                                    android:layout_width="match_parent"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center|bottom"
+                                    android:layout_marginBottom="8dp"
+                                    android:gravity="center"
+                                    android:text="到期:2020-01-06"
+                                    android:textColor="@color/white"
+                                    android:textSize="26dp"
+                                    android:visibility="invisible"></TextView>
+                        </FrameLayout>
+
 
                         <FrameLayout
                                 android:id="@+id/fragment_main_user_redflower"