Bläddra i källkod

1.增加模板
2.小爱音响支付
3.抵用券活动

FailedToRead 2 år sedan
förälder
incheckning
ab4585b4b4
66 ändrade filer med 2088 tillägg och 290 borttagningar
  1. 0 1
      .idea/gradle.xml
  2. 24 5
      .idea/misc.xml
  3. 15 11
      app/build.gradle
  4. 7 0
      app/src/activityLoginAlert/drawable/main_left_tab_character_small_selector.xml
  5. 7 0
      app/src/activityLoginAlert/drawable/main_left_tab_event_selector.xml
  6. 7 0
      app/src/activityLoginAlert/drawable/main_left_tab_follow_small_selector.xml
  7. 7 0
      app/src/activityLoginAlert/drawable/main_left_tab_myinfo_small_selector.xml
  8. 7 0
      app/src/activityLoginAlert/drawable/main_left_tab_recommend_small_selector.xml
  9. 81 0
      app/src/exception/layout/adapter_item_cusview_model_view_d.xml
  10. 48 0
      app/src/exception/layout/cusview_model_view_d.xml
  11. BIN
      app/src/fragmentUser/drawable/main_left_tab_layout_character_small.png
  12. BIN
      app/src/fragmentUser/drawable/main_left_tab_layout_character_small_s.png
  13. BIN
      app/src/fragmentUser/drawable/main_left_tab_layout_small_follow.png
  14. BIN
      app/src/fragmentUser/drawable/main_left_tab_layout_small_follow_s.png
  15. BIN
      app/src/fragmentUser/drawable/main_left_tab_layout_small_recommend.png
  16. BIN
      app/src/fragmentUser/drawable/main_left_tab_layout_small_recommend_s.png
  17. BIN
      app/src/fragmentUser/drawable/main_tab_layout_small_event.png
  18. BIN
      app/src/fragmentUser/drawable/main_tab_layout_small_event_s.png
  19. BIN
      app/src/fragmentUser/drawable/main_tab_layout_small_myinfo.png
  20. BIN
      app/src/fragmentUser/drawable/main_tab_layout_small_myinfo_s.png
  21. 19 30
      app/src/main/AndroidManifest.xml
  22. 70 24
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  23. 1 1
      app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java
  24. 1 1
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  25. 0 36
      app/src/main/java/com/edufound/reader/activity/TextActivity.java
  26. 0 1
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  27. 82 2
      app/src/main/java/com/edufound/reader/activity/WebActivity.java
  28. 74 0
      app/src/main/java/com/edufound/reader/adapter/FragmentEventAdapter.java
  29. 1 1
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  30. 7 0
      app/src/main/java/com/edufound/reader/apiserver/ActivityEventServerImpl.java
  31. 0 1
      app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java
  32. 1 2
      app/src/main/java/com/edufound/reader/application/EApplication.java
  33. 3 4
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  34. 1 0
      app/src/main/java/com/edufound/reader/base/BaseFragment.java
  35. 132 0
      app/src/main/java/com/edufound/reader/bean/EventListBean.java
  36. 5 0
      app/src/main/java/com/edufound/reader/bean/ThroughType.java
  37. 20 0
      app/src/main/java/com/edufound/reader/contract/EventFragmentContract.java
  38. 17 0
      app/src/main/java/com/edufound/reader/contract/WebContract.java
  39. 55 0
      app/src/main/java/com/edufound/reader/cusview/ModelViewA.java
  40. 109 0
      app/src/main/java/com/edufound/reader/cusview/ModelViewB.java
  41. 140 0
      app/src/main/java/com/edufound/reader/cusview/ModelViewC.java
  42. 98 0
      app/src/main/java/com/edufound/reader/cusview/ModelViewD.java
  43. 54 0
      app/src/main/java/com/edufound/reader/cusview/ModelViewWidthA.java
  44. 93 0
      app/src/main/java/com/edufound/reader/fragment/EventFragment.java
  45. 9 5
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  46. 59 0
      app/src/main/java/com/edufound/reader/jsinterfaces/WebActivityJsInterfaces.java
  47. 6 0
      app/src/main/java/com/edufound/reader/model/EventFragmentModel.java
  48. 62 0
      app/src/main/java/com/edufound/reader/presenter/EventFragmentPresenter.java
  49. 1 1
      app/src/main/java/com/edufound/reader/presenter/LoginAlertPresenter.java
  50. 175 57
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  51. 4 1
      app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java
  52. 40 7
      app/src/main/java/com/edufound/reader/presenter/PayPresenter.java
  53. 0 1
      app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java
  54. 100 10
      app/src/main/java/com/edufound/reader/presenter/WebPresenter.java
  55. 5 1
      app/src/main/java/com/edufound/reader/tmailsdk/TMailSDKUtil.java
  56. 12 0
      app/src/main/java/com/edufound/reader/util/Consts.java
  57. 47 26
      app/src/main/java/com/edufound/reader/util/EfunboxUtil.java
  58. 38 0
      app/src/main/java/com/edufound/reader/util/HorizontalItemDecoration.java
  59. 3 0
      app/src/main/java/com/edufound/reader/util/HttpInterceptor.java
  60. BIN
      app/src/main/res/drawable/activity_web_qrcode_bg.png
  61. 11 1
      app/src/main/res/layout/activity_main.xml
  62. 41 0
      app/src/main/res/layout/activity_web.xml
  63. 47 0
      app/src/main/res/layout/adapter_item_cusview_model_view_c.xml
  64. 171 0
      app/src/main/res/layout/cusview_model_view_c.xml
  65. 52 60
      app/src/main/res/layout/fragment_main_character.xml
  66. 19 0
      app/src/main/res/layout/fragment_main_event.xml

+ 0 - 1
.idea/gradle.xml

@@ -16,7 +16,6 @@
             <option value="$PROJECT_DIR$/app" />
           </set>
         </option>
-        <option name="resolveModulePerSourceSet" value="false" />
       </GradleProjectSettings>
     </option>
   </component>

+ 24 - 5
.idea/misc.xml

@@ -114,8 +114,18 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" value="0.4699248120300752" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/activity_loginalert_check_selector.xml" value="0.2165" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/activity_saffloer_window_item_divier.xml" value="0.2165" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_character_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_character_small)selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_character_small_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_event_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_follow_small_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_myinfo_small_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/activityLoginAlert/drawable/main_left_tab_recommend_small_selector.xml" value="0.2185" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/drawable/adapter_item_video_tab_item_bg.xml" value="0.2165" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/drawable/list_divider_horizontal.xml" value="0.2185" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/layout/activity_event_pay.xml" value="0.22" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/layout/adapter_item_cusview_model_view_d.xml" value="0.33" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/layout/cusview_model_view_d.xml" value="0.22992700729927007" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/exception/layout/popupwindow_webs_events.xml" value="0.2572992700729927" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/drawable/activity_comment_quick_item_one_bg.xml" value="0.2165" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/drawable/slidevideo_switch_track_selector.xml" value="0.2005" />
@@ -123,6 +133,7 @@
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/layout/popupwindow_myorder.xml" value="0.2871046228710462" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentRecommend/layout/popupwindow_record_remove.xml" value="0.2913625304136253" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/activity_smallfull_video.xml" value="0.21897810218978103" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/adapter_item_record_authority.xml" value="0.9846547314578005" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_bind_wechat.xml" value="0.2913625304136253" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_cancellation_account.xml" value="0.2913625304136253" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_exit_login.xml" value="0.2384428223844282" />
@@ -130,10 +141,13 @@
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/activity_comment_item_divier.xml" value="0.2005" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/activity_saffloer_task_divier.xml" value="0.2165" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/cusjzplayer_controller_seekbar.xml" value="0.2165" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/main_left_tab_character_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/main_left_tab_myinfo_selector.xml" value="0.2185" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/drawable/main_left_tab_recommend_selector.xml" value="0.2185" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_alert_login.xml" value="0.33" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_comment.xml" value="0.1873479318734793" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_event_pay_item.xml" value="0.75" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_main.xml" value="0.2" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_main.xml" value="0.16" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_misound_pay.xml" value="0.25669099756691" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_otherrecord.xml" value="0.30900243309002434" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_pay.xml" value="0.22" />
@@ -143,14 +157,19 @@
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.75" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer.xml" value="0.5" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_test.xml" value="0.24452554744525548" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_userinfo_setting.xml" value="0.5" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_web.xml" value="0.2" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_userinfo_setting.xml" value="0.5185676392572944" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/activity_web.xml" value="0.18" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_cusview_model_view_c.xml" value="0.25" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_popupwindow_myorder.xml" value="0.75" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_record_user.xml" value="1.0" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/adapter_item_slidevideo.xml" value="0.2975260416666667" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/cusview_model_view_c.xml" value="0.33" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/fragment_main_character.xml" value="0.2615571776155718" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/fragment_main_user.xml" value="0.67" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/fragment_main_event.xml" value="0.16" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/fragment_main_user.xml" value="0.16" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/player_controller.xml" value="0.25790754257907544" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/popupwindow_exit_app.xml" value="0.2402676399026764" />
-        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/popupwindow_mi_sound_qrcode_layout.xml" value="0.5" />
+        <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/popupwindow_mi_sound_qrcode_layout.xml" value="0.18" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/popupwindow_record_status.xml" value="0.2451338199513382" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/popupwindow_registration_events.xml" value="0.25" />
         <entry key="..\:/Work_Space/Android_Space/efunboxReader/efunboxReader-android-master/app/src/main/res/layout/window_deviceinfo.xml" value="0.22262773722627738" />

+ 15 - 11
app/build.gradle

@@ -12,31 +12,34 @@ android {
 
     defaultConfig {
         applicationId "com.edufound.reader"
-        minSdkVersion 26
+        minSdkVersion 26 //>23导致无法直接签名
         targetSdkVersion 30
         versionCode 20
         versionName "2.0"
         flavorDimensions "versionCode"
         manifestPlaceholders = [UMENG_CHANNEL_VALUE: "2006"]//添加一个默认渠道号
-        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
         ndk {
             abiFilters "armeabi-v7a"
         }
     }
     signingConfigs {
-        efunbox {
+        efunboxKey {
             keyAlias "edufound_key"
             keyPassword "edufound321"
             storeFile file("C:/Users/candy/Desktop/efunbox/edufound.keystore")
             storePassword "edufound123"
+            v1SigningEnabled true
+            v2SigningEnabled true
+
+
         }
+
     }
     buildTypes {
         release {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-            signingConfig signingConfigs.efunbox
-            zipAlignEnabled true
+            signingConfig signingConfigs.efunboxKey
             applicationVariants.all { variant ->
                 variant.outputs.each { output ->
                     def outputFile = output.outputFileName
@@ -52,11 +55,12 @@ android {
                 }
 
             }
+
         }
         debug {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-            signingConfig signingConfigs.efunbox
+            signingConfig signingConfigs.efunboxKey
             zipAlignEnabled true
         }
     }
@@ -78,7 +82,7 @@ android {
     productFlavors {
         //义方
         channel_efunbox {
-            signingConfig signingConfigs.efunbox
+            signingConfig signingConfigs.efunboxKey
             manifestPlaceholders = [
                     appCode: "3006",
                     appIcon: "@drawable/icon",
@@ -86,7 +90,7 @@ android {
         }
         //百度(小度音响)
         channel_baidu {
-            signingConfig signingConfigs.efunbox
+            signingConfig signingConfigs.efunboxKey
             manifestPlaceholders = [
                     appCode: "3003",
                     appIcon: "@drawable/icon",
@@ -94,7 +98,7 @@ android {
         }
         //天猫精灵
         channel_tmail {
-            signingConfig signingConfigs.efunbox
+            signingConfig signingConfigs.efunboxKey
             manifestPlaceholders = [
                     appCode: "3002",
                     appIcon: "@drawable/icon",
@@ -103,7 +107,7 @@ android {
         //小爱音响
         channel_xayx {
             applicationIdSuffix ".xiaoai"
-            signingConfig signingConfigs.efunbox
+            signingConfig signingConfigs.efunboxKey
             manifestPlaceholders = [
                     appCode: "2016",
                     appIcon: "@drawable/icon",
@@ -119,7 +123,7 @@ android {
         targetCompatibility JavaVersion.VERSION_1_8
     }
     aaptOptions {
-        additionalParameters =["--warn-manifest-validation"]
+        additionalParameters = ["--warn-manifest-validation"]
 
     }
 }

+ 7 - 0
app/src/activityLoginAlert/drawable/main_left_tab_character_small_selector.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/main_left_tab_layout_character_small_s" android:state_selected="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_character_small_s" android:state_checked="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_character_small_s" android:state_pressed="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_character_small" />
+</selector>

+ 7 - 0
app/src/activityLoginAlert/drawable/main_left_tab_event_selector.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/main_tab_layout_small_event_s" android:state_selected="true" />
+    <item android:drawable="@drawable/main_tab_layout_small_event_s" android:state_checked="true" />
+    <item android:drawable="@drawable/main_tab_layout_small_event_s" android:state_pressed="true" />
+    <item android:drawable="@drawable/main_tab_layout_small_event" />
+</selector>

+ 7 - 0
app/src/activityLoginAlert/drawable/main_left_tab_follow_small_selector.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/main_left_tab_layout_small_follow_s" android:state_selected="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_small_follow_s" android:state_checked="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_small_follow_s" android:state_pressed="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_small_follow" />
+</selector>

+ 7 - 0
app/src/activityLoginAlert/drawable/main_left_tab_myinfo_small_selector.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/main_tab_layout_small_myinfo_s" android:state_selected="true" />
+    <item android:drawable="@drawable/main_tab_layout_small_myinfo_s" android:state_checked="true" />
+    <item android:drawable="@drawable/main_tab_layout_small_myinfo_s" android:state_pressed="true" />
+    <item android:drawable="@drawable/main_tab_layout_small_myinfo" />
+</selector>

+ 7 - 0
app/src/activityLoginAlert/drawable/main_left_tab_recommend_small_selector.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/main_left_tab_layout_small_recommend_s" android:state_selected="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_small_recommend_s" android:state_checked="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_small_recommend_s" android:state_pressed="true" />
+    <item android:drawable="@drawable/main_left_tab_layout_small_recommend" />
+</selector>

+ 81 - 0
app/src/exception/layout/adapter_item_cusview_model_view_d.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="299dp"
+    android:layout_height="235dp"
+    android:layout_gravity="center"
+    android:paddingLeft="10dp"
+    android:paddingTop="10dp"
+    android:paddingRight="10dp">
+
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/blueviolet"></ImageView>
+
+    <ImageView
+        android:id="@+id/adapter_item_cusview_model_view_d_icon"
+        android:layout_width="260dp"
+        android:layout_height="146dp"
+        android:layout_marginTop="10dp"
+        android:background="@color/red"
+        android:scaleType="fitXY"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></ImageView>
+
+    <TextView
+        android:id="@+id/adapter_item_cusview_model_view_d_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="12dp"
+        android:text="春夏秋冬"
+        android:textColor="#314051"
+        android:textSize="18dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintStart_toStartOf="@+id/adapter_item_cusview_model_view_d_icon"
+        app:layout_constraintTop_toBottomOf="@+id/adapter_item_cusview_model_view_d_icon"></TextView>
+
+
+    <LinearLayout
+        android:id="@+id/linearLayout2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="12dp"
+        android:orientation="horizontal"
+        app:layout_constraintEnd_toEndOf="@+id/adapter_item_cusview_model_view_d_icon"
+        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintStart_toStartOf="@+id/adapter_item_cusview_model_view_d_icon"
+        app:layout_constraintTop_toBottomOf="@+id/adapter_item_cusview_model_view_d_icon">
+
+        <TextView
+            android:id="@+id/adapter_item_cusview_model_view_d_contestant"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="123123123"
+            android:textColor="#77CE6A"
+            android:textSize="18dp"></TextView>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="参与"
+            android:textColor="#999999"
+            android:textSize="18dp"></TextView>
+    </LinearLayout>
+
+
+    <ImageView
+        android:id="@+id/adapter_item_cusview_model_view_d_enter"
+        android:layout_width="96dp"
+        android:layout_height="25dp"
+        android:layout_marginBottom="10dp"
+        android:background="@color/green"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/linearLayout2"
+        app:layout_constraintVertical_bias="1.0"></ImageView>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 48 - 0
app/src/exception/layout/cusview_model_view_d.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="644dp"
+    android:layout_height="598dp"
+    android:layout_gravity="center">
+
+
+    <ImageView
+        android:id="@+id/model_view_d_background"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="fitXY"></ImageView>
+
+    <ImageView
+        android:id="@+id/model_view_d_rule"
+        android:layout_width="150dp"
+        android:layout_height="50dp"
+        android:layout_marginTop="26dp"
+        android:layout_marginEnd="190dp"
+        android:background="@color/red"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></ImageView>
+
+    <ImageView
+        android:id="@+id/model_view_d_ranking_list"
+        android:layout_width="150dp"
+        android:layout_height="50dp"
+        android:layout_marginTop="26dp"
+        android:layout_marginEnd="20dp"
+        android:background="@color/red"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></ImageView>
+
+    <GridLayout
+        android:id="@+id/model_view_d_gridlayout"
+        android:layout_width="match_parent"
+        android:layout_height="480dp"
+        android:layout_marginBottom="22dp"
+        android:columnCount="2"
+        android:orientation="horizontal"
+        android:rowCount="2"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="1.0"></GridLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

BIN
app/src/fragmentUser/drawable/main_left_tab_layout_character_small.png


BIN
app/src/fragmentUser/drawable/main_left_tab_layout_character_small_s.png


BIN
app/src/fragmentUser/drawable/main_left_tab_layout_small_follow.png


BIN
app/src/fragmentUser/drawable/main_left_tab_layout_small_follow_s.png


BIN
app/src/fragmentUser/drawable/main_left_tab_layout_small_recommend.png


BIN
app/src/fragmentUser/drawable/main_left_tab_layout_small_recommend_s.png


BIN
app/src/fragmentUser/drawable/main_tab_layout_small_event.png


BIN
app/src/fragmentUser/drawable/main_tab_layout_small_event_s.png


BIN
app/src/fragmentUser/drawable/main_tab_layout_small_myinfo.png


BIN
app/src/fragmentUser/drawable/main_tab_layout_small_myinfo_s.png


+ 19 - 30
app/src/main/AndroidManifest.xml

@@ -19,7 +19,7 @@
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="com.baidu.baiduaccount.permission.READ_USERINFO" />
 
-    <profileable android:shell="true" />
+
     <application
         android:name=".application.EApplication"
         android:allowBackup="true"
@@ -44,7 +44,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTop"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/AppStartTheme"
             android:windowSoftInputMode="adjustNothing|stateHidden">
@@ -78,7 +78,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -88,7 +88,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/AppStartTheme"
             android:windowSoftInputMode="adjustNothing|stateHidden">
@@ -101,7 +101,7 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -111,7 +111,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -121,7 +121,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -131,7 +131,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -141,7 +141,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -151,7 +151,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -162,7 +162,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -172,7 +172,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -184,7 +184,7 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustPan|stateHidden" /> <!-- web界面 -->
@@ -194,8 +194,7 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:process=":web"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -204,7 +203,7 @@
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -214,7 +213,7 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -224,7 +223,7 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -234,7 +233,7 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
@@ -246,21 +245,11 @@
             android:label=""
             android:launchMode="singleTask"
             android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
+            android:resizeableActivity="false"
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden"></activity>
 
-        <activity
-            android:name=".activity.TextActivity"
-            android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
-            android:label=""
-            android:launchMode="singleTask"
-            android:maxAspectRatio="2.1"
-            android:resizeableActivity="true"
-            android:screenOrientation="landscape"
-            android:theme="@style/efunboxTransparentLoginAlert"
-            android:windowSoftInputMode="adjustNothing|stateHidden"></activity>
         <!-- 友盟start -->
         <meta-data
             android:name="UMENG_APPKEY"

+ 70 - 24
app/src/main/java/com/edufound/reader/activity/MainActivity.java

@@ -6,14 +6,15 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.PackageManager;
 import android.content.res.Configuration;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.Build;
+import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
 
@@ -29,20 +30,16 @@ import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.ThroughType;
 import com.edufound.reader.bean.ThroughTypeA;
-import com.edufound.reader.bean.ThroughTypeB;
 import com.edufound.reader.contract.MainContract;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.presenter.MainPresenter;
 import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.Consts;
-import com.edufound.reader.util.DeviceUtil;
 import com.edufound.reader.util.DeviceUuidFactory;
-import com.edufound.reader.util.MMKVUtil;
-import com.edufound.reader.util.PermissionsUtil;
+import com.edufound.reader.util.SizeUtils;
 import com.edufound.reader.util.ThroughUtil;
 import com.orhanobut.logger.Logger;
 
-import java.lang.reflect.Method;
 import java.util.HashMap;
 
 import androidx.annotation.NonNull;
@@ -57,12 +54,26 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
     @BindView(id = R.id.main_left_tab_layout)
     RadioGroup mRadioGroupTab;
 
+    @BindView(id = R.id.main_left_tab_layout_myinfo)
+    RadioButton mMyInfoBtn;
+    @BindView(id = R.id.main_left_tab_layout_event)
+    RadioButton mEventBtn;
+    @BindView(id = R.id.main_left_tab_layout_recommend)
+    RadioButton mRecommendBtn;
+    @BindView(id = R.id.main_left_tab_layout_follow)
+    RadioButton mFollowBtn;
+    @BindView(id = R.id.main_left_tab_layout_character)
+    RadioButton mCharacterBtn;
+
     @BindView(id = R.id.activity_main_exitapp_icon)
     ImageView mExitApp;
 
     @BindView(id = R.id.testbg)
     ImageView testBg;
 
+    @BindView(id = R.id.main_left_tab_linearlayout)
+    LinearLayout mTabLayout;
+
     @Override
     public int getLayoutId() {
         return R.layout.activity_main;
@@ -86,9 +97,9 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         addUiClickListener(mExitApp, o -> {
             PopWindowUtil.showExitAppWindow(getActivity(), getRootView());
         });
+        mTabLayout.setVisibility(View.GONE);
         mPresenter.userIsLogin();
         mPresenter.checkModelIsDebug();
-        Logger.e("DeviceUuidFactory.getUuid():" + DeviceUuidFactory.getUuid());
         //获取读取手机状态权限
 //        PermissionsUtil.readPhoneStatePermissions(mActivity);
 
@@ -123,12 +134,12 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
                 if (type.equals(ThroughType.TYPEA.getTypeCode())) {
                     //typeA类型,直接进入朗读界面
                     Logger.e("进入了TypeA类型");
-//                    ThroughUtil.mThroughTypeA = new ThroughTypeA();
-//                    ThroughUtil.mThroughType = ThroughType.TYPEA;
-//                    ThroughUtil.mThroughTypeA.setExampleId(getIntentUri.getQueryParameter("exampleId"));
-//                    //backModel只有app和home两个值,app是直接退出应用,home是返回首页
-//                    ThroughUtil.mThroughTypeA.setBackModel(getIntentUri.getQueryParameter("backModel"));
-//                    toNextActivity(RecordActivity.class);
+                    ThroughUtil.mThroughTypeA = new ThroughTypeA();
+                    ThroughUtil.mThroughType = ThroughType.TYPEA;
+                    ThroughUtil.mThroughTypeA.setExampleId(getIntentUri.getQueryParameter("exampleId"));
+                    //backModel只有app和home两个值,app是直接退出应用,home是返回首页
+                    ThroughUtil.mThroughTypeA.setBackModel(getIntentUri.getQueryParameter("backModel"));
+                    toNextActivity(RecordActivity.class);
                 } else if (type.equals(ThroughType.TYPEB.getTypeCode())) {
                     Logger.e("进入了TypeB类型");
                     //把收到的ID视频提到第一个
@@ -204,6 +215,7 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         IntentFilter intentFilter = new IntentFilter();
         intentFilter.addAction(BackPageReceiver.BACK_HOME_REF_MY_FRAGMENT);
         intentFilter.addAction(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+        intentFilter.addAction("com.edufound.reader.main.setindex");
         registerReceiver(receiver, intentFilter);
 
 
@@ -224,8 +236,10 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
                 //从其他页面回来了。查询一下单独的item数据,然后赋值
                 mPresenter.refRecordById(intent.getStringExtra("recordId"));
             } else if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REF_MY_FRAGMENT)) {
-
                 mPresenter.refMyFragment();
+            } else if (intent.getAction().equals("com.edufound.reader.main.setindex")) {
+                //设置坐标
+                setCheckIndex();
             }
         }
     };
@@ -250,8 +264,40 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
 
     @Override
     public void setCheckIndex() {
-        int defaultIndex = getIntent().getIntExtra("defaultIndex", 1);
-        ((RadioButton) mRadioGroupTab.getChildAt(defaultIndex)).setChecked(true);
+
+
+        int defaultValue = 2;
+        if (Consts.hasOtherEvent) {
+            //如果有活动,显示活动的tab
+            defaultValue = 1;
+            RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(SizeUtils.dp2px(mActivity, 120), SizeUtils.dp2px(mActivity, 120));
+            mMyInfoBtn.setLayoutParams(params);
+            mMyInfoBtn.setBackground(mActivity.getResources().getDrawable(R.drawable.main_left_tab_myinfo_small_selector));
+            mEventBtn.setLayoutParams(params);
+            mEventBtn.setBackground(mActivity.getResources().getDrawable(R.drawable.main_left_tab_event_selector));
+            mEventBtn.setVisibility(View.VISIBLE);
+            mRecommendBtn.setLayoutParams(params);
+            mRecommendBtn.setBackground(mActivity.getResources().getDrawable(R.drawable.main_left_tab_recommend_small_selector));
+            mFollowBtn.setLayoutParams(params);
+            mFollowBtn.setBackground(mActivity.getResources().getDrawable(R.drawable.main_left_tab_follow_small_selector));
+            mCharacterBtn.setLayoutParams(params);
+            mCharacterBtn.setBackground(mActivity.getResources().getDrawable(R.drawable.main_left_tab_character_small_selector));
+            LinearLayout.LayoutParams exitParams = new LinearLayout.LayoutParams(SizeUtils.dp2px(mActivity, 80), SizeUtils.dp2px(mActivity, 80));
+            exitParams.gravity = Gravity.CENTER;
+            exitParams.topMargin = SizeUtils.dp2px(mActivity, 20);
+//            exitParams.leftMargin = SizeUtils.dp2px(mActivity, 10);
+            mExitApp.setLayoutParams(exitParams);
+        }
+        int defaultIndex = getIntent().getIntExtra("defaultIndex", defaultValue);
+        mRadioGroupTab.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                ((RadioButton) mRadioGroupTab.getChildAt(defaultIndex)).setChecked(true);
+            }
+        }, 200);
+
+//        ((RadioButton) mRadioGroupTab.getChildAt(defaultIndex)).performClick();
+        mTabLayout.setVisibility(View.VISIBLE);
     }
 
 
@@ -292,13 +338,13 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
     protected void onScreenUserPresent() {
         super.onScreenUserPresent();
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
-            //义方渠道在手机
-            Intent intent = new Intent(mActivity, TextActivity.class);
-            startActivity(intent);
-
-            for (int i = 0; i < EApplication.mActivityList.size(); i++) {
-                EApplication.mActivityList.get(i).finish();
-            }
+//            //义方渠道在手机
+//            Intent intent = new Intent(mActivity, TestActivity.class);
+//            startActivity(intent);
+//
+//            for (int i = 0; i < EApplication.mActivityList.size(); i++) {
+//                EApplication.mActivityList.get(i).finish();
+//            }
 
         }
 

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

@@ -80,7 +80,7 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
             mEventInto.setVisibility(View.VISIBLE);
             addUiClickListener(mEventInto, o -> {
                 //检查是否有活动,然后跳转活动
-                EfunboxUtil.checkEvents(mActivity, getRootView(), false);
+                EfunboxUtil.checkEvents(mActivity);
             });
         }
 

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

@@ -131,7 +131,7 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
             EApplication.mActivityList.get(i).finish();
         }
         Intent intent = new Intent(getActivity(), MainActivity.class);
-        intent.putExtra("defaultIndex", 1);
+        intent.putExtra("defaultIndex", 2);
         startActivity(intent);
     }
 }

+ 0 - 36
app/src/main/java/com/edufound/reader/activity/TextActivity.java

@@ -1,36 +0,0 @@
-package com.edufound.reader.activity;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.edufound.reader.R;
-import com.orhanobut.logger.Logger;
-
-public class TextActivity extends Activity {
-
-    //手机端锁屏返回之后重新加载用
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Logger.e("测试activity");
-        setContentView(R.layout.activity_test);
-        handler.sendEmptyMessageDelayed(1, 2000);
-    }
-
-    Handler handler = new Handler(new Handler.Callback() {
-        @Override
-        public boolean handleMessage(@NonNull Message msg) {
-            Intent intent = new Intent(TextActivity.this, MainActivity.class);
-            startActivity(intent);
-            finish();
-            return false;
-        }
-    });
-}

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

@@ -374,7 +374,6 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             EApplication.mActivityList.get(i).finish();
         }
         Intent intent = new Intent(getActivity(), MainActivity.class);
-        intent.putExtra("defaultIndex", 1);
         startActivity(intent);
     }
 

+ 82 - 2
app/src/main/java/com/edufound/reader/activity/WebActivity.java

@@ -1,16 +1,22 @@
 package com.edufound.reader.activity;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Process;
+import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.WebView;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 
+import androidx.annotation.Nullable;
+
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.WebContract;
 import com.edufound.reader.presenter.WebPresenter;
+import com.edufound.reader.util.GlideUtils;
 
 public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebContract.View {
 
@@ -23,6 +29,19 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
     @BindView(id = R.id.web_frame)
     FrameLayout mWebFrame;
 
+    @BindView(id = R.id.activity_web_qrcode_layout)
+    FrameLayout mQRLayout;
+
+    @BindView(id = R.id.activity_web_qrcode_img)
+    ImageView mQRImg;
+
+    @BindView(id = R.id.activity_web_close_qrlayout)
+    ImageView mCloseQrLayout;
+
+    WebView mWebView;
+
+
+    String checkOrderId;
 
     @Override
     public int getLayoutId() {
@@ -34,10 +53,26 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
         mActivity = this;
         mPresenter = new WebPresenter();
         mPresenter.attachView(this);
-        mWebFrame.addView(mPresenter.initWebView(getIntent()));
+        mWebView = mPresenter.initWebView(getIntent());
+        mWebFrame.addView(mWebView);
         addUiClickListener(mBack, o -> {
             closeWebActivity();
         });
+
+        addUiClickListener(mCloseQrLayout, o -> {
+            if (mQRLayout.getVisibility() == View.VISIBLE) {
+                mQRLayout.setVisibility(View.GONE);
+                mPresenter.isPaySuccess(checkOrderId);
+            }
+        });
+//        mWebFrame.postDelayed(new Runnable() {
+//            @Override
+//            public void run() {
+////                loadJSMethodPost("test()");
+////                mPresenter.getJSInterfaces().efunboxQRPay("1009", "");
+//            }
+//        }, 3000);
+
     }
 
     @Override
@@ -87,7 +122,52 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
 
     @Override
     public void closeWebActivity() {
-        android.os.Process.killProcess(Process.myPid());
+//        android.os.Process.killProcess(Process.myPid());
+        if (mWebView != null) {
+            loadJsMethod("closeWebActivity()");
+        }
+        mWebView = null;
+        mWebFrame.removeAllViews();
+        mWebFrame = null;
+        mPresenter.detachView();
         finish();
     }
+
+    @Override
+    public void loadJSMethodPost(String method) {
+        if (mWebView == null) {
+            return;
+        }
+        mWebView.post(new Runnable() {
+                          @Override
+                          public void run() {
+                              mWebView.loadUrl("javascript:" + method + "");
+                          }
+                      }
+        );
+    }
+
+    @Override
+    public void loadJsMethod(String method) {
+        mWebView.loadUrl("javascript:" + method + "");
+    }
+
+    @Override
+    public void setQrCode(String url, String orderId) {
+        mQRLayout.setVisibility(View.VISIBLE);
+        GlideUtils.loadImageSizeKipMemoryCache(mActivity, url, mQRImg);
+        //根据id查询支付状态
+        checkOrderId = orderId;
+    }
+
+    @Override
+    public String getActivityId() {
+        return mPresenter.getActivityId();
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        mPresenter.onActivityResult(requestCode, resultCode, data);
+        super.onActivityResult(requestCode, resultCode, data);
+    }
 }

+ 74 - 0
app/src/main/java/com/edufound/reader/adapter/FragmentEventAdapter.java

@@ -0,0 +1,74 @@
+package com.edufound.reader.adapter;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.edufound.reader.bean.EventListBean;
+import com.edufound.reader.cusview.ModelViewA;
+import com.edufound.reader.cusview.ModelViewWidthA;
+import com.edufound.reader.util.EfunboxUtil;
+import com.orhanobut.logger.Logger;
+
+import java.util.List;
+
+public class FragmentEventAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+
+
+    private Context mContext;
+    private List<EventListBean> mListData;
+
+    public FragmentEventAdapter(Context context, List<EventListBean> listData) {
+        mContext = context;
+        mListData = listData;
+
+    }
+
+    @NonNull
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        if (mListData.get(viewType).getTemplateCode().equals("IMAGE_TEMPLATE_1")) {
+            return new IMAGETEMPLATE1(new ModelViewA(mContext));
+        } else if (mListData.get(viewType).getTemplateCode().equals("IMAGE_TEMPLATE_2")) {
+            return new IMAGETEMPLATE1(new ModelViewWidthA(mContext));
+        }
+        return null;
+    }
+
+
+    @Override
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, @SuppressLint("RecyclerView") int position) {
+        if (holder instanceof IMAGETEMPLATE1) {
+            ((ModelViewA) holder.itemView).setView(mListData.get(position).getImg(), new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    EfunboxUtil.toWebFlowerActivity(mContext, mListData.get(position).getUrl(), String.valueOf(mListData.get(position).getId()));
+                }
+            });
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        return mListData.size();
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return position;
+    }
+}
+
+class IMAGETEMPLATE1 extends RecyclerView.ViewHolder {
+
+    public IMAGETEMPLATE1(@NonNull View itemView) {
+        super(itemView);
+        ((ModelViewA) itemView).initView();
+    }
+}

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

@@ -119,7 +119,7 @@ public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
             holder.mEventBtn.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    EfunboxUtil.toWebFlowerActivity(mContext);
+                    EfunboxUtil.toWebFlowerActivity(mContext,Consts.getEventTypeFlowerUrl(),null);
                 }
             });
             needTag = true;

+ 7 - 0
app/src/main/java/com/edufound/reader/apiserver/ActivityEventServerImpl.java

@@ -12,6 +12,7 @@ import com.okhttplib.callback.Callback;
  */
 public class ActivityEventServerImpl implements ActivityEventServer {
     private String API = Consts.getFinalApi();
+    public static String EVENT_TYPE_ALL = "0";
     public static String EVENT_TYPE_LOGIN = "1";
     public static String EVENT_TYPE_FLOWER = "2";
 
@@ -20,9 +21,15 @@ public class ActivityEventServerImpl implements ActivityEventServer {
     public void getEventByType(String type, Callback callback) {
         OkHttpClient.doGetAsync(new HttpInfo.Builder().setUrl(API + "/activity").addParam("type", type), callback);
     }
+
+    @Override
+    public void getEventListByType(Callback callback) {
+        OkHttpClient.doGetAsync(new HttpInfo.Builder().setUrl(API + "/activity/list").addParam("channelCode", Consts.getUmengChannel()).addParam("uid", Consts.getUID()), callback);
+    }
 }
 
 interface ActivityEventServer {
     void getEventByType(String type, Callback callback);
 
+    void getEventListByType(Callback callback);
 }

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

@@ -90,7 +90,6 @@ public class UserApiServerImpl implements userApiServer {
         if (activity == null) {
             OkHttpClient.doPostAsync(new HttpInfo.Builder().setUrl(API + "/loginLog"), callback);
         } else {
-
             OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/loginLog"), callback);
         }
     }

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

@@ -87,7 +87,7 @@ public class EApplication extends Application {
             UMConfigure.getOaid(this, new OnGetOaidListener() {
                 @Override
                 public void onGetOaid(String s) {
-                    Logger.e("umeng_oaid:" + s);
+//                    Logger.e("umeng_oaid:" + s);
                 }
             });
             MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
@@ -100,7 +100,6 @@ public class EApplication extends Application {
                 new DeviceUuidFactory(getApplicationContext());
             }
             Consts.setUID("test");
-            Logger.e("Consts.uid:" + Consts.getUID());
             //初始化activity监听
             registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
             if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {

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

@@ -39,7 +39,6 @@ import com.baidu.duer.botsdk.IAccountChargeMsgListener;
 import com.baidu.duer.membersdk.MemberSdkManager;
 import com.baidu.duer.membersdk.view.FloatingView;
 import com.edufound.reader.R;
-import com.edufound.reader.activity.TextActivity;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.application.EApplication;
@@ -158,13 +157,13 @@ public abstract class BaseActivity extends AppCompatActivity {
         screenListener.begin(new ScreenListener.ScreenStateListener() {
             @Override
             public void onScreenOn() {
-                Logger.e("onScreenOn");
+//                Logger.e("onScreenOn");
 
             }
 
             @Override
             public void onScreenOff() {
-                Logger.e("onScreenOff");
+//                Logger.e("onScreenOff");
                 onAppScreenOff();
 
             }
@@ -720,7 +719,7 @@ public abstract class BaseActivity extends AppCompatActivity {
                                             }
                                         });
                                         //检查活动
-                                        EfunboxUtil.checkEvents(topActivity, getRootView(), true);
+                                        EfunboxUtil.checkEvents(topActivity);
                                     }
 
                                     @Override

+ 1 - 0
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -69,6 +69,7 @@ public abstract class BaseFragment extends Fragment {
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
+        EfunboxUtil.initDesignSize(getActivity());
         View view = inflater.inflate(this.getLayoutId(), container, false);
         initView(view);
         initViewListener();

+ 132 - 0
app/src/main/java/com/edufound/reader/bean/EventListBean.java

@@ -0,0 +1,132 @@
+package com.edufound.reader.bean;
+
+public class EventListBean {
+
+    private String amount;
+    private long endTime;
+    private long gmtCreated;
+    private long gmtModified;
+    private int id;
+    private String img;
+    private String partakeChannel;
+    private String redFlower;
+    private int sort;
+    private long startTime;
+    private String status;
+    private String templateCode;
+    private int type;
+    private String url;
+
+    public void setAmount(String amount) {
+        this.amount = amount;
+    }
+
+    public String getAmount() {
+        return amount;
+    }
+
+    public void setEndTime(long endTime) {
+        this.endTime = endTime;
+    }
+
+    public long getEndTime() {
+        return endTime;
+    }
+
+    public void setGmtCreated(long gmtCreated) {
+        this.gmtCreated = gmtCreated;
+    }
+
+    public long getGmtCreated() {
+        return gmtCreated;
+    }
+
+    public void setGmtModified(long gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+
+    public long getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public String getImg() {
+        return img;
+    }
+
+    public void setPartakeChannel(String partakeChannel) {
+        this.partakeChannel = partakeChannel;
+    }
+
+    public String getPartakeChannel() {
+        return partakeChannel;
+    }
+
+    public void setRedFlower(String redFlower) {
+        this.redFlower = redFlower;
+    }
+
+    public String getRedFlower() {
+        return redFlower;
+    }
+
+    public void setSort(int sort) {
+        this.sort = sort;
+    }
+
+    public int getSort() {
+        return sort;
+    }
+
+    public void setStartTime(long startTime) {
+        this.startTime = startTime;
+    }
+
+    public long getStartTime() {
+        return startTime;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setTemplateCode(String templateCode) {
+        this.templateCode = templateCode;
+    }
+
+    public String getTemplateCode() {
+        return templateCode;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+}

+ 5 - 0
app/src/main/java/com/edufound/reader/bean/ThroughType.java

@@ -10,6 +10,11 @@ public enum ThroughType {
         public String getTypeCode() {//枚举对象实现抽象方法
             return "typeB";
         }
+    },
+    TYPEC {
+        public String getTypeCode() {//枚举对象实现抽象方法
+            return "typeC";
+        }
     };
 
     public abstract String getTypeCode();//定义抽象方法

+ 20 - 0
app/src/main/java/com/edufound/reader/contract/EventFragmentContract.java

@@ -0,0 +1,20 @@
+package com.edufound.reader.contract;
+
+import android.app.Activity;
+
+import com.edufound.reader.adapter.FragmentEventAdapter;
+import com.edufound.reader.base.BaseView;
+
+public interface EventFragmentContract {
+    interface Model {
+    }
+
+    interface View extends BaseView {
+        void getAllEventSuccess(FragmentEventAdapter adapter);
+    }
+
+    interface Presenter {
+        void getAllEvent();
+
+    }
+}

+ 17 - 0
app/src/main/java/com/edufound/reader/contract/WebContract.java

@@ -6,6 +6,7 @@ import android.webkit.WebView;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.edufound.reader.base.BaseView;
+import com.edufound.reader.jsinterfaces.WebActivityJsInterfaces;
 
 public interface WebContract {
     interface Model {
@@ -13,9 +14,25 @@ public interface WebContract {
 
     interface View extends BaseView {
         void closeWebActivity();
+
+        void loadJSMethodPost(String method);
+
+        void loadJsMethod(String method);
+
+        void setQrCode(String url, String orderid);
+
+        String getActivityId();
     }
 
     interface Presenter {
         WebView initWebView(Intent intent);
+
+        WebActivityJsInterfaces getJSInterfaces();
+
+        void onActivityResult(int requestCode, int resultCode, Intent data);
+
+        void isPaySuccess(String orderId);
+
+        String getActivityId();
     }
 }

+ 55 - 0
app/src/main/java/com/edufound/reader/cusview/ModelViewA.java

@@ -0,0 +1,55 @@
+package com.edufound.reader.cusview;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+
+import androidx.annotation.Nullable;
+
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.SizeUtils;
+
+/**
+ * 一张图片加一个兑换按钮(兑换按钮可能在图片上)
+ * 对应后端IMAGE_TEMPLATE_1
+ */
+public class ModelViewA extends FrameLayout {
+
+    public Context mContext;
+    ImageView imageView;
+
+    public ModelViewA(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    public ModelViewA(Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ModelViewA(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public void initView() {
+        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 428)
+                , SizeUtils.dp2px(mContext, 598));
+        this.setLayoutParams(layoutParams);
+        layoutParams.gravity = Gravity.CENTER;
+        imageView = new ImageView(mContext);
+        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
+        imageView.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+        addView(imageView);
+    }
+
+    public void setView(String url, OnClickListener clickListener) {
+        imageView.setOnClickListener(clickListener);
+        GlideUtils.loadImageSizeKipMemoryCache(mContext, url, imageView);
+
+    }
+
+}

+ 109 - 0
app/src/main/java/com/edufound/reader/cusview/ModelViewB.java

@@ -0,0 +1,109 @@
+package com.edufound.reader.cusview;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+
+import androidx.annotation.Nullable;
+
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.SizeUtils;
+
+/**
+ * 一张图片加左右两个按钮(详情/参加)
+ */
+public class ModelViewB extends FrameLayout {
+
+    public Context mContext;
+
+    public ModelViewB(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    public ModelViewB(Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ModelViewB(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+
+    public void initView(String url, OnClickBtnListener clickListener) {
+        LayoutParams layoutParams = new LayoutParams(SizeUtils.dp2px(mContext, 644)
+                , SizeUtils.dp2px(mContext, 598));
+        this.setLayoutParams(layoutParams);
+        this.setBackgroundColor(Color.BLUE);
+        //背景图片
+        ImageView imageView = new ImageView(mContext);
+        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
+        imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+        GlideUtils.loadImageSizeKipMemoryCache(mContext, url, imageView);
+
+        //底部按钮layout
+        LinearLayout btnLayout = new LinearLayout(mContext);
+        btnLayout.setOrientation(LinearLayout.HORIZONTAL);
+        FrameLayout.LayoutParams btnLayoutParams = new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 644), SizeUtils.dp2px(mContext, 65));
+        btnLayoutParams.gravity = Gravity.BOTTOM;
+        btnLayout.setLayoutParams(btnLayoutParams);
+        btnLayout.setBackgroundColor(Color.LTGRAY);
+        //底部按钮
+        LinearLayout.LayoutParams btnFrameParams = new LinearLayout.LayoutParams(0, SizeUtils.dp2px(mContext, 65));
+        btnFrameParams.weight = 1;
+        btnFrameParams.bottomMargin = SizeUtils.dp2px(mContext, 40);
+        FrameLayout btnLeft = new FrameLayout(mContext);
+        btnLeft.setLayoutParams(btnFrameParams);
+        btnLeft.setBackgroundColor(Color.RED);
+        btnLeft.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (clickListener != null) {
+                    clickListener.clickLeft();
+                }
+            }
+        });
+        FrameLayout btnRight = new FrameLayout(mContext);
+        btnRight.setLayoutParams(btnFrameParams);
+        btnRight.setBackgroundColor(Color.YELLOW);
+        btnRight.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (clickListener != null) {
+                    clickListener.clickRight();
+                }
+            }
+        });
+        btnLayout.addView(btnLeft);
+        btnLayout.addView(btnRight);
+
+
+        FrameLayout.LayoutParams btnParams = new FrameLayout.LayoutParams(SizeUtils.dp2px(mContext, 244), SizeUtils.dp2px(mContext, 65));
+        btnParams.gravity = Gravity.CENTER;
+        ImageView leftBtnImg = new ImageView(mContext);
+        leftBtnImg.setLayoutParams(btnParams);
+        leftBtnImg.setBackgroundColor(Color.YELLOW);
+        ImageView rightBtnImg = new ImageView(mContext);
+        rightBtnImg.setLayoutParams(btnParams);
+        rightBtnImg.setBackgroundColor(Color.BLACK);
+        btnLeft.addView(leftBtnImg);
+        btnRight.addView(rightBtnImg);
+
+        //添加view
+        addView(imageView);
+        addView(btnLayout);
+    }
+
+    public interface OnClickBtnListener {
+        void clickLeft();
+
+        void clickRight();
+    }
+
+}

+ 140 - 0
app/src/main/java/com/edufound/reader/cusview/ModelViewC.java

@@ -0,0 +1,140 @@
+package com.edufound.reader.cusview;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.edufound.reader.R;
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.SizeUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 上面一个课程,下面一个list展示所有读过课程的用户
+ * */
+public class ModelViewC extends FrameLayout {
+    Context mContext;
+    private LayoutInflater mLayoutInflater;
+    private onItemClickListener mItemClickListener;
+
+
+    public ModelViewC(@NonNull Context context) {
+        super(context);
+        mContext = context;
+        mLayoutInflater = LayoutInflater.from(context);
+    }
+
+    public ModelViewC(@NonNull Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ModelViewC(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public void setItemClickListener(onItemClickListener listener) {
+        mItemClickListener = listener;
+    }
+
+    public void initView(String bgUrl) {
+        LayoutParams layoutParams = new LayoutParams(SizeUtils.dp2px(mContext, 428)
+                , SizeUtils.dp2px(mContext, 598));
+        this.setLayoutParams(layoutParams);
+        View modelCView = mLayoutInflater.inflate(R.layout.cusview_model_view_c, null);
+        ImageView backgournd = modelCView.findViewById(R.id.model_view_c_background);
+        GlideUtils.loadImageSizeKipMemoryCache(mContext, bgUrl, backgournd);
+        RecyclerView mRecyclerView = modelCView.findViewById(R.id.model_view_c_recyclerview);
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
+
+        //测试数据
+        List<String> list = new ArrayList<>();
+        for (int i = 0; i < 40; i++) {
+            list.add("" + i);
+        }
+        ModelViewCAdapter adapter = new ModelViewCAdapter(mContext, list);
+        mRecyclerView.setAdapter(adapter);
+        addView(modelCView);
+    }
+
+
+    public class ModelViewCAdapter extends RecyclerView.Adapter<ModelViewCViewHolder> {
+
+
+        public List<String> mListData;
+
+
+        public ModelViewCAdapter(Context context, List<String> listData) {
+            mContext = context;
+            mListData = listData;
+        }
+
+
+        @NonNull
+        @Override
+        public ModelViewCViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+            return new ModelViewCViewHolder(mLayoutInflater.inflate(R.layout.adapter_item_cusview_model_view_c, parent, false));
+        }
+
+        @Override
+        public void onBindViewHolder(@NonNull ModelViewCViewHolder holder, @SuppressLint("RecyclerView") int position) {
+            holder.mNickName.setText(mListData.get(position));
+            holder.mScore.setText(mListData.get(position) + "分数");
+            if (mItemClickListener != null) {
+                holder.itemView.setOnClickListener(new OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        mItemClickListener.clickItem(holder.itemView, position);
+                    }
+                });
+            }
+        }
+
+
+        @Override
+        public int getItemCount() {
+            return mListData.size();
+        }
+
+        @Override
+        public int getItemViewType(int position) {
+            return position;
+        }
+    }
+
+
+    public interface onItemClickListener {
+        void clickItem(View view, int position);
+
+    }
+
+}
+
+class ModelViewCViewHolder extends RecyclerView.ViewHolder {
+
+
+    TextView mNickName;
+    TextView mScore;
+
+    public ModelViewCViewHolder(@NonNull View itemView) {
+        super(itemView);
+        mNickName = itemView.findViewById(R.id.adapter_item_cusview_model_view_c_nickname);
+        mScore = itemView.findViewById(R.id.adapter_item_cusview_model_view_c_score);
+    }
+}
+
+
+

+ 98 - 0
app/src/main/java/com/edufound/reader/cusview/ModelViewD.java

@@ -0,0 +1,98 @@
+package com.edufound.reader.cusview;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.GridLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.edufound.reader.R;
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.SizeUtils;
+
+import java.util.List;
+
+
+public class ModelViewD extends FrameLayout {
+
+    Context mContext;
+    private LayoutInflater mLayoutInflater;
+
+    public ModelViewD(@NonNull Context context) {
+        super(context);
+        mContext = context;
+        mLayoutInflater = LayoutInflater.from(context);
+    }
+
+    public ModelViewD(@NonNull Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ModelViewD(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public void initView(String bgUrl, List<String> listData, OnClickBtnListener listener) {
+        LayoutParams layoutParams = new LayoutParams(SizeUtils.dp2px(mContext, 644)
+                , SizeUtils.dp2px(mContext, 598));
+        this.setLayoutParams(layoutParams);
+        layoutParams.gravity = Gravity.CENTER;
+        View modelDView = mLayoutInflater.inflate(R.layout.cusview_model_view_d, null);
+        ImageView backgournd = modelDView.findViewById(R.id.model_view_d_background);
+        GlideUtils.loadImageSizeKipMemoryCache(mContext, bgUrl, backgournd);
+        ImageView rule = modelDView.findViewById(R.id.model_view_d_rule);
+        ImageView rankingList = modelDView.findViewById(R.id.model_view_d_ranking_list);
+        rule.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                listener.clickLeft(null);
+            }
+        });
+        rankingList.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                listener.clickRight(null);
+            }
+        });
+
+        GridLayout gridLayout = modelDView.findViewById(R.id.model_view_d_gridlayout);
+        for (int i = 0; i < listData.size(); i++) {
+            View itemView = mLayoutInflater.inflate(R.layout.adapter_item_cusview_model_view_d, null);
+            GridLayout.LayoutParams gridItemParams = new GridLayout.LayoutParams();
+            gridItemParams.width = SizeUtils.dp2px(mContext, 289);
+            gridItemParams.height = SizeUtils.dp2px(mContext, 200);
+            gridItemParams.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1.0f);
+            gridItemParams.rowSpec = GridLayout.spec(GridLayout.UNDEFINED, 1, 1.0f);
+            itemView.setLayoutParams(gridItemParams);
+            ImageView icon = itemView.findViewById(R.id.adapter_item_cusview_model_view_d_icon);
+            TextView name = itemView.findViewById(R.id.adapter_item_cusview_model_view_d_name);
+            name.setText(listData.get(i));
+            TextView contestant = itemView.findViewById(R.id.adapter_item_cusview_model_view_d_contestant);
+            contestant.setText(listData.get(i) + "参赛者");
+            gridLayout.addView(itemView);
+            int finalI = i;
+            itemView.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    listener.clickItem(listData.get(finalI) + "");
+                }
+            });
+        }
+        addView(modelDView);
+    }
+
+    public interface OnClickBtnListener {
+        void clickLeft(Object object);
+
+        void clickRight(Object object);
+
+        void clickItem(Object object);
+    }
+}

+ 54 - 0
app/src/main/java/com/edufound/reader/cusview/ModelViewWidthA.java

@@ -0,0 +1,54 @@
+package com.edufound.reader.cusview;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+
+import androidx.annotation.Nullable;
+
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.SizeUtils;
+
+/**
+ * 一张图片加一个兑换按钮(兑换按钮可能在图片上),比ModelViewA宽的
+ * 对应后端 IMAGE_TEMPLATE_2
+ */
+public class ModelViewWidthA extends ModelViewA {
+
+    public Context mContext;
+    ImageView imageView;
+
+    public ModelViewWidthA(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    public ModelViewWidthA(Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ModelViewWidthA(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public void initView() {
+        LayoutParams layoutParams = new LayoutParams(SizeUtils.dp2px(mContext, 642)
+                , SizeUtils.dp2px(mContext, 598));
+        this.setLayoutParams(layoutParams);
+        layoutParams.gravity = Gravity.CENTER;
+        imageView = new ImageView(mContext);
+        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
+        imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+        addView(imageView);
+    }
+
+    public void setView(String url, OnClickListener clickListener) {
+        imageView.setOnClickListener(clickListener);
+        GlideUtils.loadImageSizeKipMemoryCache(mContext, url, imageView);
+
+    }
+
+}

+ 93 - 0
app/src/main/java/com/edufound/reader/fragment/EventFragment.java

@@ -0,0 +1,93 @@
+package com.edufound.reader.fragment;
+
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.edufound.reader.R;
+import com.edufound.reader.adapter.FragmentEventAdapter;
+import com.edufound.reader.base.BaseMvpFragment;
+import com.edufound.reader.contract.CharacterFragmentContract;
+import com.edufound.reader.contract.EventFragmentContract;
+import com.edufound.reader.presenter.CharacterFragmentPresenter;
+import com.edufound.reader.presenter.EventFragmentPresenter;
+import com.edufound.reader.util.HorizontalItemDecoration;
+import com.orhanobut.logger.Logger;
+
+public class EventFragment extends BaseMvpFragment<EventFragmentPresenter> implements EventFragmentContract.View {
+
+    View mRootView;
+    RecyclerView mRecyclerView;
+
+    @Override
+    protected void initView(View view) {
+        mRootView = view;
+        mPresenter = new EventFragmentPresenter();
+        mPresenter.attachView(this);
+        mRecyclerView = view.findViewById(R.id.fragment_main_event_recyclerview);
+
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mPresenter.detachView();
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.fragment_main_event;
+    }
+
+    @Override
+    protected void initViewListener() {
+        mPresenter.getAllEvent();
+    }
+
+    @Override
+    public void onGetDisconnect() {
+
+    }
+
+    @Override
+    public void onGetMobileConnect() {
+
+    }
+
+    @Override
+    public void onGetWifiConnect() {
+
+    }
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void onError(String errMessage) {
+
+    }
+
+    @Override
+    public ViewGroup getRootView() {
+        return (ViewGroup) mRootView;
+    }
+
+    @Override
+    public void getAllEventSuccess(FragmentEventAdapter adapter) {
+        mRecyclerView.setAdapter(adapter);
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
+        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
+        mRecyclerView.addItemDecoration(new HorizontalItemDecoration(getActivity(), 20));
+        mRecyclerView.setLayoutManager(linearLayoutManager);
+    }
+
+}

+ 9 - 5
app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java

@@ -222,7 +222,11 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
     @Override
     public void onResume() {
         mPresenter.fragmentResume(mRecyclerView);
-
+        if (EfunboxUtil.checkIsVip()) {
+            if (isUserVip != null) {
+                isUserVip.setVisibility(View.INVISIBLE);
+            }
+        }
         super.onResume();
 
     }
@@ -291,7 +295,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
             isFollow.setVisibility(View.INVISIBLE);
             mUserHeadLayout.setClickable(true);
             addUiClickListener(mUserHeadLayout, o -> {
-                if (EfunboxUtil.checkLogin(getActivity(),getRootView())) {
+                if (EfunboxUtil.checkLogin(getActivity(), getRootView())) {
                     Bundle bundle = new Bundle();
                     bundle.putString("other_uid", bean.getUser().getUid());
                     bundle.putString("record_id", bean.getUserRead().getId());
@@ -314,18 +318,18 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         }
 
         addUiClickListener(mCollectionLayout, o -> {
-            if (EfunboxUtil.checkLogin(getActivity(),getRootView())) {
+            if (EfunboxUtil.checkLogin(getActivity(), getRootView())) {
                 mPresenter.doFavorites(bean.getUserRead());
             }
         });
         addUiClickListener(mThumbsLayout, o -> {
-            if (EfunboxUtil.checkLogin(getActivity(),getRootView())) {
+            if (EfunboxUtil.checkLogin(getActivity(), getRootView())) {
                 mPresenter.doLike(bean.getUserRead());
             }
         });
         mThumbCount.setText(bean.getUserRead().getLikeAmount());
         addUiClickListener(mCommentLayout, o -> {
-            if (EfunboxUtil.checkLogin(getActivity(),getRootView())) {
+            if (EfunboxUtil.checkLogin(getActivity(), getRootView())) {
                 Logger.e("点击了评论");
                 Bundle bundle = new Bundle();
                 bundle.putString("id", bean.getUserRead().getId());

+ 59 - 0
app/src/main/java/com/edufound/reader/jsinterfaces/WebActivityJsInterfaces.java

@@ -3,9 +3,30 @@ package com.edufound.reader.jsinterfaces;
 import android.content.Intent;
 import android.graphics.Color;
 import android.webkit.JavascriptInterface;
+import android.widget.Toast;
 
 import com.edufound.reader.activity.EventPayActivity;
+import com.edufound.reader.base.BaseActivity;
+import com.edufound.reader.bean.ChannelCodeEnum;
+import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.contract.WebContract;
+import com.edufound.reader.tmailsdk.TMailSDKUtil;
+import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.DeviceUtil;
+import com.edufound.reader.util.EfunboxUtil;
+import com.edufound.reader.util.OkHttpClient;
+import com.google.gson.Gson;
+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;
 
 public class WebActivityJsInterfaces {
 
@@ -25,4 +46,42 @@ public class WebActivityJsInterfaces {
     public void closeWebActivity() {
         mView.closeWebActivity();
     }
+
+    @JavascriptInterface
+    public void toTMailPay(String json) {
+        if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
+            //去天猫支付
+            TMailSDKUtil.tmailPay(mView.getActivity(), json.toString());
+        }
+    }
+
+    @JavascriptInterface
+    public void efunboxQRPay(String productId, String orderId) {
+        OkHttpClient.doGetAsync(mView.getActivity(), new HttpInfo.Builder().setUrl(Consts.getFinalApi() + "/pay/efun/qrCode")
+                .addParam("channel", Consts.getUmengChannel()).addParam("productId", productId).addParam("activityId", mView.getActivityId()), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                }.getType());
+                mView.setQrCode(bean.getData().toString(), orderId);
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+
+    @JavascriptInterface
+    public String getParamsJson() {
+        Map<String, String> map = new HashMap<>();
+        map.put("uid", Consts.getUID());
+        map.put("channelCode", Consts.getUmengChannel());
+        map.put("versionCode", DeviceUtil.getVersionCode(mView.getActivity()));
+        return new Gson().toJson(map);
+    }
+
+
 }

+ 6 - 0
app/src/main/java/com/edufound/reader/model/EventFragmentModel.java

@@ -0,0 +1,6 @@
+package com.edufound.reader.model;
+
+import com.edufound.reader.contract.EventFragmentContract;
+
+public class EventFragmentModel implements EventFragmentContract.Model {
+}

+ 62 - 0
app/src/main/java/com/edufound/reader/presenter/EventFragmentPresenter.java

@@ -0,0 +1,62 @@
+package com.edufound.reader.presenter;
+
+import com.edufound.reader.adapter.FragmentEventAdapter;
+import com.edufound.reader.apiserver.ActivityEventServerImpl;
+import com.edufound.reader.base.BasePresenter;
+import com.edufound.reader.bean.ActivityEventBean;
+import com.edufound.reader.bean.EventListBean;
+import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.contract.EventFragmentContract;
+import com.edufound.reader.cusview.CusToast;
+import com.edufound.reader.model.EventFragmentModel;
+import com.edufound.reader.util.EfunboxUtil;
+import com.google.gson.reflect.TypeToken;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
+import com.orhanobut.logger.Logger;
+
+import java.io.IOException;
+import java.util.List;
+
+public class EventFragmentPresenter extends BasePresenter<EventFragmentContract.View> implements EventFragmentContract.Presenter {
+    EventFragmentModel mModel;
+    ActivityEventServerImpl mEventImpl;
+    FragmentEventAdapter mAdapter;
+
+    public EventFragmentPresenter() {
+        mModel = new EventFragmentModel();
+        mEventImpl = new ActivityEventServerImpl();
+    }
+
+
+    @Override
+    public void getAllEvent() {
+        mEventImpl.getEventListByType(new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<List<EventListBean>> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<List<EventListBean>>>() {
+                }.getType());
+                if (activityBean.getSuccess()) {
+                    if (activityBean.getData() != null) {
+                        //有活动
+                        mAdapter = new FragmentEventAdapter(mView.getActivity(), activityBean.getData());
+                        mView.getAllEventSuccess(mAdapter);
+                        return;
+                    } else {
+                        //没活动
+                        CusToast.getInstance(mView.getActivity()).show("获取活动失败", 1000);
+                    }
+                } else {
+                    CusToast.getInstance(mView.getActivity()).show("获取活动失败", 1000);
+                }
+                //没活动
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                //获取活动失败了,没活动
+                CusToast.getInstance(mView.getActivity()).show("获取活动失败", 1000);
+            }
+        });
+    }
+}

+ 1 - 1
app/src/main/java/com/edufound/reader/presenter/LoginAlertPresenter.java

@@ -169,7 +169,7 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
                         Consts.setmConstsUserBean(bean.getData());
                         getYFVip();
                         //检查活动
-                        EfunboxUtil.checkEvents(mView.getActivity(), mView.getRootView(), true);
+                        EfunboxUtil.checkEvents(mView.getActivity());
 
                     }
 

+ 175 - 57
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -1,11 +1,14 @@
 package com.edufound.reader.presenter;
 
 import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
+import android.widget.HorizontalScrollView;
+import android.widget.LinearLayout;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
 import android.widget.TextView;
@@ -26,6 +29,7 @@ import com.edufound.reader.bean.UserEventEnum;
 import com.edufound.reader.contract.MainContract;
 import com.edufound.reader.cusview.CusToast;
 import com.edufound.reader.fragment.CharacterFragment;
+import com.edufound.reader.fragment.EventFragment;
 import com.edufound.reader.fragment.MyTabFragment;
 import com.edufound.reader.fragment.RecommendFragment;
 import com.edufound.reader.listener.PopUtilClickListener;
@@ -37,7 +41,6 @@ import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.MMKVEncodeKey;
 import com.edufound.reader.util.MMKVUtil;
 import com.edufound.reader.util.SizeUtils;
-import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
@@ -60,6 +63,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
     OrderApiServerImpl mOrderApi;
     ActivityEventServerImpl mEventApi;
     MyTabFragment mUserFragment;
+    EventFragment mEventFragment;
     RecommendFragment mRecommendFragment;
     FragmentManager mFragmentManager;
     RecommendFragment mFollowFragment;
@@ -83,9 +87,11 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
         switch (id) {
             case R.id.main_left_tab_layout_myinfo:
                 //我的
+                Logger.e("我的");
                 if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
                     mRadioCheckIndex = 0;
                     mRecommendFragment = null;
+                    mEventFragment = null;
                     mFollowFragment = null;
                     mCharacterFragment = null;
                     if (mUserFragment == null) {
@@ -94,15 +100,32 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                     changeFragmentLayout(mUserFragment);
                     mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
                 } else {
-                    ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                    Logger.e("");
+//                    ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                }
+                break;
+
+            case R.id.main_left_tab_layout_event:
+                //活动
+                mRadioCheckIndex = 1;
+                mRecommendFragment = null;
+                mUserFragment = null;
+                mFollowFragment = null;
+                mCharacterFragment = null;
+                if (mEventFragment == null) {
+                    mEventFragment = new EventFragment();
                 }
+                changeFragmentLayout(mEventFragment);
+//                mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
                 break;
             case R.id.main_left_tab_layout_recommend:
                 //推荐
-                mRadioCheckIndex = 1;
-                ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                Logger.e("推荐");
+                mRadioCheckIndex = 2;
+//                ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
                 mUserFragment = null;
                 mFollowFragment = null;
+                mEventFragment = null;
                 mCharacterFragment = null;
                 if (mRecommendFragment == null) {
                     mRecommendFragment = new RecommendFragment(0);
@@ -112,10 +135,12 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 break;
             case R.id.main_left_tab_layout_follow:
                 //关注
+                Logger.e("关注");
                 if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
-                    mRadioCheckIndex = 2;
+                    mRadioCheckIndex = 3;
                     mUserFragment = null;
                     mCharacterFragment = null;
+                    mEventFragment = null;
                     mRecommendFragment = null;
                     if (mFollowFragment == null) {
                         mFollowFragment = new RecommendFragment(1);
@@ -128,11 +153,13 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 break;
             case R.id.main_left_tab_layout_character:
                 //任务
-                mRadioCheckIndex = 3;
+                Logger.e("任务");
+                mRadioCheckIndex = 4;
                 ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
                 mUserFragment = null;
                 mFollowFragment = null;
                 mRecommendFragment = null;
+                mEventFragment = null;
                 if (mCharacterFragment == null) {
                     mCharacterFragment = new CharacterFragment();
                 }
@@ -168,7 +195,21 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
 
     @Override
     public void checkModelIsDebug() {
+
         if (Consts.isIsDebug()) {
+//            {
+            HorizontalScrollView scrollView = new HorizontalScrollView(mView.getActivity());
+            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+            scrollView.setLayoutParams(params);
+            LinearLayout testlayout = new LinearLayout(mView.getActivity());
+            testlayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
+            testlayout.setDividerDrawable(new ColorDrawable() {
+                @Override
+                public int getIntrinsicWidth() {
+                    return SizeUtils.dp2px(mView.getActivity(), 50);
+                }
+            });
+            testlayout.setOrientation(LinearLayout.HORIZONTAL);
             TextView tv = new TextView(mView.getActivity());
             tv.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
             tv.setTextSize(SizeUtils.px2dp(mView.getActivity(), 30));
@@ -179,9 +220,79 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 @Override
                 public void onClick(View view) {
 //                    MMKVUtil.getInstance().clearAll();
+                    EfunboxUtil.toWebFlowerActivity(mView.getActivity(), "http://activity.ai160.com/index.html",null);
                 }
             });
-            mView.getRootView().addView(tv);
+            testlayout.addView(tv);
+//
+//
+//                ModelViewA modelViewA = new ModelViewA(mView.getActivity());
+//                modelViewA.initView("http://reader-apk.ai160.com/reader-apk/res/character_image.png", new View.OnClickListener() {
+//                    @Override
+//                    public void onClick(View v) {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view A right", 1000);
+//                    }
+//                });
+//
+//
+//                ModelViewB modelViewB = new ModelViewB(mView.getActivity());
+//                modelViewB.initView("http://reader-apk.ai160.com/reader-apk/res/character_image.png", new ModelViewB.OnClickBtnListener() {
+//                    @Override
+//                    public void clickLeft() {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view B left", 1000);
+//                    }
+//
+//                    @Override
+//                    public void clickRight() {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view B right", 1000);
+//                    }
+//                });
+//
+//
+//                ModelViewC modelViewC = new ModelViewC(mView.getActivity());
+//                modelViewC.initView("http://reader-apk.ai160.com/reader-apk/res/character_image.png");
+//                modelViewC.setItemClickListener(new ModelViewC.onItemClickListener() {
+//                    @Override
+//                    public void clickItem(View view, int position) {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view C position:" + position, 1000);
+//                    }
+//                });
+//
+//
+//                ModelViewD modelViewD = new ModelViewD(mView.getActivity());
+//                List<String> list = new ArrayList<>();
+//                for (int i = 0; i < 4; i++) {
+//                    list.add(i + "");
+//                }
+//                modelViewD.initView("http://reader-apk.ai160.com/reader-apk/res/character_image.png", list, new ModelViewD.OnClickBtnListener() {
+//                    @Override
+//                    public void clickLeft(Object object) {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view D 查看规则", 1000);
+//                    }
+//
+//                    @Override
+//                    public void clickRight(Object object) {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view D 排行榜", 1000);
+//                    }
+//
+//                    @Override
+//                    public void clickItem(Object object) {
+//                        CusToast.getInstance(mView.getActivity()).show("test model view D item:" + String.valueOf(object), 1000);
+//                    }
+//
+//
+//                });
+//
+//                testlayout.addView(modelViewA);
+//                testlayout.addView(modelViewB);
+//                testlayout.addView(modelViewC);
+//                testlayout.addView(modelViewD);
+            scrollView.addView(testlayout);
+//
+            mView.getRootView().addView(scrollView);
+//
+//            }
+
         }
     }
 
@@ -198,6 +309,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
             public void clickSubmit(Object object) {
 //                Toast.makeText(mView.getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
                 MMKVUtil.getInstance().encode(MMKVEncodeKey.USER_GRADE, EfunboxUtil.getEnumByCNGrade(object.toString()));
+                getLoginEvent();
             }
         });
 
@@ -209,7 +321,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
         mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Gson gson = new Gson();
                 try {
                     JSONObject object = new JSONObject(info.getRetDetail());
                     if (object.getString("code").equals("300") || object.getInt("code") == 300) {
@@ -224,25 +335,26 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                         }
 //                    registerMobile("18655365222");
                         getYFVip();
-                        mView.setCheckIndex();
                     } else {
                         HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
                         }.getType());
-                        Logger.e("info.get:" + info.getRetDetail());
                         Consts.setUID(bean.getData().getUid());
                         //用户是否登录,登录了,创建Consts的userbean
                         Consts.setmConstsUserBean(bean.getData());
-                        mView.setCheckIndex();
                         mUserApi.loginSign(mView.getActivity(), new Callback() {
                             @Override
                             public void onSuccess(HttpInfo info) throws IOException {
                                 try {
                                     HttpResultBean<SignBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<SignBean>>() {
                                     }.getType());
-                                    if (bean.getData().getIsSign()) {
-                                        CusToast.getInstance(mView.getActivity()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000);
+                                    if (bean.getData() != null) {
+                                        if (bean.getData().getIsSign()) {
+                                            CusToast.getInstance(mView.getActivity()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000);
+                                        }
+                                    } else {
+                                        Logger.e("签到参数 isSign是空的");
                                     }
-                                    Logger.e("loginSign:-----loginSign---loginSign---loginSign");
+
                                 } catch (Exception e) {
                                     e.printStackTrace();
                                 } finally {
@@ -260,48 +372,11 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 } catch (JSONException e) {
                     e.printStackTrace();
                 } finally {
-                    //检查有没有用户信息
-                    if (Consts.getmConstsUserBean() == null && Consts.getmConstsBaiDuUserBean() == null) {
-                        //百度跟自己的都没有用户信息,请求有没有注册活动,有活动显示活动,没活动不显示
-                        //请求接口
-                        mEventApi.getEventByType(ActivityEventServerImpl.EVENT_TYPE_LOGIN, new Callback() {
-                            @Override
-                            public void onSuccess(HttpInfo info) throws IOException {
-                                Logger.e("获取活动成功:" + info.getRetDetail());
-                                HttpResultBean<ActivityEventBean> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<ActivityEventBean>>() {
-                                }.getType());
-                                if (Boolean.valueOf(activityBean.getSuccess())) {
-                                    //接口返回成功
-                                    if (activityBean.getData() != null) {
-                                        //有活动
-                                        PopWindowUtil.RegistrationEventsWindow(mView.getActivity(), mView.getRootView(), new PopUtilClickListener() {
-                                            @Override
-                                            public void clickCancel() {
-
-                                            }
-
-                                            @Override
-                                            public void clickSubmit(Object object) {
-                                                //点击进行登录逻辑
-                                                EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView());
-                                            }
-                                        });
-                                    } else {
-                                        //没活动
-                                    }
-                                }
 
-                            }
+                    //有没有用户都先检查活动
+                    EfunboxUtil.checkEvents(mView.getActivity());
+                    getLoginEvent();
 
-                            @Override
-                            public void onFailure(HttpInfo info) throws IOException {
-                                Logger.e("获取活动失败:" + info.getRetDetail());
-                            }
-                        });
-
-                    } else {
-                        EfunboxUtil.checkEvents(mView.getActivity(), mView.getRootView(), true);
-                    }
                 }
 
 
@@ -315,11 +390,56 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 } else {
                     //选择过年纪。无处理
                 }
-                mView.setCheckIndex();
             }
         });
     }
 
+
+    private void getLoginEvent() {
+        //检查有没有用户信息
+        if (Consts.getmConstsUserBean() == null && Consts.getmConstsBaiDuUserBean() == null) {
+            //百度跟自己的都没有用户信息,请求有没有注册活动,有活动显示活动,没活动不显示
+            //请求接口
+            mEventApi.getEventByType(ActivityEventServerImpl.EVENT_TYPE_LOGIN, new Callback() {
+                @Override
+                public void onSuccess(HttpInfo info) throws IOException {
+                    Logger.e("获取活动成功:" + info.getRetDetail());
+                    HttpResultBean<ActivityEventBean> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<ActivityEventBean>>() {
+                    }.getType());
+                    if (Boolean.valueOf(activityBean.getSuccess())) {
+                        //接口返回成功
+                        if (activityBean.getData() != null) {
+                            //有活动
+                            PopWindowUtil.RegistrationEventsWindow(mView.getActivity(), mView.getRootView(), new PopUtilClickListener() {
+                                @Override
+                                public void clickCancel() {
+
+                                }
+
+                                @Override
+                                public void clickSubmit(Object object) {
+                                    //点击进行登录逻辑
+                                    EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView());
+                                }
+                            });
+                        } else {
+                            //没活动
+                        }
+                    }
+
+                }
+
+                @Override
+                public void onFailure(HttpInfo info) throws IOException {
+                    Logger.e("获取活动失败:" + info.getRetDetail());
+                }
+            });
+
+        } else {
+
+        }
+    }
+
     private void getYFVip() {
 
         if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
@@ -330,8 +450,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                     public void onSuccess(HttpInfo info) throws IOException {
                         HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
                         }.getType());
-                        Logger.e("info.getRetDetail():" + info.getRetDetail());
-                        Logger.e("bean.getData():" + bean.getData());
                         if (!TextUtils.isEmpty(bean.getData())) {
                             Consts.setIsYFVip(true);
                         }

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

@@ -352,6 +352,7 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         mOrderApi.getAuth(mView.getActivity(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("获取是否有权限:" + info.getRetDetail());
                 HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
                 }.getType());
                 mView.getIsBuySuccess(TimeUtil.timeStamp2Date(Long.valueOf(bean.getData()), "yyyy-MM-dd"));
@@ -431,7 +432,9 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
                 //是VIP
                 mView.getIsBuySuccess(TimeUtil.getDateFromSeconds(String.valueOf(Consts.getmConstsBaiDuUserBean().getUserInfo().getEndTimestamp())));
             }
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) || Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())
+                || Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())
+                || Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
             getAuth();
         }
     }

+ 40 - 7
app/src/main/java/com/edufound/reader/presenter/PayPresenter.java

@@ -21,8 +21,10 @@ import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.PayContract;
 import com.edufound.reader.model.PayModel;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.DeviceUuidFactory;
 import com.edufound.reader.util.QRCodeUtil;
 import com.edufound.reader.util.SizeUtils;
+import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
@@ -36,12 +38,13 @@ import java.util.Map;
 import androidx.annotation.NonNull;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
+import org.json.JSONObject;
+
 public class PayPresenter extends BasePresenter<PayContract.View> implements PayContract.Presenter {
 
     PayModel mModel;
     OrderApiServerImpl mOrderApi;
     List<PayResultBean> mPayResult;
-    Map<String, String> createOrderMap;
     String nowOrderId = null;
 
     public PayPresenter() {
@@ -139,21 +142,51 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
             ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE);
             Logger.e("选择了...." + ((PayItemHolder) view.getTag()).mPayMoney.getText().toString());
 
-            mModel.getPayQRCode(mView.getActivity(), mPayResult.get(position).getId(), new Callback() {
+            Map<String, String> createOrderMap = new HashMap<>();
+            createOrderMap.put("channel", Consts.getUmengChannel());
+            createOrderMap.put("deviceID", DeviceUuidFactory.getUuid());
+            createOrderMap.put("first", "false");
+            createOrderMap.put("payType", mPayResult.get(position).getPayType());
+            createOrderMap.put("productId", mPayResult.get(position).getId());
+            createOrderMap.put("uid", Consts.getUID());
+
+            //创建订单
+            mOrderApi.createdOrder(mView.getActivity(), new Gson().toJson(createOrderMap), new Callback() {
                 @Override
                 public void onSuccess(HttpInfo info) throws IOException {
-                    handler.removeMessages(2);
-                    HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
-                    }.getType());
-                    mView.setQRCode(bean.getData().toString());
+                    try {
+                        Logger.e("创建订单成功:" + info.getRetDetail());
+                        JSONObject object = new JSONObject(info.getRetDetail());
+                        JSONObject json = object.getJSONObject("data");
+                        Logger.e("json:" + json);
+                        nowOrderId = json.getString("orderId");
+                        mModel.getPayQRCode(mView.getActivity(), mPayResult.get(position).getId(), new Callback() {
+                            @Override
+                            public void onSuccess(HttpInfo info) throws IOException {
+                                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                                }.getType());
+                                mView.setQRCode(bean.getData().toString());
+                                handler.sendEmptyMessage(2);
+                            }
+
+                            @Override
+                            public void onFailure(HttpInfo info) throws IOException {
+
+                            }
+                        });
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+
                 }
 
                 @Override
                 public void onFailure(HttpInfo info) throws IOException {
-
+                    Logger.e("创建订单失败:" + info.getRetDetail());
                 }
             });
 
+
         });
         itemFrame.addView(view);
         if (position >= mPayResult.size() - 1) {

+ 0 - 1
app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java

@@ -332,7 +332,6 @@ public class PopWindowPresneter {
                 Logger.e("info:" + info.getRetDetail());
                 HttpResultBean<List<MyOrderListBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<MyOrderListBean>>>() {
                 }.getType());
-                Logger.e("bean:" + bean);
                 if (bean.getData() != null && bean.getData().size() > 0) {
                     RecyclerView rv = view.findViewById(R.id.popupwindow_myorder_recyclerview);
                     PopupMyOrderAdapter popupMyOrderAdapter = new PopupMyOrderAdapter(context, bean.getData());

+ 100 - 10
app/src/main/java/com/edufound/reader/presenter/WebPresenter.java

@@ -1,9 +1,11 @@
 package com.edufound.reader.presenter;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.os.Build;
+import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
 import android.webkit.JsResult;
@@ -16,21 +18,31 @@ import android.webkit.WebViewClient;
 import android.widget.FrameLayout;
 
 import com.edufound.reader.base.BasePresenter;
+import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.bean.PayResultBean;
 import com.edufound.reader.contract.WebContract;
 import com.edufound.reader.jsinterfaces.WebActivityJsInterfaces;
+import com.edufound.reader.model.PayModel;
 import com.edufound.reader.receiver.ShowPageLoadingReceiver;
+import com.edufound.reader.tmailsdk.TMailSDKUtil;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.DeviceUtil;
-import com.edufound.reader.util.DeviceUuidFactory;
 import com.google.gson.Gson;
+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 WebPresenter extends BasePresenter<WebContract.View> implements WebContract.Presenter {
 
+    PayModel mPayModel;
     WebActivityJsInterfaces mJsInterfaces;
+    String activityId;
 
     public WebPresenter() {
-
+        mPayModel = new PayModel();
     }
 
     @Override
@@ -43,6 +55,7 @@ public class WebPresenter extends BasePresenter<WebContract.View> implements Web
     @Override
     public WebView initWebView(Intent intent) {
         WebView webview = new WebView(Consts.getmApplicAtion());
+//        WebView webview = new WebView(mView.getActivity());
         webview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
         if (Build.VERSION.SDK_INT >= 19) {
             webview.getSettings().setLoadsImagesAutomatically(true);
@@ -67,6 +80,10 @@ public class WebPresenter extends BasePresenter<WebContract.View> implements Web
         webview.getSettings().setUseWideViewPort(true);
         webview.getSettings().setJavaScriptEnabled(true);
         webview.getSettings().setDomStorageEnabled(false);
+        webview.getSettings().setSupportZoom(true);
+        webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
+        webview.getSettings().setLoadWithOverviewMode(true);
+        webview.getSettings().setUseWideViewPort(true);
         webview.setWebChromeClient(new WebChromeClient() {
             @Override
             public Bitmap getDefaultVideoPoster() {
@@ -135,7 +152,9 @@ public class WebPresenter extends BasePresenter<WebContract.View> implements Web
                 if (!webview.getSettings().getLoadsImagesAutomatically()) {
                     webview.getSettings().setLoadsImagesAutomatically(true);
                 }
-                mView.hideLoading();
+                if (mView != null) {
+                    mView.hideLoading();
+                }
                 super.onPageFinished(view, url);
             }
 
@@ -143,27 +162,98 @@ public class WebPresenter extends BasePresenter<WebContract.View> implements Web
         webview.addJavascriptInterface(mJsInterfaces, "efunboxJS");
 
         //加载地址
-        String url = intent.getStringExtra("loadUrl") + "?";
-        Logger.e("paramsJson:" + intent.getStringExtra("paramsJson"));
+        String url = intent.getStringExtra("loadUrl").trim() + "?";
         Gson gson = new Gson();
-        WebParams params = gson.fromJson(intent.getStringExtra("paramsJson"), WebParams.class);
         StringBuffer buffer = new StringBuffer();
-        buffer.append("channelCode=" + params.channelCode);
-        buffer.append("&uid=" + params.uid);
-        buffer.append("&versionCode=" + params.versionCode);
+        if (!TextUtils.isEmpty(intent.getStringExtra("paramsJson"))) {
+            WebParams params = gson.fromJson(intent.getStringExtra("paramsJson"), WebParams.class);
+            if (!TextUtils.isEmpty(params.channelCode)) {
+                buffer.append("channelCode=" + params.channelCode);
+            } else {
+                buffer.append("a=a");
+            }
+            if (!TextUtils.isEmpty(params.uid)) {
+                buffer.append("&uid=" + params.uid);
+            }
+            if (!TextUtils.isEmpty(params.versionCode)) {
+                buffer.append("&versionCode=" + params.versionCode);
+            }
+            if (!TextUtils.isEmpty(params.activityId)) {
+                buffer.append("&activityId=" + params.activityId);
+                activityId = params.activityId;
+            }
+            buffer.append("&width=" + DeviceUtil.getWidth(mView.getActivity()));
+            buffer.append("&height=" + DeviceUtil.getHeight(mView.getActivity()));
+        }
         url += buffer.toString();
-        Logger.e("网页加载地址:" + url);
+        Logger.e("webactivity-loadurl:" + url);
         webview.loadUrl(url);
         Intent hideLoading = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_HIDE);
         Consts.getmApplicAtion().getApplicationContext().sendBroadcast(hideLoading);
         return webview;
     }
 
+    @Override
+    public WebActivityJsInterfaces getJSInterfaces() {
+        return mJsInterfaces;
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == TMailSDKUtil.TMAIL_PAY_RESULT_CODE && resultCode == Activity.RESULT_OK) {
+            if (data != null) {
+                boolean isPaySuccess = data.getBooleanExtra("isPaySuccess", false);
+                String paySuccessDataJson = data.getStringExtra("paySuccessData");
+                int payErrorCode = data.getIntExtra("payErrorCode", -1);
+                String payErrorMsg = data.getStringExtra("payErrorMsg");
+                Logger.e("qrcode, isPaySuccess=" + isPaySuccess +
+                        ";paySuccessDataJson=" + paySuccessDataJson +
+                        ";payErrorCode=" + payErrorCode +
+                        ";payErrorMsg=" + payErrorMsg);
+                mView.loadJSMethodPost("TMailPayCallBack('" + isPaySuccess + "','" + paySuccessDataJson + "')");
+            }
+        }
+    }
+
+    @Override
+    public void isPaySuccess(String orderId) {
+        if (TextUtils.isEmpty(orderId)) {
+            Logger.e("orderId是空的");
+            return;
+        }
+        mPayModel.isPay(mView.getActivity(), orderId, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
+                }.getType());
+                Logger.e("bean.get:" + info.getRetDetail());
+                Logger.e("status:" + bean.getData().getPayStatus());
+                if (bean.getData().getPayStatus().equals("SUCCESS")) {
+                    mView.loadJSMethodPost("TMailPayCallBack('" + true + "','{\"status\":\"" + bean.getData().getPayStatus() + "\"}')");
+                } else {
+                    mView.loadJSMethodPost("TMailPayCallBack('" + false + "','{\"status\":\"" + bean.getData().getPayStatus() + "\"}')");
+                }
+
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public String getActivityId() {
+        return activityId;
+    }
+
 
     class WebParams {
         private String channelCode;
         private String uid;
         private String versionCode;
+        private String activityId;
 
     }
 }

+ 5 - 1
app/src/main/java/com/edufound/reader/tmailsdk/TMailSDKUtil.java

@@ -94,6 +94,10 @@ public class TMailSDKUtil {
                                 Logger.e("获取天猫手机号成功哦--info:" + info.getRetDetail());
                                 HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
                                 }.getType());
+                                if (!bean.getSuccess()) {
+                                    Toast.makeText(context, bean.getMessage(), Toast.LENGTH_SHORT).show();
+                                    return;
+                                }
                                 Consts.setmConstsUserBean(bean.getData());
                                 Consts.setUID(bean.getData().getUid());
                                 Toast.makeText(context, "登录成功", Toast.LENGTH_SHORT).show();
@@ -116,7 +120,7 @@ public class TMailSDKUtil {
                                     }
                                 });
                                 //检查活动
-                                EfunboxUtil.checkEvents(context, ((BaseActivity) context).getRootView(), true);
+                                EfunboxUtil.checkEvents(context);
                             }
 
                             @Override

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

@@ -181,6 +181,18 @@ public class Consts {
         Consts.mConstsBaiDuUserBean = mConstsBaiDuUserBean;
     }
 
+
+    public static boolean hasOtherEvent=false;
+
+
+    public static boolean isHasOtherEvent() {
+        return hasOtherEvent;
+    }
+
+    public static void setHasOtherEvent(boolean hasOtherEvent) {
+        Consts.hasOtherEvent = hasOtherEvent;
+    }
+
     public static boolean isIsYFVip() {
         return isYFVip;
     }

+ 47 - 26
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -14,6 +14,7 @@ import com.edufound.reader.activity.WebActivity;
 import com.edufound.reader.apiserver.ActivityEventServerImpl;
 import com.edufound.reader.bean.ActivityEventBean;
 import com.edufound.reader.bean.ChannelCodeEnum;
+import com.edufound.reader.bean.EventListBean;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.listener.PopUtilClickListener;
@@ -30,6 +31,7 @@ import com.orhanobut.logger.Logger;
 import java.io.IOException;
 import java.text.DecimalFormat;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public class EfunboxUtil {
@@ -160,6 +162,8 @@ public class EfunboxUtil {
             return Consts.isIsYFVip();
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
             return Consts.isIsYFVip();
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
+            return Consts.isIsYFVip();
         }
         return false;
     }
@@ -241,35 +245,47 @@ public class EfunboxUtil {
     /**
      * 检查是否有活动
      */
-    public static void checkEvents(Context context, View parent, boolean needWindow) {
+    public static void checkEvents(Context context) {
         //检查有没有活动
         ActivityEventServerImpl mEventApi = new ActivityEventServerImpl();
-        mEventApi.getEventByType(ActivityEventServerImpl.EVENT_TYPE_FLOWER, new Callback() {
+        mEventApi.getEventListByType(new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取其他活动:" + info.getRetDetail());
-                HttpResultBean<ActivityEventBean> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<ActivityEventBean>>() {
-                }.getType());
-                if (Boolean.valueOf(activityBean.getSuccess())) {
-                    //接口返回成功
-                    if (activityBean.getData() != null) {
-                        Consts.setIsHaveFlowerEvent(true);
-                        //有活动
-                        PopWindowUtil.webviewEventsWindow(context, parent, new PopUtilClickListener() {
-                            @Override
-                            public void clickCancel() {
-
-                            }
-
-                            @Override
-                            public void clickSubmit(Object object) {
-                                //去webview界面,加载活动地址
-                                toWebFlowerActivity(context);
-                            }
-                        }, needWindow);
-                    } else {
-                        //没活动
+                try {
+                    HttpResultBean<List<EventListBean>> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<List<EventListBean>>>() {
+                    }.getType());
+                    if (Boolean.valueOf(activityBean.getSuccess())) {
+                        //接口返回成功
+
+                        if (activityBean.getData() != null && activityBean.getData().size() > 0) {
+                            Consts.setHasOtherEvent(true);
+
+//                        Consts.setIsHaveFlowerEvent(true);
+//                        //有活动
+//                        PopWindowUtil.webviewEventsWindow(context, parent, new PopUtilClickListener() {
+//                            @Override
+//                            public void clickCancel() {
+//
+//                            }
+//
+//                            @Override
+//                            public void clickSubmit(Object object) {
+//                                //去webview界面,加载活动地址
+//                                toWebFlowerActivity(context);
+//                            }
+//                        }, needWindow);
+
+                        } else {
+                            //没活动
+                            Consts.setHasOtherEvent(false);
+                        }
+
                     }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                } finally {
+                    Intent intent = new Intent("com.edufound.reader.main.setindex");
+                    context.sendBroadcast(intent);
                 }
 
             }
@@ -277,20 +293,25 @@ public class EfunboxUtil {
             @Override
             public void onFailure(HttpInfo info) throws IOException {
                 Logger.e("获取活动失败:" + info.getRetDetail());
+                Intent intent = new Intent("com.edufound.reader.main.setindex");
+                context.sendBroadcast(intent);
             }
         });
 
     }
 
-    public static void toWebFlowerActivity(Context context) {
+    public static void toWebFlowerActivity(Context context, String url, String activityId) {
         Intent showLoadingIntent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW);
         Consts.getmApplicAtion().getApplicationContext().sendBroadcast(showLoadingIntent);
         Intent intent = new Intent(context, WebActivity.class);
-        intent.putExtra("loadUrl", Consts.getEventTypeFlowerUrl());
+        intent.putExtra("loadUrl", url);
         Map<String, String> map = new HashMap<>();
         map.put("uid", Consts.getUID());
         map.put("channelCode", Consts.getUmengChannel());
         map.put("versionCode", DeviceUtil.getVersionCode(context));
+        if (activityId != null) {
+            map.put("activityId", activityId);
+        }
         intent.putExtra("paramsJson", new Gson().toJson(map));
         context.startActivity(intent);
     }

+ 38 - 0
app/src/main/java/com/edufound/reader/util/HorizontalItemDecoration.java

@@ -0,0 +1,38 @@
+package com.edufound.reader.util;
+
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.view.View;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import io.reactivex.rxjava3.annotations.NonNull;
+
+/**
+ * 定义水平方向的距离
+ */
+public class HorizontalItemDecoration extends RecyclerView.ItemDecoration {
+    private int space;//定义2个Item之间的距离
+
+    public HorizontalItemDecoration(Context context, int space) {
+        this.space = SizeUtils.dp2px(context, space);
+    }
+
+    @Override
+    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
+        int position = parent.getChildAdapterPosition(view);
+        int totalCount = parent.getAdapter().getItemCount();
+        if (position == 0) {//第一个
+            outRect.left = 0;
+            outRect.right = space / 2;
+        } else if (position == totalCount - 1) {//最后一个
+            outRect.left = space / 2;
+            outRect.right = space;
+        } else {//中间其它的
+            outRect.left = space / 2;
+            outRect.right = space / 2;
+        }
+    }
+
+}

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

@@ -6,6 +6,7 @@ import com.edufound.reader.cusview.CusToast;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.interceptor.ExceptionInterceptor;
 import com.okhttplib.interceptor.ResultInterceptor;
+import com.orhanobut.logger.Logger;
 
 /**
  * Http拦截器
@@ -33,6 +34,8 @@ public class HttpInterceptor {
     public static com.okhttplib.interceptor.ExceptionInterceptor ExceptionInterceptor = new ExceptionInterceptor() {
         @Override
         public HttpInfo intercept(HttpInfo info) throws Exception {
+            //弹不出toast
+//            Toast.makeText(Consts.getmApplicAtion(), "Code:" + info.getRetCode() + "--Detail:" + info.getRetDetail(), Toast.LENGTH_LONG).show();
             switch (info.getRetCode()) {
                 case HttpInfo.NonNetwork:
 //                    Toast.makeText(Consts.getmApplicAtion(), "网络中断", Toast.LENGTH_SHORT).show();

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


+ 11 - 1
app/src/main/res/layout/activity_main.xml

@@ -31,12 +31,14 @@
             app:layout_constraintTop_toTopOf="parent">
 
             <LinearLayout
+                android:id="@+id/main_left_tab_linearlayout"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_gravity="left"
                 android:layout_marginLeft="30dp"
                 android:layout_weight="1.3"
-                android:orientation="vertical">
+                android:orientation="vertical"
+                android:visibility="gone">
 
 
                 <RadioGroup
@@ -56,6 +58,14 @@
                         android:button="@null"></RadioButton>
 
                     <RadioButton
+                        android:id="@+id/main_left_tab_layout_event"
+                        android:layout_width="146dp"
+                        android:layout_height="146dp"
+                        android:background="@drawable/main_left_tab_event_selector"
+                        android:button="@null"
+                        android:visibility="gone"></RadioButton>
+
+                    <RadioButton
                         android:id="@+id/main_left_tab_layout_recommend"
                         android:layout_width="146dp"
                         android:layout_height="146dp"

+ 41 - 0
app/src/main/res/layout/activity_web.xml

@@ -20,4 +20,45 @@
         android:layout_marginLeft="32dp"
         android:layout_marginTop="20dp"
         android:src="@drawable/main_back"></ImageView>
+
+
+    <FrameLayout
+        android:id="@+id/activity_web_qrcode_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/translucent_background"
+        android:clickable="false"
+        android:visibility="gone">
+
+        <FrameLayout
+            android:layout_width="575dp"
+            android:layout_height="495dp"
+            android:layout_gravity="center"
+            android:background="@drawable/activity_web_qrcode_bg">
+
+            <FrameLayout
+                android:layout_width="247dp"
+                android:layout_height="247dp"
+                android:layout_gravity="center"
+                android:background="@drawable/mi_sound_login_qrcode_bg">
+
+                <ImageView
+                    android:id="@+id/activity_web_qrcode_img"
+                    android:layout_width="200dp"
+                    android:layout_height="200dp"
+                    android:layout_gravity="center"></ImageView>
+            </FrameLayout>
+
+            <ImageView
+                android:id="@+id/activity_web_close_qrlayout"
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:layout_gravity="right"
+                android:src="@drawable/mi_sound_close"></ImageView>
+
+        </FrameLayout>
+
+
+    </FrameLayout>
+
 </FrameLayout>

+ 47 - 0
app/src/main/res/layout/adapter_item_cusview_model_view_c.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="381dp"
+    android:layout_height="38dp"
+    android:layout_gravity="center"
+    android:background="@color/blueviolet">
+
+    <ImageView
+        android:layout_width="37dp"
+        android:layout_height="37dp"
+        android:background="@color/red"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></ImageView>
+
+    <TextView
+        android:id="@+id/adapter_item_cusview_model_view_c_nickname"
+        android:layout_width="200dp"
+        android:layout_height="37dp"
+        android:gravity="center|left"
+        android:text="昵称"
+        android:textColor="#333333"
+        android:textSize="20dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.37"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></TextView>
+
+
+    <TextView
+        android:id="@+id/adapter_item_cusview_model_view_c_score"
+        android:layout_width="wrap_content"
+        android:layout_height="37dp"
+        android:gravity="center|left"
+        android:text="99"
+        android:textColor="#383838"
+        android:textSize="20dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"></TextView>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 171 - 0
app/src/main/res/layout/cusview_model_view_c.xml

@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="428dp"
+    android:layout_height="598dp"
+    android:layout_gravity="center">
+
+    <ImageView
+        android:id="@+id/model_view_c_background"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/grassgreen"
+        android:scaleType="fitXY"></ImageView>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="381dp"
+        android:layout_height="104dp"
+        android:layout_marginTop="128dp"
+        android:background="@color/coral"
+        app:layout_constraintBottom_toBottomOf="@+id/model_view_c_background"
+        app:layout_constraintEnd_toEndOf="@+id/model_view_c_background"
+        app:layout_constraintStart_toStartOf="@+id/model_view_c_background"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.0">
+
+        <ImageView
+            android:id="@+id/model_view_c_icon"
+            android:layout_width="94dp"
+            android:layout_height="76dp"
+            android:layout_marginStart="13dp"
+            android:background="@color/red"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHorizontal_bias="0.0"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"></ImageView>
+
+        <TextView
+            android:id="@+id/model_view_c_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="春夏秋冬"
+            android:textSize="26dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHorizontal_bias="0.05"
+            app:layout_constraintStart_toEndOf="@+id/model_view_c_icon"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintVertical_bias="0.19"></TextView>
+
+
+        <LinearLayout
+            android:layout_width="265dp"
+            android:layout_height="30dp"
+            android:gravity="left|center"
+            android:orientation="horizontal"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintHorizontal_bias="1.0"
+            app:layout_constraintStart_toEndOf="@+id/model_view_c_icon"
+            app:layout_constraintTop_toBottomOf="@+id/model_view_c_name"
+            app:layout_constraintVertical_bias="0.32999998">
+
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:orientation="horizontal">
+
+
+                <ImageView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginTop="3dp"
+                    android:layout_weight="1"
+                    android:scaleType="center"
+                    android:src="@drawable/adapter_item_record_authority_allcount"></ImageView>
+
+                <TextView
+                    android:id="@+id/model_view_c_allcount_num"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center|left"
+                    android:layout_weight="2"
+                    android:gravity="center|left"
+                    android:text="1234"
+                    android:textColor="#96A3B4"
+                    android:textSize="20dp"></TextView>
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginTop="3dp"
+                    android:layout_weight="1"
+                    android:scaleType="center"
+                    android:src="@drawable/adapter_item_record_thumb"></ImageView>
+
+                <TextView
+                    android:id="@+id/model_view_c_thumb_num"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center|left"
+                    android:layout_weight="2"
+                    android:gravity="center|left"
+                    android:text="1234"
+                    android:textColor="#96A3B4"
+                    android:textSize="20dp"></TextView>
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginTop="3dp"
+                    android:layout_weight="1"
+                    android:scaleType="center"
+                    android:src="@drawable/adapter_item_record_stars"></ImageView>
+
+                <TextView
+                    android:id="@+id/model_view_c_start_num"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center|left"
+                    android:layout_weight="2"
+                    android:gravity="center|left"
+                    android:text="1234"
+                    android:textColor="#96A3B4"
+                    android:textSize="20dp"></TextView>
+            </LinearLayout>
+
+        </LinearLayout>
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="308dp"
+        android:layout_marginLeft="30dp"
+        android:layout_marginRight="30dp"
+        android:background="@color/tomato"
+        app:layout_constraintBottom_toBottomOf="@+id/model_view_c_background"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/model_view_c_background"
+        app:layout_constraintVertical_bias="1.0">
+
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/model_view_c_recyclerview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"></androidx.recyclerview.widget.RecyclerView>
+
+    </FrameLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 52 - 60
app/src/main/res/layout/fragment_main_character.xml

@@ -1,89 +1,81 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="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_gravity="center"
-        android:layout_marginLeft="25dp"
-        android:paddingTop="30dp">
+    xmlns:app="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_gravity="center"
+    android:layout_marginLeft="25dp"
+    android:paddingTop="30dp">
 
 
     <HorizontalScrollView
-            android:id="@+id/fragment_main_character_scrollview"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:scrollbars="none">
+        android:id="@+id/fragment_main_character_scrollview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scrollbars="none">
 
 
         <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:orientation="horizontal">
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
 
             <FrameLayout
-                    android:id="@+id/item1"
-                    android:layout_width="wrap_content"
-                    android:layout_height="match_parent">
-
-                <LinearLayout
-                        android:layout_width="326dp"
-                        android:layout_height="match_parent"
-                        android:divider="@drawable/fragment_user_info_divider"
-                        android:orientation="vertical"
-                        android:showDividers="middle">
-
-                    <TextView
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:gravity="center|left"
-                            android:text="个人信息"
-                            android:textColor="@color/white"
-                            android:textSize="26dp"
-                            android:visibility="invisible"></TextView>
+                android:id="@+id/item1"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent">
+
+                <FrameLayout
+                    android:layout_width="326dp"
+                    android:layout_height="match_parent"
+                    android:divider="@drawable/fragment_user_info_divider"
+                    android:orientation="vertical"
+                    android:showDividers="middle">
 
 
                     <ImageView
-                            android:id="@+id/fragment_main_character_img"
-                            android:layout_width="match_parent"
-                            android:layout_height="match_parent"
-                            android:layout_marginBottom="35dp"
-                            android:scaleType="fitXY"></ImageView>
+                        android:id="@+id/fragment_main_character_img"
+                        android:layout_width="match_parent"
+                        android:layout_height="598dp"
+                        android:layout_gravity="bottom"
+                        android:layout_marginBottom="35dp"
+                        android:scaleType="fitXY"></ImageView>
 
-                </LinearLayout>
+                </FrameLayout>
             </FrameLayout>
 
 
             <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:divider="@drawable/fragment_user_info_divider"
-                    android:orientation="vertical"
-                    android:paddingLeft="30dp"
-                    android:showDividers="middle">
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:divider="@drawable/fragment_user_info_divider"
+                android:orientation="vertical"
+                android:paddingLeft="30dp"
+                android:showDividers="middle">
 
                 <TextView
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center|left"
-                        android:paddingLeft="10dp"
-                        android:text="全部资源"
-                        android:textColor="@color/white"
-                        android:textSize="26dp"></TextView>
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center|left"
+                    android:paddingLeft="10dp"
+                    android:text="全部资源"
+                    android:textColor="@color/white"
+                    android:textSize="26dp"></TextView>
 
 
                 <GridLayout
-                        android:id="@+id/fragment_my_recyclerview"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:layout_gravity="center"
-                        android:orientation="vertical"></GridLayout>
+                    android:id="@+id/fragment_my_recyclerview"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:orientation="vertical"></GridLayout>
             </LinearLayout>
 
             <Space
-                    android:id="@+id/fragment_main_character_bottomview"
-                    android:layout_width="50dp"
-                    android:layout_height="match_parent"></Space>
+                android:id="@+id/fragment_main_character_bottomview"
+                android:layout_width="50dp"
+                android:layout_height="match_parent"></Space>
         </LinearLayout>
     </HorizontalScrollView>
 

+ 19 - 0
app/src/main/res/layout/fragment_main_event.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    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_gravity="center"
+    android:layout_marginLeft="25dp"
+    android:paddingTop="30dp">
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/fragment_main_event_recyclerview"
+        android:layout_width="match_parent"
+        android:layout_height="598dp"
+        android:layout_gravity="center"
+        android:orientation="horizontal"></androidx.recyclerview.widget.RecyclerView>
+
+</LinearLayout>