소스 검색

Merge remote-tracking branch 'origin/2.8' into sheep2.0

# Conflicts:
#	app/build.gradle
#	app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java
#	build.gradle
zengjiebin 7 년 전
부모
커밋
95bd75e2d6
100개의 변경된 파일3736개의 추가작업 그리고 2714개의 파일을 삭제
  1. 7 5
      app/build.gradle
  2. BIN
      app/libs/BaiduLBS_Android.jar
  3. BIN
      app/libs/mdsdk.jar
  4. 4 6
      app/proguard-rules.pro
  5. 234 112
      app/src/main/AndroidManifest.xml
  6. 1 1
      app/src/main/java/com/kfzs/duanduan/ActDownloadMgr.java
  7. 2 0
      app/src/main/java/com/kfzs/duanduan/ActMain.java
  8. 2 11
      app/src/main/java/com/kfzs/duanduan/BaseCompatFragment.java
  9. 3 2
      app/src/main/java/com/kfzs/duanduan/KFZSApp.java
  10. 3 0
      app/src/main/java/com/kfzs/duanduan/event/EventTypes.java
  11. 2 1
      app/src/main/java/com/kfzs/duanduan/fragment/AbsFgtMyMoney.java
  12. 2 1
      app/src/main/java/com/kfzs/duanduan/fragment/FgtCreditCardProgressQuery.java
  13. 2 1
      app/src/main/java/com/kfzs/duanduan/fragment/FgtCreditCardTaskList.java
  14. 19 64
      app/src/main/java/com/kfzs/duanduan/fragment/FgtFind.java
  15. 24 11
      app/src/main/java/com/kfzs/duanduan/fragment/FgtFindChild.java
  16. 3 2
      app/src/main/java/com/kfzs/duanduan/fragment/FgtFriendExtractPage.java
  17. 274 0
      app/src/main/java/com/kfzs/duanduan/fragment/FgtMiDong.java
  18. 39 48
      app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java
  19. 3 2
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSignRankings.java
  20. 355 179
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java
  21. 2 4
      app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java
  22. 14 4
      app/src/main/java/com/kfzs/duanduan/utils/dlg/DeviceUtils.java
  23. 0 16
      app/src/main/java/com/sheep/gamegroup/di/components/AccountAndSercuritComponent.java
  24. 0 16
      app/src/main/java/com/sheep/gamegroup/di/components/HomePageComponent.java
  25. 0 22
      app/src/main/java/com/sheep/gamegroup/di/modules/AccountAndSercuritModule.java
  26. 0 23
      app/src/main/java/com/sheep/gamegroup/di/modules/HomePageModule.java
  27. 7 4
      app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java
  28. 3 3
      app/src/main/java/com/sheep/gamegroup/heler/DownloadHelper.java
  29. 14 8
      app/src/main/java/com/sheep/gamegroup/heler/FindAppHelper.java
  30. 96 5
      app/src/main/java/com/sheep/gamegroup/heler/TaskHelper.java
  31. 0 1
      app/src/main/java/com/sheep/gamegroup/model/api/BaseMessageConverter.java
  32. 30 0
      app/src/main/java/com/sheep/gamegroup/model/entity/AdDataSon.java
  33. 37 0
      app/src/main/java/com/sheep/gamegroup/model/entity/ApkInfo.java
  34. 10 0
      app/src/main/java/com/sheep/gamegroup/model/entity/AppInfo.java
  35. 36 0
      app/src/main/java/com/sheep/gamegroup/model/entity/BulletinEnty.java
  36. 13 3
      app/src/main/java/com/sheep/gamegroup/model/entity/FindItem.java
  37. 6 0
      app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java
  38. 0 2
      app/src/main/java/com/sheep/gamegroup/model/util/AddPuplicParameIntercept.java
  39. 105 0
      app/src/main/java/com/sheep/gamegroup/model/util/CacheInterceptor.java
  40. 265 0
      app/src/main/java/com/sheep/gamegroup/model/util/LogInterceptor.java
  41. 1 1
      app/src/main/java/com/sheep/gamegroup/model/util/SheepSubscriber.java
  42. 0 22
      app/src/main/java/com/sheep/gamegroup/presenter/AccountAndSecuritContract.java
  43. 0 56
      app/src/main/java/com/sheep/gamegroup/presenter/AccountAndSecuritPresenter.java
  44. 0 19
      app/src/main/java/com/sheep/gamegroup/presenter/HomePageContract.java
  45. 0 52
      app/src/main/java/com/sheep/gamegroup/presenter/HomePagePresenter.java
  46. 0 1
      app/src/main/java/com/sheep/gamegroup/presenter/SmallSheepPresenter.java
  47. 0 6
      app/src/main/java/com/sheep/gamegroup/util/ChannelContent.java
  48. 157 6
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  49. 63 0
      app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java
  50. 0 325
      app/src/main/java/com/sheep/gamegroup/util/ImageGlarryDrawable.java
  51. 37 19
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  52. 18 0
      app/src/main/java/com/sheep/gamegroup/util/ListUtil.java
  53. 17 211
      app/src/main/java/com/sheep/gamegroup/util/LocationUtils.java
  54. 1 1
      app/src/main/java/com/sheep/gamegroup/util/MyDbManager.java
  55. 30 3
      app/src/main/java/com/sheep/gamegroup/util/StringUtils.java
  56. 169 121
      app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java
  57. 24 5
      app/src/main/java/com/sheep/gamegroup/util/TestUtil.java
  58. 46 0
      app/src/main/java/com/sheep/gamegroup/util/TimeUtil.java
  59. 9 6
      app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java
  60. 75 24
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  61. 186 0
      app/src/main/java/com/sheep/gamegroup/util/ZipChannelUtil.java
  62. 85 0
      app/src/main/java/com/sheep/gamegroup/util/glide/GlideCircleTransformWithBorder.java
  63. 0 272
      app/src/main/java/com/sheep/gamegroup/view/activity/AccountAndSecurityAct.java
  64. 21 27
      app/src/main/java/com/sheep/gamegroup/view/activity/ActFindGame.java
  65. 3 7
      app/src/main/java/com/sheep/gamegroup/view/activity/ActFindInformation.java
  66. 3 3
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGameAccount.java
  67. 3 59
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGameAgencyRecharge.java
  68. 12 8
      app/src/main/java/com/sheep/gamegroup/view/activity/ActInstallApkList.java
  69. 1 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActMainGame.java
  70. 169 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActMiDong.java
  71. 1 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActReservation.java
  72. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchGame.java
  73. 94 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSetting.java
  74. 220 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSheepApkList.java
  75. 1 1
      app/src/main/java/com/sheep/gamegroup/view/activity/AskGetMoneyAct.java
  76. 8 5
      app/src/main/java/com/sheep/gamegroup/view/activity/ChangeTelAct.java
  77. 3 2
      app/src/main/java/com/sheep/gamegroup/view/activity/GameTaskOrderListAct.java
  78. 3 1
      app/src/main/java/com/sheep/gamegroup/view/activity/GamemakeMoneyAct.java
  79. 0 149
      app/src/main/java/com/sheep/gamegroup/view/activity/HomePageAct.java
  80. 3 3
      app/src/main/java/com/sheep/gamegroup/view/activity/MiddleAct.java
  81. 2 9
      app/src/main/java/com/sheep/gamegroup/view/activity/PersonalCenterAct.java
  82. 95 44
      app/src/main/java/com/sheep/gamegroup/view/activity/PersionInfoAct.java
  83. 2 1
      app/src/main/java/com/sheep/gamegroup/view/activity/SignRecordAct.java
  84. 60 50
      app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java
  85. 68 51
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java
  86. 1 1
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailCreditCardAct.java
  87. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskListAct.java
  88. 1 153
      app/src/main/java/com/sheep/gamegroup/view/activity/TryMakeMoneyact.java
  89. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/WithdrawalListAct.java
  90. 286 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdListAdapter.java
  91. 19 1
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpGameAccount.java
  92. 2 7
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpHomeListGrideview.java
  93. 2 2
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpHomeListListview.java
  94. 1 1
      app/src/main/java/com/sheep/gamegroup/view/adapter/TaskListItemAdp.java
  95. 15 60
      app/src/main/java/com/sheep/gamegroup/view/adapter/TaskdetailSonListviewAdp.java
  96. 0 199
      app/src/main/java/com/sheep/gamegroup/view/adapter/TaskdetailSonRecycleViewAdp.java
  97. 94 97
      app/src/main/java/com/sheep/gamegroup/view/adapter/TryMakeMoneyAdp.java
  98. 0 56
      app/src/main/java/com/sheep/gamegroup/view/customview/GlideCircleTransform.java
  99. 2 1
      app/src/main/java/com/sheep/gamegroup/view/dialog/DialogOrienteeringDetails.java
  100. 0 0
      app/src/main/java/com/sheep/gamegroup/view/dialog/DialogShare.java

+ 7 - 5
app/build.gradle

@@ -2,7 +2,6 @@ apply plugin: 'com.android.application'
 apply plugin: 'com.jakewharton.butterknife'
 // 依赖插件脚本
 apply from: 'tinker-support.gradle'
-//apply plugin: 'com.appsee.appsee-plugin'
 android {
     compileSdkVersion androidConfigs.compileSdkVersion
     buildToolsVersion androidConfigs.buildToolsVersion
@@ -72,7 +71,6 @@ android {
             manifestPlaceholders = [DUANDUAN_GRAPH     : "sheeptest",
                                     DUANDUAN_DATASHARE : "sheeptest",
                                     jpush_appkey       : "4fea09bdbf9661a9689ee306",
-                                    appsee_app_key       : "1fd86378cdcf4bef8ff97ce63cdb86fb",
                                     umeng_app_key       : "5ab0a1da8f4a9d742900035f"
             ]
             buildConfigField "String", "DUANDUAN_DATASHARE", '"sheeptest"'
@@ -87,7 +85,6 @@ android {
             manifestPlaceholders = [DUANDUAN_GRAPH     : "sheeptestjiguang",
                                     DUANDUAN_DATASHARE : "sheeptestjiguang",
                                     jpush_appkey       : "4fea09bdbf9661a9689ee306",
-                                    appsee_app_key       : "1fd86378cdcf4bef8ff97ce63cdb86fb",
                                     umeng_app_key       : "5ab0a1da8f4a9d742900035f"
             ]
             buildConfigField "String", "DUANDUAN_DATASHARE", '"sheeptestjiguang"'
@@ -102,7 +99,6 @@ android {
             manifestPlaceholders = [DUANDUAN_GRAPH     : "sheep",
                                     DUANDUAN_DATASHARE : "sheep",
                                     jpush_appkey       : "28b74d520261c6f78e3e0921",
-                                    appsee_app_key       : "55ec0910667246d48c4c1dbdf266ff68",
                                     umeng_app_key       : "5ab0a1da8f4a9d742900035f"
             ]
             buildConfigField "String", "DUANDUAN_DATASHARE", '"sheep"'
@@ -258,7 +254,13 @@ dependencies {
     compile files('libs/jcore-android-1.2.0.jar')
     compile files('libs/jpush-android-3.1.2.jar')
 
-    compile 'com.appsee:appsee-android:+'
+    //定位
+    compile files('libs/BaiduLBS_Android.jar')
+
+    //幂动科技
+    compile files('libs/mdsdk.jar')
+    //轮播图
+    compile 'com.youth.banner:banner:1.4.10'  //最新版本
 
 }
 static def releaseTime() {

BIN
app/libs/BaiduLBS_Android.jar


BIN
app/libs/mdsdk.jar


+ 4 - 6
app/proguard-rules.pro

@@ -451,9 +451,7 @@
 -dontwarn com.google.**
 -keep class com.google.gson.** {*;}
 -keep class com.google.protobuf.** {*;}
-#==================appsee && protobuf==========================
--keep class com.appsee.** { *; }
--dontwarn com.appsee.**
--keep class android.support.** { *; }
--keep interface android.support.** { *; }
--keepattributes SourceFile,LineNumberTable
+# banner 的混淆代码
+-keep class com.youth.banner.** {
+    *;
+ }

+ 234 - 112
app/src/main/AndroidManifest.xml

@@ -16,11 +16,13 @@
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.WRITE_SETTINGS"
-        tools:ignore="ProtectedPermissions"/>
+    <uses-permission
+        android:name="android.permission.WRITE_SETTINGS"
+        tools:ignore="ProtectedPermissions" />
     <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
-        tools:ignore="ProtectedPermissions"/>
+    <uses-permission
+        android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
+        tools:ignore="ProtectedPermissions" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 
@@ -31,27 +33,27 @@
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.GET_TASKS" />
     <!--极光推送end-->
 
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.CAMERA" />
-    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
-    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
-    <uses-permission android:name="android.permission.REQUEST_MEDIA_PROJECTION"/>
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
-    <uses-permission android:name="android.permission.INTERNET"/>
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-    <uses-permission android:name="android.permission.GET_TASKS"/>
-    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
-    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"
-        tools:ignore="ProtectedPermissions"/>
-    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
+    <uses-permission android:name="android.permission.REQUEST_MEDIA_PROJECTION" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.GET_TASKS" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission
+        android:name="android.permission.PACKAGE_USAGE_STATS"
+        tools:ignore="ProtectedPermissions" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
     <!--必须的权限配置-->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.READ_LOGS"
-        tools:ignore="ProtectedPermissions"/>
+    <uses-permission
+        android:name="android.permission.READ_LOGS"
+        tools:ignore="ProtectedPermissions" />
     <!--保存资源到SD卡-->
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <!-- 推荐的权限 -->
@@ -59,36 +61,58 @@
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
-    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
+    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
+    <uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
 
+    <!-- 百度定位权限 start -->
+    <!-- 这个权限用于进行网络定位-->
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <!-- 这个权限用于访问GPS定位-->
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <!-- 用于读取手机当前的状态-->
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <!-- 访问网络,网络定位需要上网-->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <!-- SD卡读取权限,用户写入离线定位数据-->
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
+        tools:ignore="ProtectedPermissions"/>
+    <!-- 百度定位权限 end -->
     <permission
         android:name="android.permission.PACKAGE_USAGE_STATS"
-        tools:ignore="ProtectedPermissions"/>
+        tools:ignore="ProtectedPermissions" />
 
     <application
         android:name=".SheepApp"
         android:allowBackup="true"
+        android:fullBackupContent="@xml/backup_descriptor"
         android:icon="@mipmap/icon"
-        android:persistent="true"
         android:label="@string/app_name"
+        android:persistent="true"
         android:supportsRtl="true"
-        android:theme="@style/AppTheme"
-        android:fullBackupContent="@xml/backup_descriptor">
+        android:theme="@style/AppTheme">
 
         <activity
             android:name=".wxapi.WXEntryActivity"
             android:exported="true"
-            android:launchMode="singleTop"/>
+            android:launchMode="singleTop" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.WebviewAct"
-            android:screenOrientation="portrait"/>
+            android:screenOrientation="portrait" />
 
-        <service android:name=".service.DownloadService"/>
+        <service android:name=".service.DownloadService" />
         <service
             android:name=".service.FloatService"
             android:enabled="true"
-            android:exported="true">
-        </service>
+            android:exported="true"></service>
+
         <provider
             android:name=".provider.SheepFileProvider"
             android:authorities="${applicationId}.fileprovider"
@@ -98,16 +122,15 @@
             <!-- 元数据 -->
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
-                android:resource="@xml/file_paths"/>
+                android:resource="@xml/file_paths" />
         </provider>
 
 
-
         <!--必须配置-->
         <activity
             android:name="com.tencent.bugly.beta.ui.BetaActivity"
             android:configChanges="keyboardHidden|orientation|screenSize|locale"
-            android:theme="@android:style/Theme.Translucent"/>
+            android:theme="@android:style/Theme.Translucent" />
 
         <!-- 必须配置 fileProvider, 注意: android:authorities="${applicationId}.fileProvider" 不要直接copy,设置为你的包名.fileProvider-->
         <provider
@@ -117,31 +140,32 @@
             android:grantUriPermissions="true">
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
-                android:resource="@xml/provider_paths"/>
+                android:resource="@xml/provider_paths" />
 
         </provider>
 
         <activity
-            android:name="com.sheep.gamegroup.view.activity.PersionInfoAct"
+            android:name="com.sheep.gamegroup.view.activity.PersonalInfoAct"
             android:screenOrientation="portrait">
         </activity>
 
         <!--2.0-->
-        <activity android:name="com.sheep.gamegroup.view.activity.LoginAct"
-            android:theme="@style/FullScreenTheme"
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.LoginAct"
             android:launchMode="singleTask"
-            android:screenOrientation="portrait">
+            android:screenOrientation="portrait"
+            android:theme="@style/FullScreenTheme">
 
         </activity>
 
-       <activity android:name="com.sheep.gamegroup.view.activity.SplashAct"
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.SplashAct"
             android:screenOrientation="portrait"
-            android:theme="@style/SplashTheme"
-            >
+            android:theme="@style/SplashTheme">
 
             <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
 
@@ -161,8 +185,6 @@
             android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.LieMakeMoneyAct"
             android:launchMode="singleTask"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.HomePageAct"
-            android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.DialogActivity"
             android:theme="@style/MyDialogActivityTheme"
             />
@@ -238,6 +260,7 @@
                 <action android:name="android.intent.action.PACKAGE_ADDED" />
                 <action android:name="android.intent.action.PACKAGE_REMOVED" />
                 <action android:name="android.intent.action.PACKAGE_REPLACED" />
+
                 <data android:scheme="package" />
             </intent-filter>
         </receiver>
@@ -245,12 +268,14 @@
         <activity
             android:name="com.tencent.tauth.AuthActivity"
             android:launchMode="singleTask"
-            android:noHistory="true" >
+            android:noHistory="true">
 
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
+
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.BROWSABLE" />
+
                 <data android:scheme="tencent101461115" />
             </intent-filter>
 
@@ -258,77 +283,114 @@
 
         <activity
             android:name="com.tencent.connect.common.AssistActivity"
-            android:screenOrientation="portrait"
-            android:configChanges="orientation|keyboardHidden|screenSize"/>
-
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:screenOrientation="portrait" />
 
 
-        <activity android:name="com.sheep.gamegroup.view.activity.CommitWxAct"
-            android:windowSoftInputMode="stateVisible|adjustPan"
-            android:screenOrientation="portrait" />
-        <activity android:name="com.sheep.gamegroup.view.activity.ActGuideOnHook"
-            android:screenOrientation="portrait" />
-        <activity android:name="com.sheep.gamegroup.view.activity.CommitWxCodeAct"
-            android:windowSoftInputMode="stateVisible|adjustPan"
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.CommitWxAct"
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="stateVisible|adjustPan" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActGuideOnHook"
             android:screenOrientation="portrait" />
-        <activity android:name="com.sheep.gamegroup.view.activity.ActGuideDeblocked"
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.CommitWxCodeAct"
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="stateVisible|adjustPan" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActGuideDeblocked"
             android:screenOrientation="portrait" />
 
-        <activity android:name="com.sheep.gamegroup.view.activity.RealNameAuthenAct"
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.RealNameAuthenAct"
             android:screenOrientation="portrait" />
-        <activity android:name="com.sheep.gamegroup.view.activity.ChangeWxOrTelAct"
-            android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ReNameActivity"
-            android:windowSoftInputMode="stateVisible|adjustPan"
-            android:screenOrientation="portrait"/>
-        <activity android:name="me.iwf.photopicker.PhotoPickerActivity"
-            android:theme="@style/Theme.AppCompat.NoActionBar"
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ChangeWxOrTelAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ReNameActivity"
             android:screenOrientation="portrait"
-            />
+            android:windowSoftInputMode="stateVisible|adjustPan" />
+        <activity
+            android:name="me.iwf.photopicker.PhotoPickerActivity"
+            android:screenOrientation="portrait"
+            android:theme="@style/Theme.AppCompat.NoActionBar" />
 
-        <activity android:name="me.iwf.photopicker.PhotoPagerActivity"
-            android:theme="@style/Theme.AppCompat.NoActionBar"
+        <activity
+            android:name="me.iwf.photopicker.PhotoPagerActivity"
             android:screenOrientation="portrait"
-            />
+            android:theme="@style/Theme.AppCompat.NoActionBar" />
         <activity
             android:name="com.yalantis.ucrop.UCropActivity"
             android:screenOrientation="portrait"
-            android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
-
-        <activity android:name="com.sheep.gamegroup.view.activity.ActNewbieTaskList"  android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ActUnderstandSheep"  android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ActCreditCardTaskList" android:screenOrientation="portrait" />
-        <activity android:name="com.sheep.gamegroup.view.activity.ActCreditCardWeb" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ActXinwanWeb" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.TaskDetailCreditCardAct" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.TaskDetailAddQQAct" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ActWeb" android:screenOrientation="portrait" android:hardwareAccelerated="false"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ActMyMoney" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.FeedbackAct" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.ActMainGame" android:screenOrientation="portrait"/>
-
+            android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
 
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActNewbieTaskList"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActUnderstandSheep"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActCreditCardTaskList"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActCreditCardWeb"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActXinwanWeb"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.TaskDetailCreditCardAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.TaskDetailAddQQAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActWeb"
+            android:hardwareAccelerated="false"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActMyMoney"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.FeedbackAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActMainGame"
+            android:screenOrientation="portrait" />
 
-        <activity android:name="com.sheep.gamegroup.view.activity.SignCardAct" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.SignRankingsAct" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.SignRecordAct" android:screenOrientation="portrait"/>
-        <activity android:name="com.sheep.gamegroup.view.activity.SignRechargeAct" android:screenOrientation="portrait"/>
 
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.SignCardAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.SignRankingsAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.SignRecordAct"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.SignRechargeAct"
+            android:screenOrientation="portrait" />
 
-        <!--appsee start-->
-        <meta-data android:name="com.appsee.ApiKey" android:value="${appsee_app_key}" />
 
         <!--友盟start-->
         <meta-data
             android:name="UMENG_APPKEY"
-            android:value="${umeng_app_key}"/>
-        <meta-data android:value="xxx" android:name="UMENG_CHANNEL"/>
+            android:value="${umeng_app_key}" />
+        <meta-data
+            android:name="UMENG_CHANNEL"
+            android:value="xxx" />
 
 
         <!--极光推送-->
 
         <!-- For test only 测试状态通知栏,需要打开的Activity -->
-        <activity android:name="com.sheep.gamegroup.view.activity.MiddleAct" android:exported="false">
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.MiddleAct"
+            android:exported="false">
             <intent-filter>
                 <action android:name="jpush.testAction" />
                 <category android:name="jpush.testCategory" />
@@ -337,17 +399,17 @@
         <!-- Rich push 核心功能 since 2.0.6-->
         <activity
             android:name="cn.jpush.android.ui.PopWinActivity"
-            android:theme="@style/MyDialogStyle"
-            android:exported="false">
-        </activity>
+            android:exported="false"
+            android:theme="@style/MyDialogStyle"></activity>
         <!-- Required SDK核心功能-->
         <activity
             android:name="cn.jpush.android.ui.PushActivity"
             android:configChanges="orientation|keyboardHidden"
-            android:theme="@android:style/Theme.NoTitleBar"
-            android:exported="false">
+            android:exported="false"
+            android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="cn.jpush.android.ui.PushActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="${applicationId}" />
             </intent-filter>
@@ -357,8 +419,8 @@
         <!-- 可配置android:process参数将PushService放在其他进程中 -->
         <service
             android:name="cn.jpush.android.service.PushService"
-            android:process=":mult"
-            android:exported="false">
+            android:exported="false"
+            android:process=":mult">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.REGISTER" />
                 <action android:name="cn.jpush.android.intent.REPORT" />
@@ -368,10 +430,9 @@
         </service>
         <!-- since 3.0.9 Required SDK 核心功能-->
         <provider
-            android:authorities="${applicationId}.DataProvider"
             android:name="cn.jpush.android.service.DataProvider"
-            android:exported="false"
-            />
+            android:authorities="${applicationId}.DataProvider"
+            android:exported="false" />
 
 
         <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
@@ -388,10 +449,9 @@
         </service>
         <!-- since 3.1.0 Required SDK 核心功能-->
         <provider
-            android:authorities="${applicationId}.DownloadProvider"
             android:name="cn.jpush.android.service.DownloadProvider"
-            android:exported="true"
-            />
+            android:authorities="${applicationId}.DownloadProvider"
+            android:exported="true" />
         <!-- Required SDK核心功能-->
         <receiver
             android:name="cn.jpush.android.service.PushReceiver"
@@ -415,13 +475,15 @@
         </receiver>
 
         <!-- Required SDK核心功能-->
-        <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
+        <receiver
+            android:name="cn.jpush.android.service.AlarmReceiver"
+            android:exported="false" />
 
         <!-- User defined.  For test only  用户自定义的广播接收器-->
         <receiver
             android:name="com.sheep.gamegroup.receiver.SheepJpushReceiver"
-            android:exported="false"
-            android:enabled="true">
+            android:enabled="true"
+            android:exported="false">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required  用户注册SDK的intent-->
                 <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required  用户接收SDK消息的intent-->
@@ -436,13 +498,17 @@
         <receiver android:name="com.sheep.gamegroup.receiver.SheepJpushMessageReceiver">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
-                <category android:name="${applicationId}"/>
+                <category android:name="${applicationId}" />
             </intent-filter>
         </receiver>
 
         <!-- Required  . Enable it you can get statistics data with channel -->
-        <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
-        <meta-data android:name="JPUSH_APPKEY" android:value="${jpush_appkey}" /> <!--  </>值来自开发者平台取得的AppKey-->
+        <meta-data
+            android:name="JPUSH_CHANNEL"
+            android:value="developer-default" />
+        <meta-data
+            android:name="JPUSH_APPKEY"
+            android:value="${jpush_appkey}" /> <!--  </>值来自开发者平台取得的AppKey-->
         <!--极光推送end-->
 
         <!-- div start-->
@@ -463,11 +529,18 @@
             android:configChanges="orientation|keyboardHidden|navigation|screenSize"
             android:exported="false"
             android:screenOrientation="behind"
-            android:windowSoftInputMode="adjustResize|stateHidden" >
-        </activity>
+            android:windowSoftInputMode="adjustResize|stateHidden"></activity>
 
         <!-- alipay 支付宝 sdk end -->
 
+        <!--  百度定位 sdk start -->
+        <meta-data
+            android:name="com.baidu.lbsapi.API_KEY"
+            android:value="gXD6RhE7ncVIcl1crk5SeUoVm7ceNtkL" >
+        </meta-data>
+        <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>
+        <!--  百度定位 sdk end -->
+
         <activity android:name="com.sheep.gamegroup.view.activity.ActNotice"
             android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.ActGuide"
@@ -480,6 +553,8 @@
             android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.ActInstallApkList"
             android:screenOrientation="portrait"/>
+        <activity android:name="com.sheep.gamegroup.view.activity.ActSheepApkList"
+            android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.ActFindGame"
             android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.ActFindInformation"
@@ -492,6 +567,53 @@
             android:screenOrientation="portrait"/>
         <activity android:name="com.sheep.gamegroup.view.activity.ActSearchGame"
             android:screenOrientation="portrait"/>
+        <activity android:name="com.sheep.gamegroup.view.activity.ActSetting"
+            android:screenOrientation="portrait"/>
+
+        <!--start幂动科技-->
+
+        <activity android:name="com.sheep.gamegroup.view.activity.ActMiDong"
+            android:screenOrientation="portrait"/>
+
+        <service
+            android:name="com.mdad.sdk.mdsdk.monitor.MonitorService"
+            android:enabled="true"
+            android:priority="1000" />
+        <service
+            android:name="com.mdad.sdk.mdsdk.monitor.DetectionService"
+            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
+            <intent-filter>
+                <action android:name="android.accessibilityservice.AccessibilityService" />
+            </intent-filter>
+            <meta-data
+                android:name="android.accessibilityservice"
+                android:resource="@xml/accessibility_config" />
+        </service>
+
+
+        <receiver
+            android:name="com.mdad.sdk.mdsdk.AppInstallReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.PACKAGE_ADDED" />
+                <action android:name="android.intent.action.PACKAGE_REPLACED" />
+                <action android:name="android.intent.action.PACKAGE_REMOVED" />
+
+                <data android:scheme="package" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.mdad.sdk.mdsdk.DownloadCompleteReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
+                <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED" />
+            </intent-filter>
+        </receiver>
+        <!--end幂动科技-->
     </application>
 
 

+ 1 - 1
app/src/main/java/com/kfzs/duanduan/ActDownloadMgr.java

@@ -311,7 +311,7 @@ public class ActDownloadMgr extends BaseCompatActivity {
                         changeTaskPersistenceStatus(downloadTask.getMDownloadUrl(), DownloadTaskService.STATUS_ING, 1, false);
                     }
                 } else {
-                    if (new File(downloadTask.getMApkPath()).exists()) {
+                    if (!TextUtils.isEmpty(downloadTask.getMApkPath()) && new File(downloadTask.getMApkPath()).exists()) {
                         ApkUtils.installApk(this, downloadTask.getMApkPath());
                     } else {
                         restartTaskByDownloadUrl(downloadTask);

+ 2 - 0
app/src/main/java/com/kfzs/duanduan/ActMain.java

@@ -16,6 +16,7 @@ import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.react.TabsHelper;
 import com.kfzs.duanduan.utils.dlg.HelperUtils;
 import com.kfzs.duanduan.view.DialogStorageLow;
+import com.mdad.sdk.mdsdk.AdManager;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.util.Jump2View;
@@ -67,6 +68,7 @@ public class ActMain extends BaseActivity {
 
         mImgDot = findViewById(R.id.img_download_manager_dot);
         tabsHelper.init();
+
     }
 
     @Override

+ 2 - 11
app/src/main/java/com/kfzs/duanduan/BaseCompatFragment.java

@@ -109,7 +109,7 @@ public abstract class BaseCompatFragment extends Fragment {
     public void onResume() {
         super.onResume();
         if(getUserVisibleHint()){
-            UMConfigUtils.onVisibilityChangedToUser(true, false,TAG);
+            UMConfigUtils.onVisibilityChangedToUser(true, TAG);
         }
     }
 
@@ -117,7 +117,7 @@ public abstract class BaseCompatFragment extends Fragment {
     public void onPause() {
         super.onPause();
         if(getUserVisibleHint()){
-            UMConfigUtils.onVisibilityChangedToUser(false, false,TAG);
+            UMConfigUtils.onVisibilityChangedToUser(false, TAG);
         }
     }
 
@@ -153,15 +153,6 @@ public abstract class BaseCompatFragment extends Fragment {
         }
     }
 
-    @Override
-    public void setUserVisibleHint(boolean isVisibleToUser) {
-        super.setUserVisibleHint(isVisibleToUser);
-
-        if(isResumed()){
-            UMConfigUtils.onVisibilityChangedToUser(isVisibleToUser,true,TAG);
-        }
-    }
-
 
 
     /**

+ 3 - 2
app/src/main/java/com/kfzs/duanduan/KFZSApp.java

@@ -76,8 +76,9 @@ public class KFZSApp extends MultiDexApplication {
         KFZSNetwork.init(application);
         DisplayMetrics metric = getResources().getDisplayMetrics();
         G.DENSITY = metric.density;
-        G.HEIGHT = metric.heightPixels;
-        G.WIDTH = metric.widthPixels;
+        boolean isHeightBig = metric.heightPixels > metric.widthPixels;
+        G.HEIGHT = isHeightBig ? metric.heightPixels : metric.widthPixels;
+        G.WIDTH = isHeightBig ? metric.widthPixels : metric.heightPixels;
     }
 
     /**

+ 3 - 0
app/src/main/java/com/kfzs/duanduan/event/EventTypes.java

@@ -33,4 +33,7 @@ public enum EventTypes {
     DELETE_GAME_ACCOUNT_REFRESH,//游戏删除账号,刷新界面
     GENERATION_ACCOUNT_REFRESH,//游戏代充,刷新界面
     GENERATION_ACCOUNT_REFRESH_ADAPTER,//游戏代充,刷新界面(下载)
+
+    //幂动科技
+    REFRESH_MING_DONG,//刷新界面
 }

+ 2 - 1
app/src/main/java/com/kfzs/duanduan/fragment/AbsFgtMyMoney.java

@@ -12,6 +12,7 @@ import com.googlecode.protobuf.format.util.TextUtils;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.ILog;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.view.adapter.ArrayAdapter;
@@ -170,7 +171,7 @@ public abstract class AbsFgtMyMoney extends BaseFragment {
     protected abstract Observable<BaseMessage> initObservable(int page, int per_page);
 
     private void notifyDataSetChanged() {
-        empty_view.setVisibility(list.isEmpty() ? View.VISIBLE : View.INVISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         adapter.notifyDataSetChanged();
         swipe_container.setRefreshing(false);
         swipe_container.setLoading(false);

+ 2 - 1
app/src/main/java/com/kfzs/duanduan/fragment/FgtCreditCardProgressQuery.java

@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSON;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.CreditCardProgressQuery;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.view.adapter.CreditCardProgressQueryAdp;
 import com.sheep.gamegroup.view.customview.RefreshLayout;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
@@ -81,7 +82,7 @@ public class FgtCreditCardProgressQuery extends BaseFragment {
     }
 
     private void notifyDataSetChanged() {
-        empty_view.setVisibility(list.isEmpty() ? View.VISIBLE : View.INVISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         adapter.notifyDataSetChanged();
         swipe_container.setRefreshing(false);
     }

+ 2 - 1
app/src/main/java/com/kfzs/duanduan/fragment/FgtCreditCardTaskList.java

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.view.adapter.CreditCardTaskAdp;
 import com.sheep.gamegroup.view.customview.RefreshLayout;
@@ -99,7 +100,7 @@ public class FgtCreditCardTaskList extends BaseFragment {
                         });
     }
     private void notifyDataSetChanged() {
-        empty_view.setVisibility(list.isEmpty() ? View.VISIBLE : View.INVISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         adapter.notifyDataSetChanged();
         swipe_container.setRefreshing(false);
     }

+ 19 - 64
app/src/main/java/com/kfzs/duanduan/fragment/FgtFind.java

@@ -14,12 +14,15 @@ import com.kfzs.duanduan.mine.GiftpackListAdapter;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindTag;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
+import org.afinal.simplecache.ApiKey;
+
 import java.lang.reflect.Field;
 import java.util.List;
 
@@ -59,16 +62,25 @@ public class FgtFind extends BaseCompatFragment {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                         List<FindTag> newList = baseMessage.getDatas(FindTag.class);
+                        loadList(newList);
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        //无数据时尝试获取缓存数据
+                        List<FindTag> newList = CommonUtil.getInstance().getCacheList(ApiKey.articles_tags, FindTag.class);
+                        if(loadList(newList))
+                            G.showToast(baseMessage);
+                    }
+                    //没有添加数据返回true
+                    private boolean loadList(List<FindTag> newList){
                         if(!ListUtil.isEmpty(newList)){
                             list.clear();
                             ListUtil.addAll(list, newList);
                             loadData();
+                            return false;
                         }
-                    }
-
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        G.showToast(baseMessage);
+                        return true;
                     }
                 });
     }
@@ -100,67 +112,10 @@ public class FgtFind extends BaseCompatFragment {
             }
         });
         pager.setCurrentItem(position);
-        reflex(indicator);
-    }
-    private int position = 0;//默认选中第一个
-
-    /**
-     * 通过反射调整tabLayout中下划线的宽度
-     * @param tabLayout
-     */
-    public void reflex(final TabLayout tabLayout){
-        //了解源码得知 线的宽度是根据 tabView的宽度来设置的
-        tabLayout.post(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    //拿到tabLayout的mTabStrip属性
-                    LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);
-
-//                    int dp10 = dip2px(tabLayout.getContext(), 10);
-                    int add = getResources().getDimensionPixelSize(R.dimen.content_padding_10);
-                    int count = mTabStrip.getChildCount();
-                    int fillCount = Math.min(5, count);//一屏的个数
-
-                    for (int i = 0; i < count; i++) {
-                        View tabView = mTabStrip.getChildAt(i);
-
-                        //拿到tabView的mTextView属性  tab的字数不固定一定用反射取mTextView
-                        Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
-                        mTextViewField.setAccessible(true);
-
-                        TextView mTextView = (TextView) mTextViewField.get(tabView);
-
-                        tabView.setPadding(0, 0, 0, 0);
-
-                        //因为我想要的效果是   字多宽线就多宽,所以测量mTextView的宽度
-                        int width = 0;
-                        width = mTextView.getWidth();
-                        if (width == 0) {
-                            mTextView.measure(0, 0);
-                            width = mTextView.getMeasuredWidth();
-                        }
-
-                        //设置tab左右间距为10dp  注意这里不能使用Padding 因为源码中线的宽度是根据 tabView的宽度来设置的
-                        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
-                        params.width = width ;
-                        int margin = (G.WIDTH - fillCount*width - 2*add) / (fillCount*2);
-                        params.leftMargin = margin + (i == 0 ? add : 0);
-                        params.rightMargin = margin + (i + 1 == count ? add : 0);
-                        tabView.setLayoutParams(params);
-
-                        tabView.invalidate();
-                    }
-
-                } catch (NoSuchFieldException e) {
-                    e.printStackTrace();
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                }
-            }
-        });
 
+        CommonUtil.getInstance().reflex(indicator, activity);
     }
+    private int position = 0;//默认选中第一个
 
 
 }

+ 24 - 11
app/src/main/java/com/kfzs/duanduan/fragment/FgtFindChild.java

@@ -12,6 +12,7 @@ import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
@@ -42,6 +43,7 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 
+import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
@@ -137,28 +139,31 @@ public class FgtFindChild extends BaseCompatFragment {
                     return;
                 }
                 View rootConvertView = holder.itemView;
+                View padding = rootConvertView.findViewById(R.id.padding);
+                padding.setVisibility(holder.getAdapterPosition() == 0 ? View.GONE : View.VISIBLE);
                 TextView find_item_name = (TextView)rootConvertView.findViewById(R.id.find_item_name);
                 TextView find_item_time = (TextView)rootConvertView.findViewById(R.id.find_item_time);
                 ImageView find_item_iv = (ImageView)rootConvertView.findViewById(R.id.find_item_iv);
                 TextView find_item_des = (TextView)rootConvertView.findViewById(R.id.find_item_des);
-                TextView find_item_pf_label = (TextView)rootConvertView.findViewById(R.id.find_item_pf_label);
+//                TextView find_item_pf_label = (TextView)rootConvertView.findViewById(R.id.find_item_pf_label);
                 TextView find_item_download = (TextView)rootConvertView.findViewById(R.id.find_item_download);
                 TagFlowLayout find_item_tags = (TagFlowLayout)rootConvertView.findViewById(R.id.find_item_tags);
 
                 if(item.isGame()){
                     find_item_download.setVisibility(View.VISIBLE);
-                    find_item_pf_label.setVisibility(View.VISIBLE);
                     FindApp findApp = item.getApplication();
-                    find_item_pf_label.setText(Html.fromHtml(String.format(Locale.CHINA, "评分:<font color='%s'>%.1f</font>分", "#29d6fd", findApp.getScore())));
+//                    find_item_pf_label.setVisibility(View.VISIBLE);
+//                    find_item_pf_label.setText(Html.fromHtml(String.format(Locale.CHINA, "评分:<font color='%s'>%.1f</font>分", "#29d6fd", findApp.getScore())));
                     updateView(activity, findApp, find_item_download);
                 } else {
                     find_item_download.setVisibility(View.GONE);
-                    find_item_pf_label.setVisibility(View.GONE);
+//                    find_item_pf_label.setVisibility(View.GONE);
                 }
                 ViewUtil.setText(find_item_name, item.getTitle());
                 ViewUtil.setTextTime(find_item_time, item.getCreated_at(), "yyyy-MM-dd");
                 ViewUtil.setImage(find_item_iv, item.getPictures());
                 ViewUtil.setText(find_item_des, item.getDes());
+                item.removeNullTag();
                 if(ListUtil.isEmpty(item.getTages())){
                     find_item_tags.setVisibility(View.GONE);
                 } else {
@@ -289,25 +294,33 @@ public class FgtFindChild extends BaseCompatFragment {
                             @Override
                             public void onNext(BaseMessage baseMessage) {
                                 List<FindItem> newList = baseMessage.getDatas(FindItem.class);
+                                loadList(newList);
+                            }
+
+                            @Override
+                            public void onError(BaseMessage baseMessage) {
+                                //无数据时尝试获取缓存数据
+                                List<FindItem> newList = CommonUtil.getInstance().getCacheList(ApiKey.articles(type), FindItem.class);
+                                if(loadList(newList))
+                                    notifyDataSetChanged();
+                            }
+                            //没有添加数据返回true
+                            private boolean loadList(List<FindItem> newList){
                                 if(!ListUtil.isEmpty(newList)){
                                     list.clear();
                                     ListUtil.addAll(list, newList);
                                     if(!list.isEmpty())
                                         list.add(null);//底部部分----我是有底线的
                                     notifyDataSetChanged();
+                                    return false;
                                 }
-                            }
-
-                            @Override
-                            public void onError(BaseMessage baseMessage) {
-                                notifyDataSetChanged();
+                                return true;
                             }
                         });
     }
 
     private void notifyDataSetChanged(){
-        if(list.isEmpty())
-            empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         refresh.setRefreshing(false);
         view_list.getAdapter().notifyDataSetChanged();
     }

+ 3 - 2
app/src/main/java/com/kfzs/duanduan/fragment/FgtFriendExtractPage.java

@@ -9,6 +9,7 @@ import android.widget.TextView;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.Friend;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
@@ -75,7 +76,7 @@ public class FgtFriendExtractPage extends BaseFragment {
             }
         }
         if(list.isEmpty()){
-            download_mgr_empty_view.setVisibility(View.VISIBLE);
+            CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
         } else {
             download_mgr_empty_view.setVisibility(View.GONE);
         }
@@ -111,7 +112,7 @@ public class FgtFriendExtractPage extends BaseFragment {
                     public void onError(BaseMessage baseMessage) {
                         G.showToast(baseMessage);
                         if(list.isEmpty()){
-                            download_mgr_empty_view.setVisibility(View.VISIBLE);
+                            CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
                         } else {
                             download_mgr_empty_view.setVisibility(View.GONE);
                         }

+ 274 - 0
app/src/main/java/com/kfzs/duanduan/fragment/FgtMiDong.java

@@ -0,0 +1,274 @@
+package com.kfzs.duanduan.fragment;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.annotation.Nullable;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.Toast;
+
+import com.alibaba.fastjson.JSONArray;
+import com.kfzs.duanduan.BaseCompatFragment;
+import com.mdad.sdk.mdsdk.AdManager;
+import com.mdad.sdk.mdsdk.GetAdListListener;
+import com.mdad.sdk.mdsdk.RewardListener;
+import com.mdad.sdk.mdsdk.common.AdData;
+import com.sheep.gamegroup.model.entity.AdDataSon;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.GameAgencyRechargePlatformEntity;
+import com.sheep.gamegroup.model.entity.RecyleObj;
+import com.sheep.gamegroup.model.entity.RecyleType;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.gamegroup.view.adapter.AdListAdapter;
+import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.util.Collection;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import rx.functions.Action1;
+
+/**
+ * Created by ljy on 2018/7/19.
+ */
+
+public class FgtMiDong extends BaseCompatFragment {
+
+    @BindView(R.id.title)
+    View title;
+    @BindView(R.id.refresh)
+    SwipeRefreshLayout refresh;
+    @BindView(R.id.empty_view)
+    View empty_view;
+    @BindView(R.id.check_net_ll)
+    View check_net_ll;
+    @BindView(R.id.view_list)
+    RecyclerView recyclerview;
+    private int type;
+    private Activity activity;
+    private AdListAdapter adListAdapter;
+    private int pageNo = 1;
+    private int pageSize = 30;
+    private List<AdDataSon> listData = ListUtil.emptyList();
+
+    public static FgtMiDong newInstance(int type) {
+        FgtMiDong fgtMiDong = new FgtMiDong();
+        Bundle bundle = new Bundle();
+        bundle.putInt("type", type);
+        fgtMiDong.setArguments(bundle);
+        return fgtMiDong;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            type = bundle.getInt("type", 0);
+        }
+    }
+
+    @Override
+    protected void initView(Bundle savedInstanceState) {
+        setContentView(R.layout.net_empty_fresh_list_more);
+        activity = getActivity();
+        ButterKnife.bind(this, mContentView);
+        initView();
+        initData(false);
+    }
+
+    private void initView() {
+        title.setVisibility(View.GONE);
+        refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+                initData(true);
+                refresh.setRefreshing(false);
+            }
+        });
+
+
+        /**
+         * recycle view
+         */
+        recyclerview.setLayoutManager(new LinearLayoutManager(activity));
+        adListAdapter = new AdListAdapter(activity, listData);
+        recyclerview.setAdapter(adListAdapter);
+
+        /**
+         * 任务完成回调
+         */
+        AdManager.getInstance(activity).setRewardListener(new RewardListener() {
+            @Override
+            public void doTaskSuccess(String packageName) {
+                // packageName 为所完成任务的包名
+                G.showToast(activity, packageName + "", Toast.LENGTH_SHORT);
+            }
+
+            @Override
+            public void doTaskFail(String error) {
+                G.showToast(activity, error + "", Toast.LENGTH_SHORT);
+            }
+        });
+        initListen();
+    }
+
+    private void initData(final boolean isRefresh) {
+        empty_view.setVisibility(View.INVISIBLE);
+        SysAppUtil.checkNet(new Action1<Integer>() {
+            @Override
+            public void call(Integer result) {
+                if (result != 0) {//无网络
+                    if (check_net_ll != null)
+                        check_net_ll.setVisibility(View.VISIBLE);
+                } else {
+                    if (check_net_ll != null)
+                        check_net_ll.setVisibility(View.GONE);
+                }
+            }
+        });
+        try{
+            loadData(false, isRefresh);
+        }catch (Exception e){
+            e.printStackTrace();
+            new Handler().postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    loadData(false, isRefresh);
+                }
+            }, 500);
+        }
+    }
+
+    private void notifyDataSetChanged() {
+        CommonUtil.getInstance().updateEmptyView(empty_view, listData.isEmpty());
+        refresh.setRefreshing(false);
+        adListAdapter.notifyDataSetChanged();
+    }
+
+    private void loadData(boolean isLoadMore, final boolean isRefresh) {
+        /**
+         * 异步获取普通任务,回调是在主线程,可以直接更新UI,加载更多的逻辑只需更新pageNo和pageSize即可。
+         */
+        if (isLoadMore)
+            pageNo++;
+        else
+            pageNo = 1;
+        if (type == 0) {
+            AdManager.getInstance(activity).getAdListAsync(activity, new GetAdListListener() {
+                @Override
+                public void onLoadAdSuccess(List<AdData> list) {
+                    refresh.setRefreshing(false);
+                    if (list != null) {
+                        if (pageNo == 1)
+                            listData.clear();
+
+                        for (AdData adData : list) {
+                            AdDataSon adDataSon = new AdDataSon();
+                            adDataSon.setAdData(adData);
+                            listData.add(adDataSon);
+                        }
+//                        listData.addAll((Collection<? extends AdDataSon>) list);
+                        adListAdapter.setData(listData);
+                    }
+                    notifyDataSetChanged();
+                }
+
+                @Override
+                public void onLoadAdFailure() {
+                    refresh.setRefreshing(false);
+                    if (isRefresh)
+                        G.showToast(activity, "网络异常,请稍后再试", Toast.LENGTH_SHORT);
+                    notifyDataSetChanged();
+                }
+
+                @Override
+                public void onAdEmpty() {
+                    if (isRefresh)
+                        G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
+                    notifyDataSetChanged();
+
+                }
+            }, pageNo, pageSize);
+
+        } else {
+            /**
+             * 异步获取签到任务,回调是在主线程,可以直接更新UI,加载更多的逻辑只需更新pageNo和pageSize即可。
+             */
+            AdManager.getInstance(activity).getSignListAsync(activity, new GetAdListListener() {
+                @Override
+                public void onLoadAdSuccess(List<AdData> list) {
+                    refresh.setRefreshing(false);
+                    if (list != null && list.size() > 0) {
+                        if (pageNo == 1)
+                            listData.clear();
+                        for (AdData adData : list) {
+                            AdDataSon adDataSon = new AdDataSon();
+                            adDataSon.setAdData(adData);
+                            listData.add(adDataSon);
+                        }
+                        adListAdapter.setData(listData);
+                        adListAdapter.setSign(true);
+                    } else {
+                        if (isRefresh)
+                            G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
+                    }
+                    notifyDataSetChanged();
+                }
+
+                @Override
+                public void onLoadAdFailure() {
+                    refresh.setRefreshing(false);
+                    if (isRefresh)
+                        G.showToast(activity, "网络异常,请稍后再试", Toast.LENGTH_SHORT);
+                    notifyDataSetChanged();
+                }
+
+                @Override
+                public void onAdEmpty() {
+                    refresh.setRefreshing(false);
+                    if (isRefresh)
+                        G.showToast(activity, "暂无数据", Toast.LENGTH_SHORT);
+                    notifyDataSetChanged();
+
+                }
+            }, pageNo, pageSize);
+        }
+
+    }
+
+    private void initListen() {
+        recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
+            @Override
+            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+                super.onScrollStateChanged(recyclerView, newState);
+                if (newState == RecyclerView.SCROLL_STATE_IDLE) {//滑动到了底部
+                    if (listData.size() >= pageNo * pageSize) {
+                        loadData(true, false);
+                    } else {
+//                        G.showToast("没有更多数据了");
+                    }
+
+                }
+            }
+        });
+    }
+
+    /**
+     * 刷新数据
+     */
+    public void refreshData() {
+        if (adListAdapter != null)
+            adListAdapter.notifyDataSetChanged();
+    }
+}

+ 39 - 48
app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java

@@ -1,6 +1,7 @@
 package com.kfzs.duanduan.fragment;
 
 import android.app.Activity;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
@@ -21,16 +22,21 @@ import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.activity.PersonalCenterAct;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
 import org.afinal.simplecache.ACache;
 
+import java.util.Locale;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
@@ -66,8 +72,8 @@ public class FgtPersonalCenter extends BaseCompatFragment {
     View proxy_service_layout_line;
     @BindView(R.id.version_item_tv)
     TextView version_item_tv;
-    @BindView(R.id.clear_item_tv)
-    TextView clear_item_tv;
+    @BindView(R.id.personal_center_version_new)
+    View personal_center_version_new;
     Unbinder unbinder;
 
     private UserEntity userEntitys;
@@ -79,6 +85,25 @@ public class FgtPersonalCenter extends BaseCompatFragment {
     protected void initView(Bundle savedInstanceState) {
         setContentView(R.layout.fgt_personalcenter_layout);
         activity = getActivity();
+        mContentView.findViewById(R.id.ibtn_baseactivity_right).setOnClickListener( new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        Jump2View.getInstance().goSetting(activity, null);
+                    }
+                });
+        if (activity instanceof PersonalCenterAct) {
+            mContentView.findViewById(R.id.txt_baseactivity_title).setVisibility(View.VISIBLE);
+            mContentView.findViewById(R.id.img_baseactivity_title).setVisibility(View.VISIBLE);
+            mContentView.findViewById(R.id.img_baseactivity_title).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    activity.finish();
+                }
+            });
+        } else {
+            mContentView.findViewById(R.id.img_baseactivity_title).setVisibility(View.INVISIBLE);
+            mContentView.findViewById(R.id.txt_baseactivity_title).setVisibility(View.INVISIBLE);
+        }
     }
 
     private void initData() {
@@ -115,19 +140,14 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                     public void onError(BaseMessage baseMessage) {
                     }
                 });
-
-        String appVersonName = ApkUtils.getCurrentPkgVersionName(SheepApp.getInstance());
+        String newVersionUrl = ACache.get(SheepApp.getInstance()).getAsString("version_url");
+        personal_center_version_new.setVisibility(TextUtils.isEmpty(newVersionUrl) ? View.GONE : View.VISIBLE);
+        String appVersionName = ApkUtils.getCurrentPkgVersionName(SheepApp.getInstance());
         version_item_tv.setText("小绵羊V");
-        version_item_tv.append(appVersonName);
-        initCacheSize();
+        version_item_tv.append(appVersionName);
 
     }
 
-    private void initCacheSize() {
-        String size = SysAppUtil.getAppCacheSize();
-        clear_item_tv.setText(TextUtils.isEmpty(size) || TextUtils.equals("0K",size) ? "无需清理" : size);
-    }
-
     private void updateData(BaseMessage baseMessage) {
         userEntitys = baseMessage.getData(UserEntity.class);
         try {
@@ -140,13 +160,10 @@ public class FgtPersonalCenter extends BaseCompatFragment {
 
     private void initWidget() {
 
-        personalcenter_item_price_tv.setText(userEntitys.getBalance() + " 元");
-        nameTv.setText(userEntitys.getNickname() + "");//绵羊号:123456789
-        sheepNumTv.setText("绵羊号:" + userEntitys.getInvitation_code());
-        Glide.with(activity)
-                .load(userEntitys.getAvatar() + "")
-                .apply(new RequestOptions().circleCrop().placeholder(R.drawable.icon))
-                .into(iconImgIv);
+        personalcenter_item_price_tv.setText(String.format(Locale.CHINA, "%s\u0020元", userEntitys.getBalance()));
+        ViewUtil.setText(nameTv, userEntitys.getNickname());
+        sheepNumTv.setText(String.format(Locale.CHINA, "绵羊号:%s", userEntitys.getInvitation_code()));
+        GlideImageLoader.setAvatar(iconImgIv, userEntitys.getAvatar(), Color.argb(128, 255, 255, 255));
 
     }
 
@@ -165,10 +182,10 @@ public class FgtPersonalCenter extends BaseCompatFragment {
         unbinder.unbind();
     }
 
-    @OnClick({R.id.icon_img_iv, R.id.account_detail_layout, R.id.personalcenter_price_layout, R.id.account_safe_layout,
-            R.id.account_task_layout, R.id.proxy_service_layout, R.id.abourt_us_layout, R.id.feedbook_layout,
-            R.id.recommend_friend_layout, R.id.tv_submit, R.id.faq_layout, R.id.reservation_layout,
-            R.id.version_layout, R.id.clear_layout, R.id.change_layout, R.id.order_layout, R.id.proxy_game_account_layout
+    @OnClick({R.id.icon_img_iv, R.id.account_detail_layout, R.id.personalcenter_price_layout,
+            R.id.account_task_layout, R.id.proxy_service_layout, R.id.feedbook_layout,
+            R.id.recommend_friend_layout, R.id.faq_layout, R.id.reservation_layout, R.id.version_layout,
+            R.id.change_layout, R.id.order_layout, R.id.proxy_game_account_layout
     })
     public void onViewClicked(View view) {
         switch (view.getId()) {
@@ -179,9 +196,6 @@ public class FgtPersonalCenter extends BaseCompatFragment {
             case R.id.personalcenter_price_layout://我的资产
                 Jump2View.getInstance().goMyMoney(activity, null);
                 break;
-            case R.id.account_safe_layout:
-                Jump2View.getInstance().goAccountAndSecurit(activity, null);
-                break;
             case R.id.account_task_layout://任务记录
                 Jump2View.getInstance().goTaskList2View(activity, null);
                 break;
@@ -210,9 +224,6 @@ public class FgtPersonalCenter extends BaseCompatFragment {
             case R.id.reservation_layout://游戏预约
                 Jump2View.getInstance().goActReservation(activity);
                 break;
-            case R.id.abourt_us_layout://关于我们
-                Jump2View.getInstance().goNewAboutUs(activity);
-                break;
             case R.id.feedbook_layout://意见反馈
                 Jump2View.getInstance().goFeedbackAct(activity);
                 break;
@@ -226,29 +237,9 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                 SysAppUtil.showVersionInfo(activity, null);
                 USER_UPGRADE.onEvent();
                 break;
-            case R.id.clear_layout://清除缓存
-                ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("清除缓存").setMsg("所有本地的缓存都会被清理").setBtnRightText("取消")
-                        .setBtnLeftText("确定").setBtnLeftOnClickListener(new View.OnClickListener() {
-                            @Override
-                            public void onClick(View view) {
-                                USER_CLEAN_SURE.onEvent();
-                                SysAppUtil.clearCache(new Action1<Object>() {
-                                    @Override
-                                    public void call(Object o) {
-                                        G.showToast("清理缓存完成");
-                                        initCacheSize();
-                                    }
-                                });
-                            }
-                        }));
-                USER_CLEAN.onEvent();
-                break;
             case R.id.change_layout://新功能介绍
                 Jump2View.getInstance().goVersionChange(activity, ApkUtils.getCurrentPkgVersionName(SheepApp.getInstance()));
                 break;
-            case R.id.tv_submit://退出登录
-                CommonUtil.getInstance().loginOut((BaseActivity) activity);
-                break;
             case R.id.order_layout://订单管理
                 Jump2View.getInstance().goGameTaskOrderList(activity);
                 break;

+ 3 - 2
app/src/main/java/com/kfzs/duanduan/fragment/FgtSignRankings.java

@@ -22,6 +22,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.PunchEntity;
 import com.sheep.gamegroup.presenter.SignRankingsContract;
 import com.sheep.gamegroup.presenter.SignRankingsPresenter;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -112,7 +113,7 @@ public class FgtSignRankings extends BaseCompatFragment implements SignRankingsC
 
         if(ListUtil.isEmpty(list)){
             Log.d("Dream","empty type:"+type);
-            empty_view.setVisibility(View.VISIBLE);
+            CommonUtil.getInstance().updateEmptyView(empty_view, true);
             main_content.setVisibility(View.GONE);
         }else{
             Log.d("Dream","empty type:"+type);
@@ -154,7 +155,7 @@ public class FgtSignRankings extends BaseCompatFragment implements SignRankingsC
 
     @Override
     public void failPunch(BaseMessage o) {
-        empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, true);
         main_content.setVisibility(View.GONE);
         G.showToast(o.getMsg());
     }

+ 355 - 179
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -3,6 +3,7 @@ package com.kfzs.duanduan.fragment;
 import android.app.Activity;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -18,11 +19,8 @@ import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.AdapterView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.RadioGroup;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
@@ -34,6 +32,8 @@ import com.kfzs.duanduan.BaseCompatFragment;
 import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.react.ReactUtil;
 import com.kfzs.duanduan.react.SharedPreferences;
+import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.mdad.sdk.mdsdk.AdManager;
 import com.sheep.gamegroup.di.components.DaggerSmallSheepComponent;
 import com.sheep.gamegroup.di.modules.SmallSheepModule;
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
@@ -59,9 +59,7 @@ import com.sheep.gamegroup.presenter.SmallSheepPresenter;
 import com.sheep.gamegroup.presenter.TryMakeMoneyContract;
 import com.sheep.gamegroup.presenter.TryMakeMoneyPresenter;
 import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.Conversion2;
 import com.sheep.gamegroup.util.GlideImageLoader;
-import com.sheep.gamegroup.util.ImageGlarryDrawable;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.MyDbManager;
@@ -71,17 +69,23 @@ import com.sheep.gamegroup.util.PreferenceUtils;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.glide.GlideCircleTransformWithBorder;
 import com.sheep.gamegroup.view.activity.NotificationsUtils;
 import com.sheep.gamegroup.view.adapter.AdpHomeListGrideview;
 import com.sheep.gamegroup.view.adapter.AdpHomeListListview;
 import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
-import com.sheep.gamegroup.view.customview.SheepViewPager;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskList;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sunfusheng.marqueeview.MarqueeView;
+import com.youth.banner.Banner;
+import com.youth.banner.BannerConfig;
+import com.youth.banner.listener.OnBannerListener;
+import com.youth.banner.loader.ImageLoader;
 
+import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
@@ -111,10 +115,8 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     MarqueeView homepageItemNoticeMv;
     @BindView(R.id.homepage_item_notice_layout)
     LinearLayout homepageItemNoticeLayout;
-    @BindView(R.id.homepage_item_banner_layout)
-    RelativeLayout homepage_item_banner_layout;
-    @BindView(R.id.icon_layout)
-    RelativeLayout icon_layout;
+    @BindView(R.id.banner)
+    Banner banner;
 
     @BindView(R.id.icon_img_iv)
     ImageView iconImgIv;
@@ -122,14 +124,10 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     TextView nameTv;
     @BindView(R.id.sheep_num_tv)
     TextView sheepNumTv;
-    @BindView(R.id.user_layout)
-    LinearLayout userLayout;
     @BindView(R.id.withdrawal)
     TextView withdrawal;
     @BindView(R.id.my_price)
     TextView myPrice;
-    @BindView(R.id.my_all_price)
-    TextView myAllPrice;
     @BindView(R.id.try_play_layout)
     LinearLayout tryPlayLayout;
     @BindView(R.id.invitation_layout)
@@ -138,10 +136,6 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     LinearLayout lyingLayout;
     @BindView(R.id.card_layout)
     LinearLayout card_layout;
-    @BindView(R.id.viewpager_banner)
-    SheepViewPager viewpager_banner;
-    @BindView(R.id.group_banner)
-    RadioGroup group_banner;
     @BindView(R.id.scrollView)
     NestedScrollView scrollView;
     @BindView(R.id.newbie_task)
@@ -176,6 +170,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     private int position = 0;
     private List<TaskReleaseEty> releaseEtyLists = new ArrayList<>();
     private List<SlideshowEty> slideshowEtyLists = new ArrayList<>();
+    private List<String> slideshowTitleList = new ArrayList<>();
     private List<BulletinEnty> bulletinEntyLists = new ArrayList<>();
 
     private List<HomeListEntity> homeListEntitys = new ArrayList<>();
@@ -190,13 +185,13 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             super.handleMessage(msg);
             switch (msg.what) {
                 case 0:
-                    refalsh();
+                    loadUserInfo();
                     break;
                 case 1:
                     tryMakeMoneyAdp.setIs_succession(3);
-                    if(releaseEtyLists != null && releaseEtyLists.size()>0){
+                    if (releaseEtyLists != null && releaseEtyLists.size() > 0) {
 
-                        tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists), position>2?1:position);
+                        tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists), position > 2 ? 1 : position);
                     }
                     tryMakeMoneyAdp.notifyDataSetChanged();
                     checkAndInitView();
@@ -216,6 +211,9 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         TestUtil.testChange(activity, (TextView) getViewById(R.id.test_change));
         TestUtil.testChangeUser(activity, (TextView) getViewById(R.id.test_change_user));
         GlideImageLoader.setImage(bg_newbie_task, "http://cdngame.kuaifazs.com/bg_newbie_task.png");
+        if (pagePresenter != null) {
+            initData();
+        }
     }
 
 
@@ -229,29 +227,25 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 .build()
                 .inject(this);
         recyclerInitView();
-
+        LinearLayout.LayoutParams bannerLayoutParams = (LinearLayout.LayoutParams) banner.getLayoutParams();
+        bannerLayoutParams.height = G.WIDTH * 25 / 72;
+        banner.setLayoutParams(bannerLayoutParams);
     }
 
 
-
-    private void refalsh() {
+    private void loadUserInfo() {
 
         if (myPrice == null || userEntity == null) {
             return;
         }
-        myPrice.setText(userEntity.getBalance() + " 元");
-        myAllPrice.setText("累计资产 " + userEntity.getTotal_asset() + " 元");
-        nameTv.setText(userEntity.getNickname() + "");//绵羊号:123456789
-        sheepNumTv.setText("绵羊号:" + userEntity.getInvitation_code());
+        ViewUtil.setText(nameTv, userEntity.getNickname());
+        ViewUtil.setText(sheepNumTv, String.format(Locale.CHINA, "绵羊号:%s", userEntity.getInvitation_code()));
         if (ReactUtil.isSmallDebug()) {
-            sheepNumTv.append("\n\n邀请人:");
+            sheepNumTv.append("\n邀请人:");
             sheepNumTv.append(userEntity.getParent_code());
         }
-
-        Glide.with(activity)
-                .load(userEntity.getAvatar())
-                .apply(new RequestOptions().circleCrop().placeholder(R.drawable.icon))
-                .into(iconImgIv);
+        ViewUtil.setText(myPrice, String.format(Locale.CHINA, "%s\u0020元", userEntity.getBalance()));
+        GlideImageLoader.setAvatar(iconImgIv, userEntity.getAvatar(), Color.argb(128, 255, 255, 255));
 
     }
 
@@ -299,7 +293,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
-                initData();
+                refreshData();
                 refresh.setRefreshing(false);
             }
         });
@@ -310,18 +304,141 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         SysAppUtil.checkNet(new Action1<Integer>() {
             @Override
             public void call(Integer result) {
-                if(result != 0){//无网络
-                    if(check_net_ll != null)
+                if (result != 0) {//无网络
+                    if (check_net_ll != null)
                         check_net_ll.setVisibility(View.VISIBLE);
                 } else {
-                    if(check_net_ll != null)
+                    if (check_net_ll != null)
+                        check_net_ll.setVisibility(View.GONE);
+                }
+            }
+        });
+        initACacheData();
+    }
+    private void initACacheData(){
+        if (upview1 != null) {
+            //停止滚动
+            upview1.stopFlipping();
+            upview1.startFlipping();
+        }
+        if (homepageItemNoticeMv != null) {
+            //停止滚动
+            homepageItemNoticeMv.stopFlipping();
+            homepageItemNoticeMv.startFlipping();
+        }
+
+        //用户信息
+        userEntity = CommonUtil.getInstance().getCacheResult(ApiKey.get_info, UserEntity.class);
+        if(userEntity == null){//onResume中从网络获取
+        } else {
+            loadUserInfo();
+        }
+
+        //实时动态
+        List<MoreDataEntity> cacheMoreDataEtyList = CommonUtil.getInstance().getCacheList(ApiKey.award_detail, MoreDataEntity.class);
+        if(ListUtil.isEmpty(cacheMoreDataEtyList)){
+            pagePresenter.getAwardDetail();
+        } else {
+            invite(cacheMoreDataEtyList);
+        }
+        //正在运行的任务
+        position = 0;
+        releaseEtyLists.clear();
+        tryMakeMoneyAdp.clear();
+        tryMakeMoneyAdp.addType(1);
+        for (int i = 0; i < 2; i++) {
+            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.NONE, null));
+        }
+        List<TaskAcceptedEty> cacheTaskAcceptedEtyList = CommonUtil.getInstance().getCacheList(ApiKey.new_run_task(3), TaskAcceptedEty.class);
+        if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {//onResume中从网络获取
+
+        } else {
+            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, cacheTaskAcceptedEtyList), position);
+            tryMakeMoneyAdp.addPresenter(tryMakeMoneyPresenter);
+            position++;
+        }
+        List<TaskReleaseEty> cacheTaskReleaseEtyList = CommonUtil.getInstance().getCacheList(ApiKey.release_task, TaskReleaseEty.class);
+        if (ListUtil.isEmpty(cacheTaskReleaseEtyList)) {//onResume中从网络获取
+
+        } else {
+            releaseEtyLists.addAll(cacheTaskReleaseEtyList);
+        }
+
+        tryMakeMoneyAdp.setIs_succession(3);
+        tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RELEASE_TASK, releaseEtyLists), position);
+        tryMakeMoneyAdp.notifyDataSetChanged();
+
+        //公告
+        List<BulletinEnty> cacheBulletinEtyList = CommonUtil.getInstance().getCacheList(ApiKey.bulletin, BulletinEnty.class);
+        if(ListUtil.isEmpty(cacheBulletinEtyList)){
+            homepageItemNoticeLayout.setVisibility(View.GONE);
+            pagePresenter.bulletin(null);
+        } else {
+            bulletinEntyLists.clear();
+            bulletinEntyLists.addAll(cacheBulletinEtyList);
+            inviteNotice(bulletinEntyLists);
+        }
+        //轮播
+        List<SlideshowEty> cacheSlideshowEtyList = CommonUtil.getInstance().getCacheList(ApiKey.slideshow, SlideshowEty.class);
+        if(ListUtil.isEmpty(cacheSlideshowEtyList)){
+            banner.setVisibility(View.GONE);
+            pagePresenter.slideshow(null);
+        } else {
+            for (SlideshowEty slideshowEty : cacheSlideshowEtyList) {
+                slideshowEty.setObjects(CommonUtil.getInstance().getValue(slideshowEty.getExt()));
+                slideshowEtyLists.add(slideshowEty);
+                slideshowTitleList.add(slideshowEty.getTitle());
+            }
+            bindBanner();
+        }
+        //首页list
+        List<HomeListEntity> cacheHomeListEtyList = CommonUtil.getInstance().getCacheList(ApiKey.home_list, HomeListEntity.class);
+        if(ListUtil.isEmpty(cacheHomeListEtyList)){
+            home_list_gridview_layout.setVisibility(View.GONE);
+            pagePresenter.homeList();//首页list
+        } else {
+            home_list_gridview_layout.setVisibility(View.VISIBLE);
+            homeListEntitys.addAll(cacheHomeListEtyList);
+            boolean isShowQB = false;
+            for (int i = 0; i < homeListEntitys.size(); i++) {
+                if (i < 4) {
+                    homeListEntitysGridview.add(homeListEntitys.get(i));
+                } else {
+                    homeListEntitysListview.add(homeListEntitys.get(i));
+                }
+                if (homeListEntitys.get(i).getJump().equals("6")) {//6Q币充值
+                    isShowQB = !isShowQB;
+                }
+                if (homeListEntitys.get(i).getJump().equals("14")) {//幂动科技
+
+
+                }
+            }
+            SheepApp.getInstance().setShowQB(isShowQB);
+            adpHomeListGrideview.notifyDataSetChanged();
+            adpHomeListListview.notifyDataSetChanged();
+            home_list_gridview_listview.setVisibility(homeListEntitysListview.isEmpty() ? View.GONE : View.VISIBLE);
+        }
+
+        //详情分享地址
+        CommonUtil.getInstance().initUrlConfigByNet(activity);
+    }
+    public void refreshData() {
+        SysAppUtil.checkNet(new Action1<Integer>() {
+            @Override
+            public void call(Integer result) {
+                if (result != 0) {//无网络
+                    if (check_net_ll != null)
+                        check_net_ll.setVisibility(View.VISIBLE);
+                } else {
+                    if (check_net_ll != null)
                         check_net_ll.setVisibility(View.GONE);
                 }
             }
         });
         mInitData();
     }
-    private void mInitData(){
+    private void mInitData() {
         if (upview1 != null) {
             //停止滚动
             upview1.stopFlipping();
@@ -338,10 +455,9 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             pagePresenter.getAwardDetail();
         }
 
-        initWechatIsOpen();
         recyclerInitData();//任务
-        pagePresenter.bulletin(null);//轮播
-        pagePresenter.slideshow(null);//公告
+        pagePresenter.bulletin(null);//公告
+        pagePresenter.slideshow(null);//轮播
         pagePresenter.homeList();//首页list
 
         //详情分享地址
@@ -357,7 +473,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         //recyclerView 解决滑动不流畅问题
         recyclerview.setHasFixedSize(true);
         recyclerview.setNestedScrollingEnabled(false);
-        tryMakeMoneyAdp = new TryMakeMoneyAdp(activity);
+        tryMakeMoneyAdp = new TryMakeMoneyAdp(activity, 1);//1代表来自主页
         for (int i = 0; i < 2; i++) {
             tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.NONE, null));
         }
@@ -389,20 +505,15 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                                 1,
                                 0,
                                 0,
-                                -1+"",
+                                -1 + "",
                                 3));
 
         tryMakeMoneyPresenter.releaseTask(parameEty);
     }
 
-    /**
-     * 获取微信挂机是否开启状态
-     */
-    private void initWechatIsOpen() {
-    }
 
     @OnClick({R.id.recharge, R.id.withdrawal,
-            R.id.newbie_task, R.id.icon_layout, R.id.info_layout
+            R.id.newbie_task, R.id.icon_img_iv, R.id.user_layout
     })
     public void onViewClicked(View view) {
         switch (view.getId()) {
@@ -413,17 +524,17 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 DialogNewbieTaskList.tryShowDialog(activity);
                 NEWBIE_TASK.onEvent();
                 break;
-            case R.id.icon_layout://头像
-                if(TestUtil.isTest()) {
+            case R.id.icon_img_iv://头像
+                if (TestUtil.isTest()) {
                     TestUtil.test(activity);
-                }else
+                } else
                     Jump2View.getInstance().goPersonnalCenterView(activity, null);
                 break;
-            case R.id.info_layout://其它信息
+            case R.id.user_layout://个人信息
                 Jump2View.getInstance().goPersonnalCenterView(activity, null);
                 break;
             case R.id.recharge://充值
-                Jump2View.getInstance().goRechargeAct(activity,"首页");
+                Jump2View.getInstance().goRechargeAct(activity, "首页");
                 break;
         }
     }
@@ -435,12 +546,20 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         }
         BaseMessage baseMessage = (BaseMessage) o;
         userEntity = JSON.parseObject(JSONObject.toJSONString(baseMessage.getData()), UserEntity.class);
+        if(userEntity == null){
+            return;
+        }
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                //幂动科技
+                CommonUtil.getInstance().initMiDong(activity, userEntity.getId());
+            }
+        }, 500);
         //保存用户id信息
         PreferenceUtils.setPrefString(SheepApp.mContext, UMConfigUtils.LOGIN_OPENID, userEntity.getOpen_id());
         //保存用户邀请人邀请码
         PreferenceUtils.setPrefString(SheepApp.mContext, "invitation_code", userEntity.getParent_code());
-        //统计用户登录信息
-        UMConfigUtils.onProfileSignIn();
         try {
             MyDbManager.getInstance().saveOrUpdateUser(userEntity);
 
@@ -490,7 +609,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             BaseMessage baseMessage = (BaseMessage) o;
             List<TaskAcceptedEty> taskAcceptedEty = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), TaskAcceptedEty.class);
             AutoTaskListUtil.getInstance().loadList(taskAcceptedEty);
-            if(taskAcceptedEty != null && taskAcceptedEty.size()>0){
+            if (taskAcceptedEty != null && taskAcceptedEty.size() > 0) {
                 tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.RUN_TASK, taskAcceptedEty), position);
                 tryMakeMoneyAdp.addPresenter(tryMakeMoneyPresenter);
                 position++;
@@ -578,16 +697,17 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
         try {
             List<SlideshowEty> slideshowEtyList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), SlideshowEty.class);
-            if (slideshowEtyList != null && slideshowEtyList.size()>0) {
+            if (slideshowEtyList != null && slideshowEtyList.size() > 0) {
                 slideshowEtyLists.clear();
-                for(SlideshowEty slideshowEty:slideshowEtyList){
+                for (SlideshowEty slideshowEty : slideshowEtyList) {
                     slideshowEty.setObjects(CommonUtil.getInstance().getValue(slideshowEty.getExt()));
                     slideshowEtyLists.add(slideshowEty);
+                    slideshowTitleList.add(slideshowEty.getTitle());
                 }
 
                 bindBanner();
-            }else {
-                homepage_item_banner_layout.setVisibility(View.GONE);
+            } else {
+                banner.setVisibility(View.GONE);
             }
 
         } catch (Exception e) {
@@ -605,11 +725,11 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 
         try {
             List<BulletinEnty> bulletinEntyList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), BulletinEnty.class);
-            if (bulletinEntyList != null && bulletinEntyList.size() >0) {
+            if (bulletinEntyList != null && bulletinEntyList.size() > 0) {
                 bulletinEntyLists.clear();
                 bulletinEntyLists.addAll(bulletinEntyList);
                 inviteNotice(bulletinEntyLists);
-            }else {
+            } else {
                 homepageItemNoticeLayout.setVisibility(View.GONE);
             }
 
@@ -621,25 +741,25 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void successhomeList(BaseMessage baseMessage) {
         checkAndInitView();
-        try{
+        try {
             List<HomeListEntity> homeListEntity = JSONArray.parseArray(
                     JSONArray.toJSONString(baseMessage.getData()),
                     HomeListEntity.class
             );
-            if(homeListEntity != null && homeListEntity.size()> 0){
+            if (homeListEntity != null && homeListEntity.size() > 0) {
                 home_list_gridview_layout.setVisibility(View.VISIBLE);
                 homeListEntitys.clear();
                 homeListEntitysGridview.clear();
                 homeListEntitysListview.clear();
                 homeListEntitys.addAll(homeListEntity);
                 boolean isShowQB = false;
-                for (int i=0;i<homeListEntitys.size();i++){
-                    if(i<4){
+                for (int i = 0; i < homeListEntitys.size(); i++) {
+                    if (i < 4) {
                         homeListEntitysGridview.add(homeListEntitys.get(i));
-                    }else {
+                    } else {
                         homeListEntitysListview.add(homeListEntitys.get(i));
                     }
-                    if(homeListEntitys.get(i).getJump().equals("6")){//6Q币充值
+                    if (homeListEntitys.get(i).getJump().equals("6")) {//6Q币充值
                         isShowQB = !isShowQB;
                     }
                 }
@@ -647,23 +767,23 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 adpHomeListGrideview.notifyDataSetChanged();
                 adpHomeListListview.notifyDataSetChanged();
                 home_list_gridview_listview.setVisibility(homeListEntitysListview.isEmpty() ? View.GONE : View.VISIBLE);
-            }else {
+            } else {
                 home_list_gridview_layout.setVisibility(View.GONE);
 
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
     private void checkAndInitView() {
-        if(recyclerview == null)
+        if (recyclerview == null)
             recyclerview = mContentView.findViewById(R.id.recyclerview);
-        if(scrollView == null)
+        if (scrollView == null)
             scrollView = mContentView.findViewById(R.id.scrollView);
-        if(home_list_gridview_layout == null)
+        if (home_list_gridview_layout == null)
             home_list_gridview_layout = mContentView.findViewById(R.id.home_list_gridview_layout);
-        if(home_list_gridview_listview == null)
+        if (home_list_gridview_listview == null)
             home_list_gridview_listview = mContentView.findViewById(R.id.home_list_gridview_listview);
     }
 
@@ -677,10 +797,10 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void onResume() {
         super.onResume();
-        if (pagePresenter != null) {
-            initData();
+        if(pagePresenter != null) {
+            pagePresenter.getUserInfo();
+            recyclerInitData();//任务
         }
-
     }
 
     @Override
@@ -745,7 +865,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     public void onEventMainThread(BigEvent event) {
         switch (event.getEventTypes()) {
             case ONFRESH_FGT_FAMLLSHEEP:
-                initData();
+                refreshData();
                 break;
         }
     }
@@ -756,7 +876,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         UserEntity enity = userEntity;
         enity.setNickname(done.getNikeName());
         userEntity = enity;
-        refalsh();
+        loadUserInfo();
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -765,7 +885,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         enity.setBalance(done.getBalance());
         enity.setTotal_asset(done.getTotal_asset());
         userEntity = enity;
-        refalsh();
+        loadUserInfo();
     }
 
 
@@ -774,7 +894,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         UserEntity enity = userEntity;
         enity.setAvatar(done.getAvatar());
         userEntity = enity;
-        refalsh();
+        loadUserInfo();
     }
 
 
@@ -789,7 +909,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         // TODO: inflate a fragment view
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
-        if(rootView != null)
+        if (rootView != null)
             unbinder = ButterKnife.bind(this, rootView);
         return rootView;
     }
@@ -806,7 +926,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         try {
             userEntity = MyDbManager.getInstance().dbFindUser();
             if (userEntity != null) {
-                refalsh();
+                loadUserInfo();
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -816,110 +936,141 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     @Override
     public void onStart() {
         super.onStart();
+        //开始轮播
+        banner.startAutoPlay();
     }
 
-    private Conversion2<SlideshowEty, String, String> conversion2 = new Conversion2<SlideshowEty, String, String>() {
-        @Override
-        public String convert1(SlideshowEty slideshowEty, int position) {
-            return slideshowEty.getTitle();
-        }
+    @Override
+    public void onStop() {
+        super.onStop();
+        //结束轮播
+        banner.stopAutoPlay();
+    }
 
-        @Override
-        public String convert2(SlideshowEty slideshowEty, int position) {
-            return slideshowEty.getUrl();
-        }
-    };
-    private ImageGlarryDrawable<SlideshowEty> mImageGlarryStr;
     private void bindBanner() {
-        homepage_item_banner_layout.setVisibility(View.VISIBLE);
-        if (mImageGlarryStr != null) {
-            mImageGlarryStr.init(slideshowEtyLists, ImageView.ScaleType.CENTER_CROP, conversion2);
+        banner.setVisibility(View.VISIBLE);
+        //设置图片加载器
+        banner.setImageLoader(new ImageLoader() {
+                    @Override
+                    public void displayImage(Context context, Object o, ImageView imageView) {
+                        if (o instanceof SlideshowEty)
+                            Glide.with(context).load(((SlideshowEty) o).getUrl()).apply(new RequestOptions().dontAnimate()).into(imageView);
+                    }
+                })
+                .setDelayTime(4000)
+                .setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE)
+                //设置图片集合
+                .setImages(slideshowEtyLists).setBannerTitles(slideshowTitleList)
+                .setOnBannerListener(new OnBannerListener() {
+                    @Override
+                    public void OnBannerClick(int i) {
+                        clickBanner(i);
+                    }
+                });
+
+        //banner设置方法全部调用完毕时最后调用
+        banner.start();
+//        //设置banner样式
+//        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
+//        //设置图片加载器
+//        banner.setImageLoader(new GlideImageLoader());
+//        //设置图片集合
+//        banner.setImages(images);
+//        //设置banner动画效果
+//        banner.setBannerAnimation(Transformer.DepthPage);
+//        //设置标题集合(当banner样式有显示title时)
+//        banner.setBannerTitles(titles);
+//        //设置自动轮播,默认为true
+//        banner.isAutoPlay(true);
+//        //设置轮播时间
+//        banner.setDelayTime(1500);
+//        //设置指示器位置(当banner模式中有指示器时)
+//        banner.setIndicatorGravity(BannerConfig.CENTER);
+//        //banner设置方法全部调用完毕时最后调用
+//        banner.start();
+    }
+
+    private void clickBanner(int position) {
+        SlideshowEty clickedGameObj = ListUtil.getIndex(slideshowEtyLists, position);
+        if (clickedGameObj == null) {
             return;
         }
-        mImageGlarryStr = new ImageGlarryDrawable<>((Activity) mContext, viewpager_banner, group_banner);
-        mImageGlarryStr.init(slideshowEtyLists, ImageView.ScaleType.CENTER_CROP, conversion2);
-        mImageGlarryStr.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                SlideshowEty clickedGameObj = ListUtil.getIndex(slideshowEtyLists, position);
-                if(clickedGameObj == null){
-                    return;
+        UMConfigUtils.onEvent(UMConfigUtils.Event.BANNER_CLICK_HORIZONTAL);
+        UMConfigUtils.IdEvent.BANNER.commit(clickedGameObj.getId());
+        switch (clickedGameObj.getType()) {// 0,类型 1跳转试玩赚钱、2单个任务详情、3信用卡办理、4 H5页面、5 微信二维码任务
+            case 1:
+                Jump2View.getInstance()
+                        .goTryplayView(activity, null);
+                break;
+            case 2:
+                try {
+                    Jump2View.getInstance()
+                            .goTaskDetailView(activity, EntityUtils.getExtInfo(clickedGameObj.getExt()).getId());
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
-                UMConfigUtils.onEvent(UMConfigUtils.Event.BANNER_CLICK_HORIZONTAL);
-                UMConfigUtils.IdEvent.BANNER.commit(clickedGameObj.getId());
-                switch (clickedGameObj.getType()) {// 0,类型 1跳转试玩赚钱、2单个任务详情、3信用卡办理、4 H5页面、5 微信二维码任务
-                    case 1:
-                        Jump2View.getInstance()
-                                .goTryplayView(activity, null);
-                        break;
-                    case 2:
-                        try {
-                            Jump2View.getInstance()
-                                    .goTaskDetailView(activity, EntityUtils.getExtInfo(clickedGameObj.getExt()).getId());
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                        break;
-                    case 3:
-                        Jump2View.getInstance()
-                                .goCreditCardTaskList(activity, 3);
-                        break;
-                    case 4:
-                        if(!TextUtils.isEmpty(clickedGameObj.getObjects())){
-                            Ext ext = EntityUtils.getExtInfo(clickedGameObj.getExt());
-                            if(ext.getTitle() == null)//外部浏览器加载H5
-                                Jump2View.getInstance().goWeb(activity, ext.getUrl());
-                            else//内部WebView加载H5
-                                Jump2View.getInstance().goWeb(activity, ext.getUrl(), ext.getTitle());
-
-                        }
+                break;
+            case 3:
+                Jump2View.getInstance()
+                        .goCreditCardTaskList(activity, 3);
+                break;
+            case 4:
+                if (!TextUtils.isEmpty(clickedGameObj.getObjects())) {
+                    Ext ext = EntityUtils.getExtInfo(clickedGameObj.getExt());
+                    if (ext.getTitle() == null)//外部浏览器加载H5
+                        Jump2View.getInstance().goWeb(activity, ext.getUrl());
+                    else//内部WebView加载H5
+                        Jump2View.getInstance().goWeb(activity, ext.getUrl(), ext.getTitle());
 
-                        break;
-                    case 5:
-                        if(!TextUtils.isEmpty(clickedGameObj.getObjects())){
-
-                            Jump2View.getInstance()
-                                    .goWeb(
-                                            activity,
-                                            clickedGameObj.getObjects(),
-                                            "微信二维码辅助好友注册任务");
-                        }
+                }
 
-                        break;
-                    case 6://连续任务
-                        Jump2View.getInstance()
-                                .goTryplayView(activity, 1);
-                        break;
-                    case 9://打卡赚钱
-                        showToast("打卡赚钱");
-                        Jump2View.getInstance().goSignCardAct(activity, null);
-                        break;
-                    case 7://玩转游戏
-                        Jump2View.getInstance()
-                                .goMainGame(activity);
-                        break;
-                    case 11://游戏任务
-                        Jump2View.getInstance()
-                                .goGameMakeMoney(activity, 0);
-                        break;
-                    case 12://闲玩任务
-                        Jump2View.getInstance().goXianwanWeb(activity,null, null);
-                        break;
-                    case 13://游戏代充
-                        Jump2View.getInstance().goGameRecharge(activity,null);
-                        break;
-                    default:
-                        G.showToast(R.string.coming_soon);
-                        break;
+                break;
+            case 5:
+                if (!TextUtils.isEmpty(clickedGameObj.getObjects())) {
+
+                    Jump2View.getInstance()
+                            .goWeb(
+                                    activity,
+                                    clickedGameObj.getObjects(),
+                                    "微信二维码辅助好友注册任务");
                 }
-            }
-        });
+
+                break;
+            case 6://连续任务
+                Jump2View.getInstance()
+                        .goTryplayView(activity, 1);
+                break;
+            case 9://打卡赚钱
+                showToast("打卡赚钱");
+                Jump2View.getInstance().goSignCardAct(activity, null);
+                break;
+            case 7://玩转游戏
+                Jump2View.getInstance()
+                        .goMainGame(activity);
+                break;
+            case 11://游戏任务
+                Jump2View.getInstance()
+                        .goGameMakeMoney(activity, 0);
+                break;
+            case 12://闲玩任务
+                Jump2View.getInstance().goXianwanWeb(activity, null, null);
+                break;
+            case 13://游戏代充
+                Jump2View.getInstance().goGameRecharge(activity, null);
+                break;
+            case 14://幂动科技
+                Jump2View.getInstance().goMiDong(activity, null);
+                break;
+            default:
+                G.showToast(R.string.coming_soon);
+                break;
+        }
     }
 
     /**
      * 公共
      */
-    private void inviteNotice(final  List<BulletinEnty> bulletinEntyList) {
+    private void inviteNotice(final List<BulletinEnty> bulletinEntyList) {
         homepageItemNoticeLayout.setVisibility(View.VISIBLE);
 //        List<String> infoList = new ArrayList<>();
 //        for(BulletinEnty bulletinEnty: bulletinEntyList){
@@ -927,11 +1078,17 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
 //        }
 //        homepageItemNoticeMv.startWithList(infoList, R.anim.anim_left_in,R.anim.anim_right_out);
         homepageItemNoticeMv.removeAllViews();
-        for (BulletinEnty entity : bulletinEntyList) {
+        for (final BulletinEnty entity : bulletinEntyList) {
             StringBuilder sb = new StringBuilder();
             sb.append(entity.getContent()).append("   ");
             TextView moreView = (TextView) LayoutInflater.from(activity).inflate(R.layout.x_item_view, null);
             moreView.setText(sb.toString());
+
+            moreView.setOnClickListener(new View.OnClickListener() {
+                public void onClick(View v) {
+                    onClickNotice(entity);
+                }
+            });
             homepageItemNoticeMv.addView(moreView);
         }
         if (!homepageItemNoticeMv.isAutoStart()) {
@@ -939,23 +1096,42 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             homepageItemNoticeMv.startFlipping();
         }
 
+    }
 
+    /**
+     * 点击一条公告
+     */
+    private void onClickNotice(BulletinEnty item) {
+        switch (item.getJumpType()){// 跳转类型:11,任务 98,内部h5 99,外部h5
+            case 11:
+                Jump2View.getInstance().goTaskDetailView(activity, NumberFormatUtils.parseInteger(item.getJumpValue()));
+                break;
+            case 98:
+                Jump2View.getInstance().goWeb(activity, item.getJumpValue(), null);
+                break;
+            case 99:
+                Jump2View.getInstance().goWeb(activity, item.getJumpValue());
+                break;
+            case 14://幂动科技
+                Jump2View.getInstance().goMiDong(activity, null);
+                break;
+        }
     }
 
     /**
      * 提示用户开启推送通知权限
      * 1)只提示一次,如果用户取消,以后都不在提示
      */
-    private void showPDialog(){
-        boolean isShowDialog = SharedPreferences.getInstance().getBoolean("isShowDialog",true);
-        if(isShowDialog && !NotificationsUtils.isNotificationEnabled(mContext)){//没有开启通知权限
+    private void showPDialog() {
+        boolean isShowDialog = SharedPreferences.getInstance().getBoolean("isShowDialog", true);
+        if (isShowDialog && !NotificationsUtils.isNotificationEnabled(mContext)) {//没有开启通知权限
             AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
             builder.setTitle("提示");
             builder.setMessage("是否开启推送?");
             builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                 @Override
                 public void onClick(DialogInterface dialog, int which) {
-                    SharedPreferences.getInstance().putBoolean("isShowDialog",false);
+                    SharedPreferences.getInstance().putBoolean("isShowDialog", false);
                 }
             });
             builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

+ 2 - 4
app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java

@@ -36,7 +36,7 @@ import rx.schedulers.Schedulers;
 public class TabsHelper {
 
     //多次点击预防
-    public static final int MIN_CLICK_DELAY_TIME = 1000;
+    public static final int MIN_CLICK_DELAY_TIME = 200;
     private long lastClickTime = 0;
     private ActMain activity;
 
@@ -70,8 +70,6 @@ public class TabsHelper {
      */
     private void nativeBack() {
         if (System.currentTimeMillis() - mLastBackTime < 1000) {
-            //退出统计
-            UMConfigUtils.onProfileSignOff();
 
             KFZSApp.getInstance().quit();
         } else {
@@ -100,7 +98,7 @@ public class TabsHelper {
             view.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
-                    long currentTime = Calendar.getInstance().getTimeInMillis();
+                    long currentTime = System.currentTimeMillis();
                     if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
                         lastClickTime = currentTime;
 

+ 14 - 4
app/src/main/java/com/kfzs/duanduan/utils/dlg/DeviceUtils.java

@@ -1,10 +1,12 @@
 package com.kfzs.duanduan.utils.dlg;
 
+import android.Manifest;
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.net.wifi.WifiManager;
 import android.provider.Settings;
+import android.support.v4.app.ActivityCompat;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
@@ -88,12 +90,10 @@ public class DeviceUtils {
     }
 
 
-
-
     public String getIMEI() {
         try {
             return phone.getDeviceId();
-        }catch (Exception e){
+        } catch (Exception e) {
             return "";
         }
     }
@@ -145,8 +145,18 @@ public class DeviceUtils {
         new Configer().put(Configer.IMEI, iemi).commit();
     }
 
-    public String getIMSI() {
+    public String getIMSI(Context context) {
         try {
+            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+                // TODO: Consider calling
+                //    ActivityCompat#requestPermissions
+                // here to request the missing permissions, and then overriding
+                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
+                //                                          int[] grantResults)
+                // to handle the case where the user grants the permission. See the documentation
+                // for ActivityCompat#requestPermissions for more details.
+                return "";
+            }
             return phone.getSubscriberId();
         }catch (Exception e){
             return "";

+ 0 - 16
app/src/main/java/com/sheep/gamegroup/di/components/AccountAndSercuritComponent.java

@@ -1,16 +0,0 @@
-package com.sheep.gamegroup.di.components;
-
-import com.sheep.gamegroup.di.modules.AccountAndSercuritModule;
-import com.sheep.gamegroup.di.scopes.UserScope;
-import com.sheep.gamegroup.view.activity.AccountAndSecurityAct;
-
-import dagger.Component;
-
-/**
- * Created by ljy on 2018/3/15.
- */
-@UserScope
-@Component(modules = AccountAndSercuritModule.class, dependencies = NetComponent.class)
-public interface AccountAndSercuritComponent {
-    void inject(AccountAndSecurityAct phoneAct);
-}

+ 0 - 16
app/src/main/java/com/sheep/gamegroup/di/components/HomePageComponent.java

@@ -1,16 +0,0 @@
-package com.sheep.gamegroup.di.components;
-
-import com.sheep.gamegroup.di.modules.HomePageModule;
-import com.sheep.gamegroup.di.scopes.UserScope;
-import com.sheep.gamegroup.view.activity.HomePageAct;
-
-import dagger.Component;
-
-/**
- * Created by ljy on 2018/3/19.
- */
-@UserScope
-@Component(modules = HomePageModule.class, dependencies = NetComponent.class)
-public interface HomePageComponent {
-    void inject(HomePageAct homePageAct);
-}

+ 0 - 22
app/src/main/java/com/sheep/gamegroup/di/modules/AccountAndSercuritModule.java

@@ -1,22 +0,0 @@
-package com.sheep.gamegroup.di.modules;
-
-import com.sheep.gamegroup.presenter.AccountAndSecuritContract;
-
-import dagger.Module;
-import dagger.Provides;
-
-/**
- * Created by Administrator on 2018/3/10.
- */
-@Module
-public class AccountAndSercuritModule {
-    private AccountAndSecuritContract.View view;
-
-    public AccountAndSercuritModule(AccountAndSecuritContract.View view) {
-        this.view = view;
-    }
-    @Provides
-    public AccountAndSecuritContract.View provideView(){
-        return view;
-    }
-}

+ 0 - 23
app/src/main/java/com/sheep/gamegroup/di/modules/HomePageModule.java

@@ -1,23 +0,0 @@
-package com.sheep.gamegroup.di.modules;
-
-import com.sheep.gamegroup.presenter.HomePageContract;
-
-import dagger.Module;
-import dagger.Provides;
-
-/**
- * Created by ljy on 2018/3/19.
- */
-
-@Module
-public class HomePageModule {
-    private HomePageContract.View view;
-
-    public HomePageModule(HomePageContract.View view) {
-        this.view = view;
-    }
-    @Provides
-    public HomePageContract.View providView(){
-        return view;
-    }
-}

+ 7 - 4
app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java

@@ -3,7 +3,10 @@ package com.sheep.gamegroup.di.modules;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.api.StringConverterFactory;
 import com.sheep.gamegroup.model.util.AddPuplicParameIntercept;
+import com.sheep.gamegroup.model.util.CacheInterceptor;
 import com.sheep.gamegroup.model.util.EntityUtils;
+import com.sheep.gamegroup.model.util.LogInterceptor;
+import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
@@ -28,13 +31,13 @@ public class NetModule {
     @Provides
     @Singleton
     public OkHttpClient provideOkHttpClient() {
-        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
-        loggingInterceptor.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE);
+        LogInterceptor loggingInterceptor = new LogInterceptor(BuildConfig.XXTEA_ENCRYPT);
+        loggingInterceptor.setLevel(TestUtil.isSheep() ? LogInterceptor.ELevel.NONE : LogInterceptor.ELevel.BODY);
         OkHttpClient okhttpClient = new OkHttpClient.Builder()
-                .connectTimeout(30, TimeUnit.SECONDS)
-                .connectTimeout(20, TimeUnit.SECONDS)
+                .connectTimeout(5, TimeUnit.SECONDS)
                 .readTimeout(20,TimeUnit.SECONDS)
                 .addInterceptor(new AddPuplicParameIntercept())
+                .addInterceptor(new CacheInterceptor())
                 .addInterceptor(loggingInterceptor)
                 .build();
         return okhttpClient;

+ 3 - 3
app/src/main/java/com/sheep/gamegroup/heler/DownloadHelper.java

@@ -39,7 +39,7 @@ public class DownloadHelper {
     public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv) {
         updateDownloadTaskView(activity, iTask, down_tv, null);
     }
-    public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv, final Action1<Integer> callBack) {
+    public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack) {
         if(mDownloadTaskService == null){
             mDownloadTaskService = new DownloadTaskService(activity);
         }
@@ -48,13 +48,13 @@ public class DownloadHelper {
             public void call(Object o) {
                 if(o instanceof Integer){
                     downLoadType = (int) o;
-                    if(callBack != null)
-                        callBack.call(downLoadType);
                 } else if( o instanceof String){
                     down_tv.setText((String) o);
                 } else if( o instanceof Boolean){
                     down_tv.setEnabled((Boolean) o);
                 }
+//                if(callBack != null)
+//                    callBack.call(o);
             }
         });
         down_tv.setOnClickListener(new View.OnClickListener() {

+ 14 - 8
app/src/main/java/com/sheep/gamegroup/heler/FindAppHelper.java

@@ -37,13 +37,15 @@ public class FindAppHelper{
         downloadHelper.updateState(status);
     }
     public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv) {
-        downloadHelper.updateDownloadTaskView(activity, iTask, down_tv, new Action1<Integer>() {
+        downloadHelper.updateDownloadTaskView(activity, iTask, down_tv, new Action1<Object>() {
             @Override
-            public void call(Integer integer) {
-                if(DownloadTaskService.STATUS_INIT != integer){//-1 点击下载按钮的回调;其它状态直接回调不需要点击按钮
+            public void call(Object object) {
+                boolean installed = object instanceof  Integer && DownloadTaskService.STATUS_INIT != (int)object;//-1 点击下载按钮的回调;其它状态直接回调不需要点击按钮
+                boolean downloadLinkError = object instanceof  Boolean && !(boolean)object;//false 下载地址错误会传false过来
+                if(installed || downloadLinkError){
                     if(iTask instanceof FindApp) {
                         FindApp findApp = (FindApp) iTask;
-                        recordAppDownloads(activity, findApp, down_tv);
+                        recordAppDownloads(activity, findApp, null);
                         FIND_APP.onEvent("application_id", findApp.getId(), "action", down_tv.getText());
                     }
                 }
@@ -90,10 +92,13 @@ public class FindAppHelper{
                         findApp.setRecord(2);//设置为不可记录
                         if(findApp.isCanDonload()){
                             //提交下载成功
-                            textView.setEnabled(true);
+                            if(textView != null)
+                                textView.setEnabled(true);
                         } else {//提交预约成功
-                            textView.setEnabled(false);
-                            textView.setText("已经预约");
+                            if(textView != null) {
+                                textView.setEnabled(false);
+                                textView.setText("已经预约");
+                            }
                             ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("预约成功")
                                     .setMsg(String.format(Locale.CHINA, "请在%s准时到小绵羊下载哦", TimeUtil.TimeStamp2Date(findApp.getDownload_at(), "yyyy年MM月dd日HH时mm分")))
                                     .setMsgGravity(Gravity.START).setBtnLeftText("我知道了"));
@@ -105,7 +110,8 @@ public class FindAppHelper{
                         if(!findApp.isCanDonload()){
                             G.showToast("预约失败");
                         }
-                        textView.setEnabled(true);
+                        if(textView != null)
+                            textView.setEnabled(true);
                     }
                 });
     }

+ 96 - 5
app/src/main/java/com/sheep/gamegroup/heler/TaskHelper.java

@@ -2,23 +2,24 @@ package com.sheep.gamegroup.heler;
 
 import android.app.Activity;
 import android.text.TextUtils;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.alibaba.fastjson.JSON;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.model.entity.TaskChild;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.RxjavaCountDownTimer;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
@@ -27,6 +28,7 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
+import java.util.List;
 import java.util.Locale;
 
 import rx.android.schedulers.AndroidSchedulers;
@@ -122,6 +124,7 @@ public class TaskHelper {
         ImageView find_information_game_icon = (ImageView)itemView.findViewById(R.id.find_information_game_icon);
         TextView find_information_game_name = (TextView)itemView.findViewById(R.id.find_information_game_name);
         TextView find_information_game_surplus = (TextView)itemView.findViewById(R.id.find_information_game_surplus);
+        TextView find_information_game_surplus1 = (TextView)itemView.findViewById(R.id.find_information_game_surplus1);
         TextView find_information_game_time = (TextView)itemView.findViewById(R.id.find_information_game_time);
         TextView find_information_game_yuan = (TextView)itemView.findViewById(R.id.find_information_game_yuan);
         TextView find_information_game_task0 = (TextView)itemView.findViewById(R.id.find_information_game_task_top);
@@ -133,6 +136,7 @@ public class TaskHelper {
             find_information_game_yuan.setVisibility(View.INVISIBLE);
             find_information_game_surplus.setText(String.format(Locale.CHINA, "可定向消费:%.1f元", orienteeringDetail.getBalance()));
             find_information_game_surplus.setTextColor(activity.getResources().getColor(R.color.red_fd2d54));
+            find_information_game_surplus1.setVisibility(View.GONE);
             find_information_game_task.setText("去充值");
             find_information_game_task.setEnabled(true);
             downloadHelper.updateDownloadTaskView(activity, taskEty, find_information_game_task0);
@@ -152,9 +156,11 @@ public class TaskHelper {
             });
             return;
         }
-        GlideImageLoader.centerImage(find_information_game_icon, taskEty.getIcon());
+        GlideImageLoader.setGameImage(find_information_game_icon, taskEty.getIcon());
         ViewUtil.setText(find_information_game_name, taskReleaseEty.getName());
-        ViewUtil.setText(find_information_game_surplus, String.format(Locale.CHINA, "剩余%s份", taskReleaseEty.getLast_num()));
+        setTaskTypeText(find_information_game_surplus, taskReleaseEty);
+        find_information_game_surplus1.setVisibility(View.VISIBLE);
+        setNumText(find_information_game_surplus1, taskReleaseEty);
         ViewUtil.setText(find_information_game_time, String.format(Locale.CHINA, "截止日期:%s", taskReleaseEty.getDeadline().equals("永久") ? taskReleaseEty.getDeadline() : TimeUtil.TimeStamp2Date(NumberFormatUtils.parseLong(taskReleaseEty.getDeadline()), "yyyy/MM/dd HH:mm")));
         ViewUtil.setText(find_information_game_yuan, String.format(Locale.CHINA, "+%s元", taskReleaseEty.getBonus()));
         find_information_game_task0.setVisibility(View.GONE);
@@ -291,7 +297,8 @@ public class TaskHelper {
                             taskEty.setRelease_task_id(taskReleaseEty.getId());
                             taskEty.setName(taskReleaseEty.getName());
                             taskEty.setAcceptedTaskId(taskReleaseEty.getAccepted_task_id());
-                            Jump2View.getInstance().goDialogActivityView(activity, taskEty);
+                            Jump2View.getInstance().goTaskDetailView(activity, release_task_id);
+//                            Jump2View.getInstance().goDialogActivityView(activity, taskEty);
                             FIND_TASK.onEvent("release_task_id", release_task_id, "action", "领取任务");
                         }
                     });
@@ -349,4 +356,88 @@ public class TaskHelper {
         downloadHelper.updateState(status);
     }
 
+
+    /**
+     * 设置剩余份数文本
+     * @param textView
+     * @param taskReleaseEty
+     */
+    public static void setNumText(TextView textView, TaskReleaseEty taskReleaseEty) {
+        textView.setVisibility(View.VISIBLE);
+        ViewUtil.setText(textView, String.format(Locale.CHINA, "剩余%s份", taskReleaseEty.getLast_num()));
+    }
+    /**
+     * 设置游戏类型文本
+     * @param textView
+     * @param taskReleaseEty
+     */
+    public static void setTaskTypeText(TextView textView, TaskReleaseEty taskReleaseEty) {
+        String[] textColor = getTaskTypeTextColor(taskReleaseEty.getTask());
+        ViewUtil.setColorMapText(textView, String.format(Locale.CHINA, "%s", textColor[0]), textColor[0], textColor[1]);
+        textView.setBackgroundResource(getTaskTypeTextBg(taskReleaseEty.getTask()));
+        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
+        int padding = textView.getContext().getResources().getDimensionPixelSize(R.dimen.content_padding_2);
+        textView.setPadding(4*padding, padding, 4*padding, padding);
+    }
+    //    private int task_type = 1;// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
+    private static String[] getTaskTypeTextColor(TaskEty task) {
+        switch (task.getTask_type()){
+            case 1002:
+            case 1003:
+            case 1004:
+                return new String[]{"游戏任务", "#F81B5F"};
+            case 1000:
+                return new String[]{"连续任务", "#2FA255"};
+            default:
+                return new String[]{"试玩任务", "#FFA21C"};
+        }
+    }
+    //    private int task_type = 1;// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1002平台游戏,1003 腾讯游戏,1004 小米游戏
+    private static int getTaskTypeTextBg(TaskEty task) {
+        switch (task.getTask_type()){
+            case 1002:
+            case 1003:
+            case 1004:
+                return R.drawable.shape_green_stroke_rectangle;
+            case 1000:
+                return R.drawable.shape_red_stroke_rectangle;
+            default:
+                return R.drawable.shape_yellow_stroke_rectangle;
+        }
+    }
+
+    /**
+     * 设置当前子任务为选中状态
+     * @param taskEty
+     */
+    public static void setSelectFlag(TaskEty taskEty) {
+        List<TaskChild> taskChildList;
+        if(taskEty == null || ListUtil.isEmpty(taskChildList = taskEty.getChild()))
+            return;
+        TaskChild selectTaskChild = null;
+        outFor: for (TaskChild taskChild : taskChildList) {
+            switch (taskChild.getStatus()){
+                case 0:
+                case 1:
+                case 2:
+                case 3:
+                case 4:
+                case 6:
+                    selectTaskChild = taskChild;
+                    break outFor;
+            }
+        }
+        if(selectTaskChild != null)
+            selectTaskChild.setSelectFlag(true);
+
+    /*
+    1、 任务未开启时——即将开启
+2、 任务未领取时——可领取
+3、 任务已领取待完成时——进行中
+4、 任务已提交待审核——待审核
+5、 任务审核通过——已完成
+6、 任务审核失败——审核失败
+7、任务已过期未完成——已过期
+     */
+    }
 }

+ 0 - 1
app/src/main/java/com/sheep/gamegroup/model/api/BaseMessageConverter.java

@@ -26,7 +26,6 @@ public class BaseMessageConverter implements Converter<ResponseBody, BaseMessage
         String string = value.string();
         String json = decrypt(string);
         BaseMessage baseMessage = JSONObject.parseObject(json, BaseMessage.class);
-        LogUtil.println("sheepApi", "解密", string, baseMessage);
         return baseMessage;
     }
 

+ 30 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/AdDataSon.java

@@ -0,0 +1,30 @@
+package com.sheep.gamegroup.model.entity;
+
+import com.mdad.sdk.mdsdk.common.AdData;
+
+import java.io.Serializable;
+
+/**
+ * Created by ljy on 2018/7/26.
+ */
+
+public class AdDataSon implements Serializable{
+    private boolean select;
+    private AdData adData;
+
+    public AdData getAdData() {
+        return adData;
+    }
+
+    public void setAdData(AdData adData) {
+        this.adData = adData;
+    }
+
+    public boolean isSelect() {
+        return select;
+    }
+
+    public void setSelect(boolean select) {
+        this.select = select;
+    }
+}

+ 37 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/ApkInfo.java

@@ -0,0 +1,37 @@
+package com.sheep.gamegroup.model.entity;
+
+import java.io.File;
+
+/**
+ * Created by realicing on 2018/7/18.
+ * realicing@sina.com
+ */
+public class ApkInfo {
+    private String comment;
+    private AppInfo appInfo;
+    private File file;
+
+    public String getComment() {
+        return comment;
+    }
+
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+
+    public AppInfo getAppInfo() {
+        return appInfo;
+    }
+
+    public void setAppInfo(AppInfo appInfo) {
+        this.appInfo = appInfo;
+    }
+
+    public File getFile() {
+        return file;
+    }
+
+    public void setFile(File file) {
+        this.file = file;
+    }
+}

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/AppInfo.java

@@ -12,6 +12,8 @@ public class AppInfo {
     private Drawable icon;
     //应用的名字
     private String appName;
+    //应用程序的sha1
+    private String sha1;
     //应用程序的大小
     private String apkSize;
     //应用程序的安装包路径
@@ -80,4 +82,12 @@ public class AppInfo {
     public void setSourceDir(String sourceDir) {
         this.sourceDir = sourceDir;
     }
+
+    public String getSha1() {
+        return sha1;
+    }
+
+    public void setSha1(String sha1) {
+        this.sha1 = sha1;
+    }
 }

+ 36 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/BulletinEnty.java

@@ -3,6 +3,24 @@ package com.sheep.gamegroup.model.entity;
 /**
  * 首页公告
  * Created by ljy on 2018/4/25.
+ * Content:	string
+ 内容
+ CreateTime:	integer ($int64)
+ 创建时间
+ Id:	integer ($int64)
+ IsTiming:	integer ($int64)
+ JumpType:	integer ($int32)
+ 跳转类型:11,任务 98,内部h5 99,外部h5
+ JumpValue:	string
+ 跳转值
+ Order:	integer ($int64)
+ 排序,数字越大越靠前
+ Platform:	integer ($int64)
+ 平台 (1 安卓 2 IOS)
+ ReleaseTime:	integer ($int64)
+ Status:	integer ($int64)
+ UpdateTime:	integer ($int64)
+ 更新时间
  */
 
 public class BulletinEnty {
@@ -11,6 +29,8 @@ public class BulletinEnty {
             private String Id;// 0,
             private int Order;// 0,
             private String UpdateTime;// 0
+            private int JumpType;
+            private String JumpValue;
 
     public String getContent() {
         return Content;
@@ -51,4 +71,20 @@ public class BulletinEnty {
     public void setUpdateTime(String updateTime) {
         UpdateTime = updateTime;
     }
+
+    public int getJumpType() {
+        return JumpType;
+    }
+
+    public void setJumpType(int jumpType) {
+        JumpType = jumpType;
+    }
+
+    public String getJumpValue() {
+        return JumpValue;
+    }
+
+    public void setJumpValue(String jumpValue) {
+        JumpValue = jumpValue;
+    }
 }

+ 13 - 3
app/src/main/java/com/sheep/gamegroup/model/entity/FindItem.java

@@ -1,10 +1,14 @@
 package com.sheep.gamegroup.model.entity;
 
+import android.text.TextUtils;
+
 import com.alibaba.fastjson.annotation.JSONField;
 import com.sheep.gamegroup.util.ListUtil;
 
 import java.util.List;
 
+import rx.functions.Action1;
+
 /**
  * Created by realicing on 2018/6/27.
  * realicing@sina.com
@@ -185,8 +189,14 @@ public class FindItem {
         return type == 1;//类型 1:游戏 2:咨询 3:转跳 4:任务 5:栏目
     }
 
+    //清除空的或者没有名字的标签
+    public void removeNullTag() {
+        ListUtil.removeItem(tages, new ListUtil.CallBack<FindTag, Boolean>(){
 
-
-
-
+            @Override
+            public Boolean call(FindTag findTag) {
+                return findTag == null || TextUtils.isEmpty(findTag.getName());
+            }
+        });
+    }
 }

+ 6 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java

@@ -82,6 +82,12 @@ public class TaskEty implements Serializable, IDownload {
     }
 
     public void setScreenshotsList(List<ScreenshotsEntity> screenshotsList) {
+        List<ScreenshotsEntity> removeList = ListUtil.emptyList();
+        for (ScreenshotsEntity screenshotsEntity : screenshotsList) {
+            if(TextUtils.isEmpty(screenshotsEntity.getImg()))
+                removeList.add(screenshotsEntity);
+        }
+        screenshotsList.removeAll(removeList);
         this.screenshotsList = screenshotsList;
     }
 

+ 0 - 2
app/src/main/java/com/sheep/gamegroup/model/util/AddPuplicParameIntercept.java

@@ -49,7 +49,6 @@ public class AddPuplicParameIntercept implements Interceptor {
                 .newBuilder();
         String method = oldRequest.method();
         RequestBody body = oldRequest.body();
-        LogUtil.println("sheepApi", "request", oldRequest);
         if (BuildConfig.XXTEA_ENCRYPT && (method.equals("POST") || method.equals("PUT"))) {
             RequestBody requestBody = oldRequest.body();
             if (requestBody instanceof FormBody) {
@@ -63,7 +62,6 @@ public class AddPuplicParameIntercept implements Interceptor {
                 }
                 String oldParamsJson = buffer.readUtf8();
                 String newJsonParams = BaseMessageConverter.encrypt(oldParamsJson);
-                LogUtil.println("sheepApi", "加密", oldRequest, oldParamsJson, newJsonParams);
                 if(!TextUtils.isEmpty(newJsonParams))
                     body = RequestBody.create(requestBody.contentType(), newJsonParams);
             }

+ 105 - 0
app/src/main/java/com/sheep/gamegroup/model/util/CacheInterceptor.java

@@ -0,0 +1,105 @@
+package com.sheep.gamegroup.model.util;
+
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import org.afinal.simplecache.ACache;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+import okhttp3.Headers;
+import okhttp3.HttpUrl;
+import okhttp3.Interceptor;
+import okhttp3.MediaType;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import okhttp3.internal.http.HttpHeaders;
+import okio.Buffer;
+import okio.BufferedSource;
+
+/**
+ * Created by realicing on 2018/7/20.
+ * realicing@sina.com
+ */
+public class CacheInterceptor implements Interceptor {
+    private static final Charset UTF8 = Charset.forName("UTF-8");
+
+    public Response intercept(Chain chain) throws IOException {
+        Request request = chain.request();
+        String key = request.url().toString();
+
+        Response response;
+        try {
+            response = chain.proceed(request);
+        } catch (Exception var27) {
+            throw var27;
+        }
+
+        ResponseBody responseBody = response.body();
+        if(responseBody != null) {
+            long contentLength = responseBody.contentLength();
+
+            if (HttpHeaders.hasBody(response)) {
+                if (this.bodyHasUnknownEncoding(response.headers())) {
+                } else {
+                    BufferedSource source = responseBody.source();
+                    source.request(9223372036854775807L);
+                    Buffer buffer = source.buffer();
+
+                    Charset charset = null;
+                    MediaType contentType = responseBody.contentType();
+                    if (contentType != null) {
+                        charset = contentType.charset(UTF8);
+                    }
+                    if (charset == null)
+                        charset = UTF8;
+
+                    if (!isPlaintext(buffer)) {
+                        return response;
+                    }
+
+                    if (contentLength != 0L) {
+                        String result = buffer.clone().readString(charset);
+                        ACache aCache = ACache.get(SheepApp.getInstance());
+                        if (response.code() == 200 && "GET".equals(request.method())) {//成功则缓存get数据
+                            LogUtil.println("sheepLog", "aCache", "key", "=", key);
+                            aCache.put(key, result, 300);//默认缓存5分钟
+                        } else {
+                            aCache.remove(key);
+                        }
+                    }
+                }
+            }
+        }
+
+        return response;
+    }
+
+    static boolean isPlaintext(Buffer buffer) {
+        try {
+            Buffer prefix = new Buffer();
+            long byteCount = buffer.size() < 64L ? buffer.size() : 64L;
+            buffer.copyTo(prefix, 0L, byteCount);
+
+            for (int i = 0; i < 16 && !prefix.exhausted(); ++i) {
+                int codePoint = prefix.readUtf8CodePoint();
+                if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) {
+                    return false;
+                }
+            }
+
+            return true;
+        } catch (EOFException var6) {
+            return false;
+        }
+    }
+
+    private boolean bodyHasUnknownEncoding(Headers headers) {
+        String contentEncoding = headers.get("Content-Encoding");
+        return contentEncoding != null && !contentEncoding.equalsIgnoreCase("identity") && !contentEncoding.equalsIgnoreCase("gzip");
+    }
+}

+ 265 - 0
app/src/main/java/com/sheep/gamegroup/model/util/LogInterceptor.java

@@ -0,0 +1,265 @@
+package com.sheep.gamegroup.model.util;
+
+import com.sheep.gamegroup.model.api.BaseMessageConverter;
+import com.sheep.gamegroup.util.StringUtils;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import okhttp3.Connection;
+import okhttp3.Headers;
+import okhttp3.Interceptor;
+import okhttp3.MediaType;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import okhttp3.internal.http.HttpHeaders;
+import okio.Buffer;
+import okio.BufferedSource;
+import okio.GzipSource;
+
+/**
+ * Created by realicing on 2018/7/20.
+ * realicing@sina.com
+ */
+public class LogInterceptor implements Interceptor {
+    private static final Charset UTF8 = Charset.forName("UTF-8");
+    private final LogInterceptor.ILogger logger;
+    private volatile LogInterceptor.ELevel level;
+    private boolean isDecrypt = false;
+    public LogInterceptor(boolean isDecrypt) {
+        this(isDecrypt, LogInterceptor.ILogger.DEFAULT);
+    }
+
+    public LogInterceptor(boolean isDecrypt, LogInterceptor.ILogger logger) {
+        this.level = LogInterceptor.ELevel.NONE;
+        this.logger = logger;
+        this.isDecrypt = isDecrypt;
+    }
+
+    public LogInterceptor setLevel(LogInterceptor.ELevel level) {
+        if (level == null) {
+            throw new NullPointerException("level == null. Use Level.NONE instead.");
+        } else {
+            this.level = level;
+            return this;
+        }
+    }
+
+    public LogInterceptor.ELevel getLevel() {
+        return this.level;
+    }
+
+    public Response intercept(Chain chain) throws IOException {
+        LogInterceptor.ELevel level = this.level;
+        Request request = chain.request();
+        if (level == LogInterceptor.ELevel.NONE) {
+            return chain.proceed(request);
+        } else {
+            boolean logBody = level == LogInterceptor.ELevel.BODY;
+            boolean logHeaders = logBody || level == LogInterceptor.ELevel.HEADERS;
+            RequestBody requestBody = request.body();
+            boolean hasRequestBody = requestBody != null;
+            Connection connection = chain.connection();
+            String requestStartMessage = "--> " + request.method() + ' ' + request.url() + (connection != null ? " " + connection.protocol() : "");
+            if (!logHeaders && hasRequestBody) {
+                requestStartMessage = requestStartMessage + " (" + requestBody.contentLength() + "-byte body)";
+            }
+
+            this.logger.log(requestStartMessage);
+            if (logHeaders) {
+                if (hasRequestBody) {
+                    if (requestBody.contentType() != null) {
+                        this.logger.log("Content-Type: " + requestBody.contentType());
+                    }
+
+                    if (requestBody.contentLength() != -1L) {
+                        this.logger.log("Content-Length: " + requestBody.contentLength());
+                    }
+                }
+
+                Headers headers = request.headers();
+                int i = 0;
+
+                for(int count = headers.size(); i < count; ++i) {
+                    String name = headers.name(i);
+                    if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) {
+                        this.logger.log(name + ": " + headers.value(i));
+                    }
+                }
+
+                if (logBody && hasRequestBody) {
+                    if (this.bodyHasUnknownEncoding(request.headers())) {
+                        this.logger.log("--> END " + request.method() + " (encoded body omitted)");
+                    } else {
+                        Buffer buffer = new Buffer();
+                        requestBody.writeTo(buffer);
+                        Charset charset = null;
+                        MediaType contentType = requestBody.contentType();
+                        if (contentType != null) {
+                            charset = contentType.charset(UTF8);
+                        }
+                        if(charset == null)
+                            charset = UTF8;
+
+                        this.logger.log("");
+                        if (isPlaintext(buffer)) {
+                            String result = buffer.readString(charset);
+                            this.logger.log(isDecrypt ? result+"\n"+StringUtils.parseJson(BaseMessageConverter.decrypt(result)) : StringUtils.parseJson(BaseMessageConverter.decrypt(result)));
+                            this.logger.log("--> END " + request.method() + " (" + requestBody.contentLength() + "-byte body)");
+                        } else {
+                            this.logger.log("--> END " + request.method() + " (binary " + requestBody.contentLength() + "-byte body omitted)");
+                        }
+                    }
+                } else {
+                    this.logger.log("--> END " + request.method());
+                }
+            }
+
+            long startNs = System.nanoTime();
+
+            Response response;
+            try {
+                response = chain.proceed(request);
+            } catch (Exception var27) {
+                this.logger.log("<-- HTTP FAILED: " + var27);
+                throw var27;
+            }
+
+            long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);
+            ResponseBody responseBody = response.body();
+            long contentLength = responseBody.contentLength();
+            String bodySize = contentLength != -1L ? contentLength + "-byte" : "unknown-length";
+            this.logger.log("<-- " + response.code() + (response.message().isEmpty() ? "" : ' ' + response.message()) + ' ' + response.request().url() + " (" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ')');
+            if (logHeaders) {
+                Headers headers = response.headers();
+                int i = 0;
+
+                for(int count = headers.size(); i < count; ++i) {
+                    this.logger.log(headers.name(i) + ": " + headers.value(i));
+                }
+
+                if (logBody && HttpHeaders.hasBody(response)) {
+                    if (this.bodyHasUnknownEncoding(response.headers())) {
+                        this.logger.log("<-- END HTTP (encoded body omitted)");
+                    } else {
+                        BufferedSource source = responseBody.source();
+                        source.request(9223372036854775807L);
+                        Buffer buffer = source.buffer();
+                        Long gzippedLength = null;
+                        if ("gzip".equalsIgnoreCase(headers.get("Content-Encoding"))) {
+                            gzippedLength = buffer.size();
+                            GzipSource gzippedResponseBody = null;
+
+                            try {
+                                gzippedResponseBody = new GzipSource(buffer.clone());
+                                buffer = new Buffer();
+                                buffer.writeAll(gzippedResponseBody);
+                            } finally {
+                                if (gzippedResponseBody != null) {
+                                    gzippedResponseBody.close();
+                                }
+
+                            }
+                        }
+
+                        Charset charset = null;
+                        MediaType contentType = responseBody.contentType();
+                        if (contentType != null) {
+                            charset = contentType.charset(UTF8);
+                        }
+                        if(charset == null)
+                            charset = UTF8;
+
+                        if (!isPlaintext(buffer)) {
+                            this.logger.log("");
+                            this.logger.log("<-- END HTTP (binary " + buffer.size() + "-byte body omitted)");
+                            return response;
+                        }
+
+                        if (contentLength != 0L) {
+                            this.logger.log("");
+                            String result = buffer.clone().readString(charset);
+                            this.logger.log(isDecrypt ? result+"\n"+StringUtils.parseJson(BaseMessageConverter.decrypt(result)) : StringUtils.parseJson(BaseMessageConverter.decrypt(result)));
+                        }
+
+                        if (gzippedLength != null) {
+                            this.logger.log("<-- END HTTP (" + buffer.size() + "-byte, " + gzippedLength + "-gzipped-byte body)");
+                        } else {
+                            this.logger.log("<-- END HTTP (" + buffer.size() + "-byte body)");
+                        }
+                    }
+                } else {
+                    this.logger.log("<-- END HTTP");
+                }
+            }
+
+            return response;
+        }
+    }
+
+    static boolean isPlaintext(Buffer buffer) {
+        try {
+            Buffer prefix = new Buffer();
+            long byteCount = buffer.size() < 64L ? buffer.size() : 64L;
+            buffer.copyTo(prefix, 0L, byteCount);
+
+            for(int i = 0; i < 16 && !prefix.exhausted(); ++i) {
+                int codePoint = prefix.readUtf8CodePoint();
+                if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) {
+                    return false;
+                }
+            }
+
+            return true;
+        } catch (EOFException var6) {
+            return false;
+        }
+    }
+
+    private boolean bodyHasUnknownEncoding(Headers headers) {
+        String contentEncoding = headers.get("Content-Encoding");
+        return contentEncoding != null && !contentEncoding.equalsIgnoreCase("identity") && !contentEncoding.equalsIgnoreCase("gzip");
+    }
+
+    //规定每段显示的长度
+    private static int LOG_MAXLENGTH = 2000;
+    public interface ILogger {
+        LogInterceptor.ILogger DEFAULT = new LogInterceptor.ILogger() {
+            public void log(String message) {
+
+                int strLength = message.length();
+                int start = 0;
+                int end = LOG_MAXLENGTH;
+                for (int i = 0; i < 100; i++) {
+                    //剩下的文本还是大于规定长度则继续重复截取并输出
+                    if (strLength > end) {
+                        Logger.getLogger("sheepLog").log(Level.INFO, message.substring(start, end), (Throwable) null);
+                        start = end;
+                        end = end + LOG_MAXLENGTH;
+                    } else {
+                        Logger.getLogger("sheepLog").log(Level.INFO, message.substring(start, strLength), (Throwable) null);
+                        break;
+                    }
+                }
+            }
+        };
+
+        void log(String var1);
+    }
+
+    public static enum ELevel {
+        NONE,
+        BASIC,
+        HEADERS,
+        BODY;
+
+        private ELevel() {
+        }
+    }
+}

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/model/util/SheepSubscriber.java

@@ -82,7 +82,7 @@ public abstract class SheepSubscriber<T> extends Subscriber<T> {
 
                 if(baseMessage.getCode() == 0)
                     baseMessage.setCode(throwable.code);
-                LogUtil.println("sheepApi", "onError", e.getMessage(), throwable.message, baseMessage);
+//                LogUtil.println("sheepApi", "onError", e.getMessage(), throwable.message, baseMessage);
                 onError(baseMessage);
             }else {
                 BaseMessage baseMessage = new BaseMessage();

+ 0 - 22
app/src/main/java/com/sheep/gamegroup/presenter/AccountAndSecuritContract.java

@@ -1,22 +0,0 @@
-package com.sheep.gamegroup.presenter;
-
-import com.sheep.gamegroup.IBase.IBasePresenter;
-import com.sheep.gamegroup.IBase.IBaseView;
-import com.sheep.gamegroup.model.entity.UserEntity;
-
-/**
- * Created by Administrator on 2018/3/10.
- */
-
-public interface AccountAndSecuritContract {
-
-    interface Presenter extends IBasePresenter {
-
-    }
-
-    interface View extends IBaseView {
-       void   showTask(UserEntity entity);
-
-
-    }
-}

+ 0 - 56
app/src/main/java/com/sheep/gamegroup/presenter/AccountAndSecuritPresenter.java

@@ -1,56 +0,0 @@
-package com.sheep.gamegroup.presenter;
-
-import com.alibaba.fastjson.JSONObject;
-import com.sheep.gamegroup.model.api.ApiService;
-import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.UserEntity;
-import com.sheep.gamegroup.model.util.SheepSubscriber;
-import com.sheep.gamegroup.util.FastJsonUtils;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-
-import java.util.HashMap;
-
-import javax.inject.Inject;
-
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
-
-/**
- * Created by Administrator on 2018/3/10.
- */
-
-public class AccountAndSecuritPresenter implements  AccountAndSecuritContract.Presenter  {
-
-    private AccountAndSecuritContract.View view;
-    private ApiService apiService;
-
-    @Inject
-    public AccountAndSecuritPresenter(AccountAndSecuritContract.View view, ApiService apiService) {
-        this.view = view;
-        this.apiService = apiService;
-    }
-
-
-    @Override
-    public void getTask(HashMap<String, String> map) {
-
-
-        apiService.getInfo().subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        view.NetError(-1,"请求网络异常");
-                    }
-
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        if(baseMessage!=null){
-
-
-                        UserEntity loginEty = FastJsonUtils.toBean( JSONObject.toJSONString(baseMessage.getData()),UserEntity.class);
-                        view.showTask(loginEty);
-
-                        }
-                    }
-                }); } }

+ 0 - 19
app/src/main/java/com/sheep/gamegroup/presenter/HomePageContract.java

@@ -1,19 +0,0 @@
-package com.sheep.gamegroup.presenter;
-
-/**
- * Created by ljy on 2018/3/19.
- */
-
-public interface HomePageContract {
-
-    interface Persenter{
-
-        void getUserInfo();
-    }
-
-    interface View {
-
-        void updateData2View(Object o);
-        void failData2View(Object o);
-    }
-}

+ 0 - 52
app/src/main/java/com/sheep/gamegroup/presenter/HomePagePresenter.java

@@ -1,52 +0,0 @@
-package com.sheep.gamegroup.presenter;
-
-import android.util.Log;
-
-import com.sheep.gamegroup.model.api.ApiService;
-import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.util.SheepSubscriber;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.SpUtils;
-
-import javax.inject.Inject;
-
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
-
-/**
- * Created by ljy on 2018/3/19.
- */
-
-public class HomePagePresenter implements HomePageContract.Persenter {
-    private HomePageContract.View view;
-    private ApiService apiService;
-
-    @Inject
-    public HomePagePresenter(HomePageContract.View view, ApiService apiService) {
-        this.view = view;
-        this.apiService = apiService;
-    }
-
-    @Override
-    public void getUserInfo() {
-        String token = SpUtils.getOpenId(SheepApp.mContext);
-
-        Log.e("token---user",token+"");
-        apiService.getInfo()
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        view.failData2View(baseMessage);
-
-                    }
-
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        view.updateData2View(baseMessage);
-
-                    }
-                });
-    }
-}

+ 0 - 1
app/src/main/java/com/sheep/gamegroup/presenter/SmallSheepPresenter.java

@@ -116,7 +116,6 @@ public class SmallSheepPresenter implements SmallSheepContract.Persenter {
                     }
                 });
     }
-
     @Override
     public void bulletin(Object o) {
         apiService.bulletin(1,10)

+ 0 - 6
app/src/main/java/com/sheep/gamegroup/util/ChannelContent.java

@@ -95,13 +95,7 @@ public class ChannelContent {
         }
         return hasChannelFile;
     }
-    private static final String[] defaultChannels = {
-            "849198", "935404", "34176879", "38291072", "25284360","976873",
-            "849198", "935404", "34176879", "38291072", "25284360"};//, "40253514", "61337548"};
     public String getChannel_name() {
-        if (TextUtils.isEmpty(channel_name)) {
-            return defaultChannels[Math.abs(new Random().nextInt())%defaultChannels.length];
-        }
         return channel_name;
     }
 

+ 157 - 6
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -1,6 +1,5 @@
 package com.sheep.gamegroup.util;
 
-import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.graphics.Color;
@@ -8,16 +7,18 @@ import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
 import android.os.Handler;
 import android.os.Message;
+import android.support.design.widget.TabLayout;
 import android.support.v7.app.AlertDialog;
 import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewTreeObserver;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alipay.sdk.app.PayTask;
 import com.arialyy.aria.core.Aria;
@@ -26,15 +27,15 @@ import com.arialyy.aria.core.inf.IEntity;
 import com.kfzs.duanduan.datashare.provider.download.DownLoadInfo;
 import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.event.EventTypes;
+import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.mdad.sdk.mdsdk.AdManager;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.alipay.PayResult;
+import com.sheep.gamegroup.model.api.BaseMessageConverter;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.GameAccountEntity;
-import com.sheep.gamegroup.model.entity.GamePayList;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
-import com.sheep.gamegroup.model.entity.RecyleObj;
-import com.sheep.gamegroup.model.entity.RecyleType;
 import com.sheep.gamegroup.model.entity.RequestParameEty;
 import com.sheep.gamegroup.model.entity.TaskChild;
 import com.sheep.gamegroup.model.entity.TaskDescEntity;
@@ -47,6 +48,7 @@ import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.presenter.TryMakeMoneyPresenter;
 import com.sheep.gamegroup.usage.AppUsageManager;
 import com.sheep.gamegroup.view.activity.GameTaskOrderListAct;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
@@ -439,6 +441,9 @@ public class CommonUtil {
             case 13://游戏代充
                 Jump2View.getInstance().goGameRecharge((Activity) context,null);
                 break;
+            case 14://幂动科技
+                Jump2View.getInstance().goMiDong((Activity) context, null);
+                break;
             default:
                 G.showToast(R.string.coming_soon);
                 break;
@@ -687,7 +692,8 @@ public class CommonUtil {
 
             @Override
             public void onTimerTick(long millisUntilFinished, int counTime) {
-                textView.setText(Html.fromHtml(CommonUtil.getInstance().assemblyStrings(TimeUtil.getHours(millisUntilFinished), notice)+""));
+                textView.setText(notice);
+                textView.append(TimeUtil.getHours(millisUntilFinished));
             }
 
             @Override
@@ -1370,4 +1376,149 @@ public class CommonUtil {
         }
         return false;
     }
+    /**
+     * 通过反射调整tabLayout中下划线的宽度
+     * @param tabLayout
+     */
+    public void reflex(final TabLayout tabLayout, final Context context){
+        //了解源码得知 线的宽度是根据 tabView的宽度来设置的
+        tabLayout.post(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    //拿到tabLayout的mTabStrip属性
+                    LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);
+
+//                    int dp10 = dip2px(tabLayout.getContext(), 10);
+                    int add = context.getResources().getDimensionPixelSize(R.dimen.content_padding_10);
+                    int count = mTabStrip.getChildCount();
+                    int fillCount = Math.min(5, count);//一屏的个数
+
+                    for (int i = 0; i < count; i++) {
+                        View tabView = mTabStrip.getChildAt(i);
+
+                        //拿到tabView的mTextView属性  tab的字数不固定一定用反射取mTextView
+                        Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
+                        mTextViewField.setAccessible(true);
+
+                        TextView mTextView = (TextView) mTextViewField.get(tabView);
+
+                        tabView.setPadding(0, 0, 0, 0);
+
+                        //因为我想要的效果是   字多宽线就多宽,所以测量mTextView的宽度
+                        int width = 0;
+                        width = mTextView.getWidth();
+                        if (width == 0) {
+                            mTextView.measure(0, 0);
+                            width = mTextView.getMeasuredWidth();
+                        }
+
+                        //设置tab左右间距为10dp  注意这里不能使用Padding 因为源码中线的宽度是根据 tabView的宽度来设置的
+                        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
+                        params.width = width ;
+                        int margin = (G.WIDTH - fillCount*width - 2*add) / (fillCount*2);
+                        params.leftMargin = margin + (i == 0 ? add : 0);
+                        params.rightMargin = margin + (i + 1 == count ? add : 0);
+                        tabView.setLayoutParams(params);
+
+                        tabView.invalidate();
+                    }
+
+                } catch (NoSuchFieldException e) {
+                    e.printStackTrace();
+                } catch (IllegalAccessException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+
+    }
+
+    public <T> T getCacheResult(String key, Class<T> classT) {
+        ACache aCache = ACache.get(SheepApp.getInstance());
+        String cacheData = aCache.getAsString(SheepApp.getInstance().getConnectAddress().getAppUrl() + "v1/" + key);
+        if (!TextUtils.isEmpty(cacheData)) {
+            if (BuildConfig.XXTEA_ENCRYPT) {
+                cacheData = BaseMessageConverter.decrypt(cacheData);
+            }
+            return JSON.parseObject(cacheData, BaseMessage.class).getData(classT);
+        }
+        return null;
+    }
+    public void resetCacheTime(String key, int saveTime) {
+        ACache aCache = ACache.get(SheepApp.getInstance());
+        String realKey = SheepApp.getInstance().getConnectAddress().getAppUrl() + "v1/" + key;
+        String cacheData = aCache.getAsString(realKey);
+        if (!TextUtils.isEmpty(cacheData)) {
+            aCache.put(realKey, cacheData, saveTime);
+        }
+    }
+
+    public <T> List<T> getCacheList(String key, Class<T> classT) {
+        ACache aCache = ACache.get(SheepApp.getInstance());
+        String cacheData = aCache.getAsString(SheepApp.getInstance().getConnectAddress().getAppUrl() + "v1/" + key);
+        if (!TextUtils.isEmpty(cacheData)) {
+            if (BuildConfig.XXTEA_ENCRYPT) {
+                cacheData = BaseMessageConverter.decrypt(cacheData);
+            }
+            return JSON.parseObject(cacheData, BaseMessage.class).getDataList(classT);
+        }
+        return null;
+    }
+
+    /**
+     * 设置缓存数据的时间
+     * @param key
+     */
+    public void setSaveTime(String key) {
+        ACache aCache = ACache.get(SheepApp.getInstance());
+        aCache.put(key + "saveTime", String.valueOf(System.currentTimeMillis()));
+    }
+
+    /**
+     * 获取缓存数据的时间
+     * @param key
+     * @return
+     */
+    public long getSaveTime(String key) {
+        ACache aCache = ACache.get(SheepApp.getInstance());
+        return NumberFormatUtils.parseLong(aCache.getAsString(key + "saveTime"));
+    }
+    //设置无数据显示
+    public void updateEmptyView(View empty_view, boolean showEmpty) {
+        if(showEmpty) {
+            empty_view.setVisibility(View.VISIBLE);
+            ImageView img_list_empty = empty_view.findViewById(R.id.img_list_empty);
+            if (img_list_empty == null) {
+                if (BuildConfig.DEBUG) G.showToast("无数据layout中找不到ImageView");
+                return;
+            }
+            TextView txt_list_empty = empty_view.findViewById(R.id.txt_list_empty);
+            if (txt_list_empty == null) {
+                if (BuildConfig.DEBUG) G.showToast("无数据layout中找不到TextView");
+                return;
+            }
+            if (NetUtil.isConnected(SheepApp.getInstance())) {
+                img_list_empty.setImageResource(R.mipmap.wushuju);
+                txt_list_empty.setText(R.string.wushuju);
+            } else {
+                img_list_empty.setImageResource(R.mipmap.wushuju_net_error);
+                txt_list_empty.setText(R.string.wushuju_net_error);
+            }
+        } else {
+            empty_view.setVisibility(View.GONE);
+        }
+    }
+
+    /**
+     * 幂动科技
+     *  appId为应用id,开发者可联系后台获取
+     *  id 用户uid
+     */
+    public void initMiDong(Activity activity, String id){
+        if(!SheepApp.getInstance().isInitMidong() && !TextUtils.isEmpty(id)){
+            SheepApp.getInstance().setInitMidong(true);
+            AdManager.getInstance(activity).init(activity, "40",id+"");
+        }
+    }
 }

+ 63 - 0
app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java

@@ -1,10 +1,13 @@
 package com.sheep.gamegroup.util;
 
+import android.graphics.Color;
+import android.text.TextUtils;
 import android.widget.ImageView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestOptions;
+import com.sheep.gamegroup.util.glide.GlideCircleTransformWithBorder;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
@@ -12,6 +15,8 @@ import com.zhy.http.okhttp.OkHttpUtils;
 import com.zhy.http.okhttp.callback.FileCallBack;
 
 import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
 
 import okhttp3.Call;
 import rx.functions.Action1;
@@ -70,6 +75,18 @@ public class GlideImageLoader {
                 .apply(new RequestOptions().transform(new RoundedCorners(radius)).placeholder(R.drawable.loading_01))
                 .into(imageView);
     }
+    public static void setGameImage(ImageView imageView, String url) {
+        Glide.with(SheepApp.getInstance())
+                .load(url)
+                .apply(new RequestOptions().centerCrop().transform(new RoundedCorners(imageView.getResources().getDimensionPixelSize(R.dimen.content_padding_10))).placeholder(R.drawable.loading_01))
+                .into(imageView);
+    }
+    public static void setGameImage(ImageView imageView, String url, int radius) {
+        Glide.with(SheepApp.getInstance())
+                .load(url)
+                .apply(new RequestOptions().centerCrop().transform(new RoundedCorners(radius)).placeholder(R.drawable.loading_01))
+                .into(imageView);
+    }
 
     public static void downLoadImage(String name, String link, final Action1<File> action1) {
         String fileName = name + ".png";
@@ -97,4 +114,50 @@ public class GlideImageLoader {
             }
         });
     }
+
+    /**
+     * 设置头像
+     * @param iconImgIv
+     * @param avatar
+     */
+    public static void setAvatar(ImageView iconImgIv, String avatar) {
+        if(TextUtils.isEmpty(avatar)){
+            Glide.with(SheepApp.getInstance())
+                    .load(R.drawable.avatar)
+                    .apply(new RequestOptions().circleCrop())
+                    .into(iconImgIv);
+        } else {
+            Glide.with(SheepApp.getInstance())
+                    .load(avatar)
+                    .apply(new RequestOptions().placeholder(R.drawable.avatar))
+                    .into(iconImgIv);
+        }
+    }
+    /**
+     * 设置头像有外面的圆环
+     * @param iconImgIv
+     * @param avatar
+     */
+    public static void setAvatar(ImageView iconImgIv, String avatar, int color) {
+        Object tag = iconImgIv.getTag(R.drawable.avatar);
+        if(TextUtils.isEmpty(avatar)){
+            if(tag instanceof String && tag.toString().isEmpty()){//防止重复加载
+                return;
+            }
+            iconImgIv.setTag(R.drawable.avatar, "");
+            Glide.with(SheepApp.getInstance())
+                    .load(R.drawable.avatar)
+                    .apply(new RequestOptions().override(iconImgIv.getMeasuredWidth()).transform(new GlideCircleTransformWithBorder(color)))
+                    .into(iconImgIv);
+        } else {
+            if(tag instanceof String && tag.toString().equals(avatar)){//防止重复加载
+                return;
+            }
+            iconImgIv.setTag(R.drawable.avatar, avatar);
+            Glide.with(SheepApp.getInstance())
+                    .load(avatar)
+                    .apply(new RequestOptions().transform(new GlideCircleTransformWithBorder(color)).placeholder(R.drawable.avatar))
+                    .into(iconImgIv);
+        }
+    }
 }

+ 0 - 325
app/src/main/java/com/sheep/gamegroup/util/ImageGlarryDrawable.java

@@ -1,325 +0,0 @@
-package com.sheep.gamegroup.util;
-
-import android.app.Activity;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RadioButton;
-import android.widget.RadioGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.RequestOptions;
-import com.sheep.gamegroup.model.entity.SlideshowEty;
-import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.utils.G;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by ljy on 2018/4/2.
- */
-
-public class ImageGlarryDrawable<T> {
-    private Activity mActivity;
-    private ViewPager mViewPager;
-    private RadioGroup mRadioGroup;
-    private List<T> mList = new ArrayList<>();
-    private int mIntDelayTime = 4000;
-    private List<RelativeLayout> mListImages = new ArrayList<>();
-    private View mLastSelect;
-    private boolean mIsMoved = false;
-    private boolean isSetBackGround = true;//是否设置背景
-
-    public ImageGlarryDrawable(Activity activity, ViewPager viewPager, RadioGroup radioGroup) {
-        mActivity = activity;
-        mViewPager = viewPager;
-        mRadioGroup = radioGroup;
-    }
-
-
-    public void setmIntDelayTime(int mIntDelayTime) {
-        this.mIntDelayTime = mIntDelayTime;
-    }
-
-    public ImageGlarryDrawable init(List<T> pics, Conversion2<T,String,String> conversion2) {
-        return init(pics, ImageView.ScaleType.CENTER_INSIDE,conversion2);
-    }
-
-    /**
-     * 初始化组件
-     *
-     * @param pics 图片Url完整地址。
-     */
-    public ImageGlarryDrawable init(List<T> pics, ImageView.ScaleType scaleType, Conversion2<T,String,String> conversion2) {
-        int pos = 0;
-        mList.clear();
-        mListImages.clear();
-        mLastSelect = null;
-        mRadioGroup.removeAllViews();
-        //防止loading图案被放得很大很大
-        for (T pic : pics) {
-            mList.add(pic);
-            String title = conversion2.convert1(pic,pos);
-            title = title == null ? "" : title;
-            String url = conversion2.convert2(pic,pos);
-            RelativeLayout relativeLayout = new RelativeLayout(mActivity);
-            relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT , RelativeLayout.LayoutParams.WRAP_CONTENT));
-            TextView textView = new TextView(mActivity);
-
-            RelativeLayout.LayoutParams textViewLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
-            textViewLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
-            textView.setLayoutParams(textViewLayoutParams);
-            textView.setText(title);
-            textView.setTextColor(mActivity.getResources().getColor(R.color.white));
-            textView.setGravity(Gravity.START|Gravity.CENTER_VERTICAL);
-            textView.setLines(1);
-            textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
-            textView.setPadding(8, 3, 3, 3);
-            if(isSetBackGround) {
-                textView.setBackgroundColor(mActivity.getResources().getColor(R.color.dark));
-                textView.setBackground(mActivity.getResources().getDrawable(R.drawable.sp_bg_gradient_retangle_transe));
-                textView.getBackground().mutate().setAlpha(100);
-            }
-
-
-            ImageView imageView = new ImageView(mActivity);
-            imageView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT , RelativeLayout.LayoutParams.MATCH_PARENT));
-            imageView.setOnClickListener(new ImageGlarryDrawable.cls_main(pos));
-            imageView.setScaleType(scaleType);
-            imageViewLoader.loadImageView(imageView, url);
-
-            relativeLayout.addView(imageView);
-            if(!TextUtils.isEmpty(title)){
-                relativeLayout.addView(textView);
-            }
-
-            mListImages.add(relativeLayout);
-
-
-            RadioButton radioButton = (RadioButton) View.inflate(mActivity, R.layout.rbt_dot, null);
-            mRadioGroup.addView(radioButton);
-            LinearLayout.LayoutParams layoutParams = new LinearLayout
-                    .LayoutParams(G.getRealPix(5
-            ), G.getRealPix(5));
-            layoutParams.setMargins(G.getRealPix(2), 0, G.getRealPix(2), 0);
-            radioButton.setLayoutParams(layoutParams);
-//            radioButton.setButtonDrawable(null);
-//            radioButton.setBackgroundResource(R.drawable.sel_circle_dot);
-
-            if (pos == 0) {
-                selectPosition(0);
-            }
-            pos = pos + 1;
-        }
-
-        if (mList.size() > 1) {//有两张或以上图片,开始轮播
-            mRadioGroup.setVisibility(View.VISIBLE);
-            if (!mIsMoved) {
-                mIsMoved = true;
-                handler.removeMessages(1);
-                handler.sendEmptyMessageDelayed(1, mIntDelayTime);
-            }
-            //handler.sendEmptyMessageDelayed(1, mIntDelayTime);
-        } else if (mList.size() == 1) {//如果只有一个或没有,就隐藏Group
-            mRadioGroup.setVisibility(View.GONE);
-        } else {//说明是空的。
-            if(isSetBackGround) {
-                mViewPager.setBackgroundColor(mActivity.getResources().getColor(R.color.white));
-            }
-            return this;
-        }
-        mViewPager.setAdapter(pagerAdapter);
-        pagerAdapter.notifyDataSetChanged();
-        mViewPager.setCurrentItem(0);
-        mViewPager.addOnPageChangeListener(onPageChangeListener);
-        mViewPager.setOnTouchListener(onTouchListener);
-        return this;
-    }
-
-    /**
-     * 设置当前选中项
-     *
-     * @param position
-     */
-    private void selectPosition(int position) {
-        mLastSelect = mRadioGroup.getChildAt(position);
-        mRadioGroup.check(mLastSelect.getId());
-        LinearLayout.LayoutParams layoutParams = new LinearLayout
-                .LayoutParams(G.getRealPix(10
-        ), G.getRealPix(5));
-        layoutParams.setMargins(G.getRealPix(2), 0, G.getRealPix(2), 0);
-        mRadioGroup.getChildAt(position).setLayoutParams(layoutParams);
-    }
-
-    private Handler handler = new Handler(Looper.getMainLooper()) {
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            switch (msg.what){
-                case 1:
-                    if (mActivity.isFinishing() || ListUtil.size(mList) < 2) {
-                        return;
-                    }
-                    int lastIndex = (mViewPager.getCurrentItem() + 1) % ListUtil.size(mList);
-                    try {
-                        mViewPager.setCurrentItem(lastIndex, true);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    pagerAdapter.notifyDataSetChanged();
-                    handler.removeMessages(1);
-                    sendEmptyMessageDelayed(1, mIntDelayTime);
-                    break;
-            }
-
-        }
-    };
-
-    /**
-     * 选取
-     */
-    private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
-        @Override
-        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
-        }
-
-        /**
-         * 改变dot的宽度等操作
-         * @param position
-         */
-        @Override
-        public void onPageSelected(int position) {
-            if (mLastSelect != null) {
-                LinearLayout.LayoutParams layoutParams = new LinearLayout
-                        .LayoutParams(G.getRealPix(5
-                ), G.getRealPix(5));
-                layoutParams.setMargins(G.getRealPix(2), 0, G.getRealPix(2), 0);
-                mLastSelect.setLayoutParams(layoutParams);
-            }
-            selectPosition(position);
-        }
-
-        @Override
-        public void onPageScrollStateChanged(int state) {
-
-        }
-    };
-
-    /**
-     * touch
-     */
-    private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
-        @Override
-        public boolean onTouch(View v, MotionEvent event) {
-            switch (event.getAction()){
-                case MotionEvent.ACTION_DOWN:
-                    if(handler != null){
-                        handler.removeMessages(1);
-                    }
-
-                    break;
-                case MotionEvent.ACTION_CANCEL:
-                case MotionEvent.ACTION_MOVE:
-                    if (mList.size() > 1) {//有两张或以上图片,开始轮播
-                        mIsMoved = false;
-                        mIsMoved = true;
-                        handler.removeMessages(1);
-                        handler.sendEmptyMessageDelayed(1, mIntDelayTime);
-                    }
-                    break;
-            }
-            return false;
-        }
-    };
-
-
-    /**
-     * ViewPager
-     */
-    private PagerAdapter pagerAdapter = new PagerAdapter() {
-        @Override
-        public int getCount() {
-            return mList.size();
-        }
-
-        @Override
-        public boolean isViewFromObject(View view, Object object) {
-            return view.equals(object);
-        }
-
-        @Override
-        public void destroyItem(ViewGroup container, int position, Object object) {
-            container.removeView(mListImages.get(position));
-        }
-
-        @Override
-        public Object instantiateItem(ViewGroup container, int position) {
-            container.addView(mListImages.get(position));
-            return mListImages.get(position);
-        }
-    };
-
-
-    private AdapterView.OnItemClickListener onItemClickListener;
-
-    /**
-     * 设置点击回调,回调仅回传View和position
-     *
-     * @param onItemClickListener
-     */
-    public void setOnItemClickListener(AdapterView.OnItemClickListener onItemClickListener) {
-        this.onItemClickListener = onItemClickListener;
-    }
-
-    private class cls_main implements View.OnClickListener {
-        private int position;
-
-        public cls_main(int pos) {
-            position = pos;
-        }
-
-        @Override
-        public void onClick(View v) {
-            if (onItemClickListener != null) {
-                onItemClickListener.onItemClick(null, v, position, 0);
-            }
-        }
-    }
-    public void notifyDataSetChanged() {
-        if(pagerAdapter != null)
-            pagerAdapter.notifyDataSetChanged();
-    }
-
-    private ImageViewLoader imageViewLoader = new ImageViewLoader() {
-
-        @Override
-        public void loadImageView(ImageView imageView, String url) {
-            Glide.with(imageView.getContext()).load(url).apply(new RequestOptions().dontAnimate()).into(imageView);
-        }
-    };
-
-    public void setImageViewLoader(ImageViewLoader imageViewLoader) {
-        this.imageViewLoader = imageViewLoader;
-    }
-    public interface ImageViewLoader{
-        void loadImageView(ImageView imageView, String url);
-    }
-
-    public void setSetBackGround(boolean setBackGround) {
-        isSetBackGround = setBackGround;
-    }
-}

+ 37 - 19
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -36,7 +36,6 @@ import com.sheep.gamegroup.model.entity.VersionInfo;
 import com.sheep.gamegroup.model.entity.WebviewEntity;
 import com.sheep.gamegroup.model.entity.XianWanEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
-import com.sheep.gamegroup.view.activity.AccountAndSecurityAct;
 import com.sheep.gamegroup.view.activity.ActCreditCardTaskList;
 import com.sheep.gamegroup.view.activity.ActCreditCardWeb;
 import com.sheep.gamegroup.view.activity.ActFindGame;
@@ -48,12 +47,14 @@ import com.sheep.gamegroup.view.activity.ActGuideDeblocked;
 import com.sheep.gamegroup.view.activity.ActGuideOnHook;
 import com.sheep.gamegroup.view.activity.ActLoadH5;
 import com.sheep.gamegroup.view.activity.ActMainGame;
+import com.sheep.gamegroup.view.activity.ActMiDong;
 import com.sheep.gamegroup.view.activity.ActMyMoney;
 import com.sheep.gamegroup.view.activity.ActNewAboutUs;
 import com.sheep.gamegroup.view.activity.ActNewbieTaskList;
 import com.sheep.gamegroup.view.activity.ActNotice;
 import com.sheep.gamegroup.view.activity.ActReservation;
 import com.sheep.gamegroup.view.activity.ActSearchGame;
+import com.sheep.gamegroup.view.activity.ActSetting;
 import com.sheep.gamegroup.view.activity.ActUnderstandSheep;
 import com.sheep.gamegroup.view.activity.ActUserLabelList;
 import com.sheep.gamegroup.view.activity.ActWeb;
@@ -71,7 +72,7 @@ import com.sheep.gamegroup.view.activity.GameTaskOrderListAct;
 import com.sheep.gamegroup.view.activity.GamemakeMoneyAct;
 import com.sheep.gamegroup.view.activity.LieMakeMoneyAct;
 import com.sheep.gamegroup.view.activity.LoginAct;
-import com.sheep.gamegroup.view.activity.PersionInfoAct;
+import com.sheep.gamegroup.view.activity.PersonalInfoAct;
 import com.sheep.gamegroup.view.activity.PersonalCenterAct;
 import com.sheep.gamegroup.view.activity.PhoneAct;
 import com.sheep.gamegroup.view.activity.RealNameAuthenAct;
@@ -113,11 +114,12 @@ import rx.functions.Action1;
 import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.GAME_INSTEAD_OF_RECHARGE;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.MI_DONG_VIEW;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.RECHARGE;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.RECHARGE_QQ;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.SEARCH_GAME;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.SETTING;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_ABOUT_US;
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_ACCOUNT_SAFE;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_FEEDBACK;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_FIND_APP_ORDER;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_GAME_ACCOUNT;
@@ -182,16 +184,16 @@ public class Jump2View {
     }
 
 
-    /**
-     * 跳到安全中心
-     * @param context
-     * @param o
-     */
-    public void goAccountAndSecurit(Context context, Object o){
-        Intent intent = new Intent(context, AccountAndSecurityAct.class);
-        context.startActivity(intent);
-        USER_ACCOUNT_SAFE.onEvent();
-    }
+//    /**
+//     * 跳到安全中心
+//     * @param context
+//     * @param o
+//     */
+//    public void goAccountAndSecurit(Context context, Object o){
+//        Intent intent = new Intent(context, AccountAndSecurityAct.class);
+//        context.startActivity(intent);
+//        USER_ACCOUNT_SAFE.onEvent();
+//    }
 
     /**
      * 跳到登录页面
@@ -230,6 +232,8 @@ public class Jump2View {
             intent.putExtra(ActMain.INTENT_GAME_ID, (Integer) o);
             context.startActivity(intent);
         } else if(o instanceof String){
+            //统计用户登录信息
+            UMConfigUtils.onProfileSignIn();
             //从登录界面过来//新注册用户才添加到数据库,并设置可以显示
             NewbieTaskRecord newbie_task_record = new NewbieTaskRecord();
             newbie_task_record.setUser_id((String)o);
@@ -293,7 +297,7 @@ public class Jump2View {
                             }
 
                             if(userEntity != null && userEntity.canBindMobile()
-                                    //&& !BuildConfig.DEBUG
+                                    && !BuildConfig.DEBUG
                                     ){//老用户没有绑定手机号
                                 Jump2View.getInstance().goBindPhone(activity, 1);
                                 return;
@@ -651,7 +655,7 @@ public class Jump2View {
      * @param o
      */
     public void goPersionInfo(Context context, UserEntity o){
-        Intent i = new Intent(context, PersionInfoAct.class);
+        Intent i = new Intent(context, PersonalInfoAct.class);
         i.putExtra("info", o);
         context.startActivity(i);
         USER_INFO.onEvent();
@@ -827,9 +831,6 @@ public class Jump2View {
      * @param title
      */
     public void goWeb(Context context, String url, String title){
-        goCardWeb(context, url, title, null);
-    }
-    public void goCardWeb(Context context, String url, String title, String id){
         if(TextUtils.isEmpty(url)){
             G.showToast(R.string.service_data_error);
             return;
@@ -1208,7 +1209,7 @@ public class Jump2View {
                 .subscribe(new SheepSubscriber<BaseMessage>(activity) {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        if(baseMessage.getData() instanceof Integer){
+                        if(baseMessage.getData() instanceof Integer && !BuildConfig.DEBUG){
                             if((int)baseMessage.getData() > 0){//该提示在弹窗广告后显示,且必须有可下载的游戏,弹出弹窗
                                 ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("预约下载提示")
                                         .setMsg("你有可下载的预约游戏请及时下载,不要错过优先时机哦。").setMsgGravity(Gravity.START)
@@ -1421,4 +1422,21 @@ public class Jump2View {
         activity.startActivity(intent);
         SEARCH_GAME.onEvent();
     }
+    /**
+     * 设置界面
+     */
+    public void goSetting(Activity activity, Object o){
+        Intent intent = new Intent(activity, ActSetting.class);
+        activity.startActivity(intent);
+        SETTING.onEvent();
+    }
+
+    /**
+     * 幂动科技
+     */
+    public void goMiDong(Activity activity, Object o){
+        Intent intent = new Intent(activity, ActMiDong.class);
+        activity.startActivity(intent);
+        MI_DONG_VIEW.onEvent();
+    }
 }

+ 18 - 0
app/src/main/java/com/sheep/gamegroup/util/ListUtil.java

@@ -1,6 +1,8 @@
 package com.sheep.gamegroup.util;
 
 
+import com.sheep.gamegroup.model.entity.FindTag;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -86,4 +88,20 @@ public class ListUtil {
         Collections.addAll(list, items);
         return list;
     }
+
+    public static <T> void removeItem(List<T> list, CallBack<T, Boolean> callBack) {
+        if(isEmpty(list)){
+            return;
+        }
+        List<T> removeList = emptyList();
+        for (T t : list) {
+            if(callBack.call(t))
+                removeList.add(t);
+        }
+        list.removeAll(removeList);
+    }
+
+    public static interface CallBack<I, R>{
+        public R call(I i);
+    }
 }

+ 17 - 211
app/src/main/java/com/sheep/gamegroup/util/LocationUtils.java

@@ -1,17 +1,10 @@
 package com.sheep.gamegroup.util;
 
-import android.Manifest;
 import android.content.Context;
-import android.content.pm.PackageManager;
-import android.location.Criteria;
 import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.text.TextUtils;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baidu.location.BDLocation;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
 /**
@@ -20,10 +13,6 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 public class LocationUtils {
 
-    private static final long REFRESH_TIME = 5000L;
-    private static final float METER_POSITION = 0.0f;
-    private static ILocationListener mLocationListener;
-    String logitudeLStr;
     private static LocationUtils locationUtils;
 
     public static LocationUtils getInstance(){
@@ -32,212 +21,29 @@ public class LocationUtils {
         }
         return locationUtils;
     }
-    private static LocationListener listener = new MyLocationListener();
-
-    private static class MyLocationListener implements LocationListener {
-        @Override
-        public void onLocationChanged(Location location) {//定位改变监听
-            if (mLocationListener != null) {
-                mLocationListener.onSuccessLocation(location);
-            }
-        }
-
-        @Override
-        public void onStatusChanged(String provider, int status, Bundle extras) {//定位状态监听
-
-        }
-
-        @Override
-        public void onProviderEnabled(String provider) {//定位状态可用监听
-
-        }
-
-        @Override
-        public void onProviderDisabled(String provider) {//定位状态不可用监听
-
-        }
-    }
-    /**
-     * GPS获取定位方式
-     */
-    public static Location getGPSLocation(@NonNull Context context) {
-        Location location = null;
-        LocationManager manager = getLocationManager(context);
-        //高版本的权限检查
-        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-            return null;
-        }
-        if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {//是否支持GPS定位
-            //获取最后的GPS定位信息,如果是第一次打开,一般会拿不到定位信息,一般可以请求监听,在有效的时间范围可以获取定位信息
-            location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
-        }
-        return location;
-    }
-    /**
-     * network获取定位方式
-     */
-    public static Location getNetWorkLocation(Context context) {
-        Location location = null;
-        LocationManager manager = getLocationManager(context);
-        //高版本的权限检查
-        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-            return null;
-        }
-        if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {//是否支持Network定位
-            //获取最后的network定位信息
-            location = manager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
-        }
-        return location;
-    }
-
-    /**
-     * 获取最好的定位方式
-     */
-    public static Location getBestLocation(Context context, Criteria criteria) {
-        Location location;
-        LocationManager manager = getLocationManager(context);
-        if (criteria == null) {
-            criteria = new Criteria();
-        }
-        String provider = manager.getBestProvider(criteria, true);
-        if (TextUtils.isEmpty(provider)) {
-            //如果找不到最适合的定位,使用network定位
-            location = getNetWorkLocation(context);
-        } else {
-            //高版本的权限检查
-            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
-                    && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-                return null;
-            }
-            //获取最适合的定位方式的最后的定位权限
-            location = manager.getLastKnownLocation(provider);
-        }
-        return location;
-    }
-
-    /**
-     * 定位监听
-     */
-    public static void addLocationListener(Context context, String provider, ILocationListener locationListener) {
-
-        addLocationListener(context, provider, REFRESH_TIME, METER_POSITION, locationListener);
-    }
-
-    /**
-     * 定位监听
-     */
-    public static void addLocationListener(Context context, String provider, long time, float meter, ILocationListener locationListener) {
-        if (locationListener != null) {
-            mLocationListener = locationListener;
-        }
-        if (listener == null) {
-            listener = new MyLocationListener();
-        }
-        LocationManager manager = getLocationManager(context);
-        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
-                && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-            return;
-        }
-        manager.requestLocationUpdates(provider, time, meter, listener);
-    }
-
-    /**
-     * 取消定位监听
-     */
-    public static void unRegisterListener(Context context) {
-        if (listener != null) {
-            LocationManager manager = getLocationManager(context);
-            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
-                    && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-                return;
-            }
-            //移除定位监听
-            manager.removeUpdates(listener);
-        }
-    }
-
-    private static LocationManager getLocationManager(@NonNull Context context) {
-        return (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
-    }
-
-    /**
-     * 自定义接口
-     */
-    public interface ILocationListener {
-        void onSuccessLocation(Location location);
-    }
-
 
     /**
      * Longitude:经度
      * Latitude:纬度
-     * 通过GPS获取定位信息
-     */
-    public String getGPSLocations(final Context context) {
-        logitudeLStr = null;
-        Location gps = getGPSLocation(SheepApp.mContext);
-        if (gps == null) {
-            //设置定位监听,因为GPS定位,第一次进来可能获取不到,通过设置监听,可以在有效的时间范围内获取定位信息
-            LocationUtils.addLocationListener(context, LocationManager.GPS_PROVIDER, new LocationUtils.ILocationListener() {
-                @Override
-                public void onSuccessLocation(Location location) {
-                    if (location != null) {
-                        logitudeLStr = location.getLongitude() + "," +location.getLatitude();
-//                        Toast.makeText(context, "gps onSuccessLocation location:  lat==" + location.getLatitude() + "     lng==" + location.getLongitude(), Toast.LENGTH_SHORT).show();
-                    } else {
-//                        Toast.makeText(context, "gps location is null", Toast.LENGTH_SHORT).show();
-                    }
-                }
-            });
-        } else {
-//            Toast.makeText(context, "gps location: lat==" + gps.getLatitude() + "  lng==" + gps.getLongitude(), Toast.LENGTH_SHORT).show();
-        }
-        return logitudeLStr;
-    }
-
-    /**
-     * 通过网络等获取定位信息
-     */
-    private String getNetworkLocations() {
-        logitudeLStr = null;
-        Location net = LocationUtils.getNetWorkLocation(SheepApp.mContext);
-        if (net == null) {
-        } else {
-            logitudeLStr = net.getLongitude() + "," +net.getLatitude();
-        }
-        return logitudeLStr;
-    }
-
-    /**
-     * 采用最好的方式获取定位信息
+     * 获取经纬度
      */
-    private String getBestLocations() {
-        logitudeLStr = null;
-        Criteria c = new Criteria();//Criteria类是设置定位的标准信息(系统会根据你的要求,匹配最适合你的定位供应商),一个定位的辅助信息的类
-        c.setPowerRequirement(Criteria.POWER_LOW);//设置低耗电
-        c.setAltitudeRequired(true);//设置需要海拔
-        c.setBearingAccuracy(Criteria.ACCURACY_COARSE);//设置COARSE精度标准
-        c.setAccuracy(Criteria.ACCURACY_LOW);//设置低精度
-        //... Criteria 还有其他属性,就不一一介绍了
-        Location best = LocationUtils.getBestLocation(SheepApp.mContext, c);
-        if (best == null) {
-
-        } else {
-            logitudeLStr = best.getLongitude() + "," +best.getLatitude();
-        }
-        return logitudeLStr;
+    public String getLongitudeLatitude(){
+        BDLocation location = SheepApp.getInstance().getCurLocation();
+        if(location == null)
+            return "";
+        return location.getLongitude() + "," +location.getLatitude();
     }
-
     /**
-     * Longitude:经度
-     * Latitude:纬度
-     * 获取经纬度
+     * 获取定位
      */
-    public String getLongitudeLatitude(Context context){
-        logitudeLStr = getGPSLocations(context);
-        if(TextUtils.isEmpty(logitudeLStr) || logitudeLStr.length() < 3){
-            logitudeLStr = getNetworkLocations();
+    public JSONObject getLocationJSONObject(){
+        BDLocation location = SheepApp.getInstance().getCurLocation();
+        JSONObject jsonObject = new JSONObject();
+        if(location != null) {
+            jsonObject.put("longitude", location.getLongitude());
+            jsonObject.put("latitude", location.getLatitude());
+            jsonObject.put("addrStr", location.getAddrStr());
         }
-        return logitudeLStr;
+        return jsonObject;
     }
 }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/util/MyDbManager.java

@@ -94,7 +94,7 @@ public class MyDbManager {
     public String dbFindId(){
         try {
             return dbFindUser().getId();
-        } catch (DbException e) {
+        } catch (Exception e) {
             e.printStackTrace();
         }
         return "";

+ 30 - 3
app/src/main/java/com/sheep/gamegroup/util/StringUtils.java

@@ -5,6 +5,12 @@ import android.content.ClipboardManager;
 import android.content.Context;
 import android.text.TextUtils;
 
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -20,11 +26,10 @@ import java.util.regex.Pattern;
 public class StringUtils {
     /**
      * 拷贝文字到粘贴板
-     * @param context
      * @param text
      */
-    public static boolean  CopyText(Context context,String  text){
-        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
+    public static boolean  CopyText(String  text){
+        ClipboardManager clipboardManager = (ClipboardManager) SheepApp.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
         if (clipboardManager != null && !TextUtils.isEmpty(text)) {
             //创建ClipData对象
             ClipData clipData = ClipData.newPlainText("sheep text copy", text);
@@ -258,4 +263,26 @@ public class StringUtils {
         return matcher.matches();
     }
 
+    /**
+     * 格式化json
+     * @param msg
+     * @return
+     */
+    public static String parseJson(String msg){
+        String message;
+        try {
+            if (msg.startsWith("{")) {
+                JSONObject jsonObject = new JSONObject(msg);
+                message = jsonObject.toString(4);//最重要的方法,就一行,返回格式化的json字符串,其中的数字4是缩进字符数
+            } else if (msg.startsWith("[")) {
+                JSONArray jsonArray = new JSONArray(msg);
+                message = jsonArray.toString(4);
+            } else {
+                message = msg;
+            }
+        } catch (JSONException e) {
+            message = msg;
+        }
+        return message;
+    }
 }

+ 169 - 121
app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java

@@ -39,12 +39,16 @@ import com.tencent.bugly.beta.UpgradeInfo;
 import com.zhy.http.okhttp.OkHttpUtils;
 import com.zhy.http.okhttp.callback.FileCallBack;
 
+import org.afinal.simplecache.ACache;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
@@ -263,7 +267,7 @@ public class SysAppUtil {
         //首先获取到包的管理者
         PackageManager packageManager = SheepApp.getInstance().getPackageManager();
         //获取到所有的安装包
-        List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
+        List<PackageInfo> installedPackages = packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES | PackageManager.GET_SIGNATURES);
         ArrayList<AppInfo> appInfos = new ArrayList<>();
         for (PackageInfo installedPackage : installedPackages) {
             AppInfo appInfo = new AppInfo();
@@ -284,6 +288,7 @@ public class SysAppUtil {
             long apkSize = file.length();
             //格式化apk的大小
             appInfo.setApkSize(Formatter.formatFileSize(SheepApp.getInstance(),apkSize));
+            appInfo.setSha1(getSHA1(installedPackage));
 
             int flags = installedPackage.applicationInfo.flags;
             //判断当前是否是系统app
@@ -307,6 +312,27 @@ public class SysAppUtil {
         }
         return appInfos;
     }
+    public static String getSHA1(PackageInfo packageInfo) {
+        try {
+            byte[] cert = packageInfo.signatures[0].toByteArray();
+            MessageDigest md = MessageDigest.getInstance("SHA1");
+            byte[] publicKey = md.digest(cert);
+            StringBuilder hexString = new StringBuilder();
+            for (int i = 0; i < publicKey.length; i++) {
+                String appendString = Integer.toHexString(0xFF & publicKey[i])
+                        .toUpperCase(Locale.US);
+                if (appendString.length() == 1)
+                    hexString.append("0");
+                hexString.append(appendString);
+                hexString.append(":");
+            }
+            String result = hexString.toString();
+            return result.substring(0, result.length()-1);
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
 
     //运行命令行的方法
     public static void execShell(String cmd) {
@@ -380,9 +406,6 @@ public class SysAppUtil {
      * @param action1 动作完成后的回调
      */
     public static void showVersionInfo(final Activity activity, final String ignoreMd5, final Action1<Integer> action1) {
-        if(checkBuglyUpdate()){
-            return;
-        }
         if(dialog != null){
             try {
                 if(dialog.isShowing()) {
@@ -392,129 +415,28 @@ public class SysAppUtil {
                 e.printStackTrace();
             }
         }
+        Version buglyVersion;
+        if((buglyVersion = checkBuglyUpdate()) != null){
+            ACache.get(SheepApp.getInstance()).put("version_url", buglyVersion.getAddress());
+            if(action1 != null)
+                action1.call(0);
+            Beta.checkUpgrade();
+//            loadVersion(activity, ignoreMd5, action1, buglyVersion);
+            return;
+        }
         SheepApp.getInstance().getNetComponent().getApiService().getNewVersion(SheepApp.getInstance().getConnectAddress().getVersionType())
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        final Version version = baseMessage.getData(Version.class);
-                        if(version == null){
-                            if(ignoreMd5 == null)
-                                G.showToast(baseMessage);
-                            if(action1 != null)
-                                action1.call(0);
-                            return;
-                        }
-                        boolean isNewApp;
-                        if(TestUtil.isSheep()) {
-                            if(ignoreMd5 != null && TextUtils.equals(ignoreMd5, version.getVersion_number()+"") && !version.isForceUpdate()){
-                                LogUtil.println("showVersionInfo", "忽略", ignoreMd5, version.getVersion_name());
-                                if(action1 != null)
-                                    action1.call(0);
-                                return;
-                            }
-                            int versionCode = SysAppUtil.getAppVersionCode();
-                            if (versionCode == 0) {
-                                if (ignoreMd5 == null)
-                                    G.showToast(baseMessage);
-                                if (action1 != null)
-                                    action1.call(0);
-                                return;
-                            }
-                            isNewApp = versionCode >= version.getVersion_number();
-                        } else {
-                            if(ignoreMd5 != null && TextUtils.equals(ignoreMd5, version.getMd5_address()) && !version.isForceUpdate()){
-                                LogUtil.println("showVersionInfo", "忽略", ignoreMd5, version.getVersion_name());
-                                if(action1 != null)
-                                    action1.call(0);
-                                return;
-                            }
-                            String fileMD5 = SysAppUtil.getConnectAdrressFileMD5();
-                            if (TextUtils.isEmpty(fileMD5)) {
-                                if (ignoreMd5 == null)
-                                    G.showToast(baseMessage);
-                                if (action1 != null)
-                                    action1.call(0);
-                                return;
-                            }
-                            isNewApp = fileMD5.equalsIgnoreCase(version.getMd5_address());
-                        }
-                        if(isNewApp){//已经是最新版本
-                            if(ignoreMd5 == null)
-                                G.showToast("当前版本为最新版本,无需更新");
-                            if(action1 != null)
-                                action1.call(0);
-                        } else {//有新版本
-                            final String fileName = version.getMd5_address()+".apk";
-                            final File file = new File(ClassFileHelper.DIR, fileName);
-                            DialogConfig dialogConfig = new DialogConfig();
-                            dialogConfig.setTitle("小绵羊V"+version.getVersion_name());
-                            dialogConfig.setMsg(TextUtils.isEmpty(version.getUpdate_content()) ? "当前版本小绵羊V"+getConnectAdrressPackageInfo().versionName : version.getUpdate_content()).setLayoutId(R.layout.x_msg_wv_dialog)
-                                    .setBtnLeftText(file.exists() ? "立即安装" : "立即更新").setBtnLeftNotDissDialog(true).setBtnLeftOnClickListener(new View.OnClickListener() {
-                                private void installApk(File file){
-                                    if(file != null && file.exists()) {
-                                        ApkUtils.installApk(SheepApp.getInstance(), file.getAbsolutePath());
-                                    }
-                                }
-                                @Override
-                                public void onClick(final View view) {
-                                    if(view instanceof TextView)
-                                        UPGRADE_DIALOG_BT.onEvent("action", ((TextView) view).getText());
-                                    if(file.exists()){//直接安装
-                                        installApk(file);
-                                    } else if(TextUtils.isEmpty(version.getAddress())){//地址错误
-                                        G.showToast(R.string.error_download_link);
-                                    } else {//下载安装
-                                        OkHttpUtils.get().url(version.getAddress()).build().execute(new FileCallBack(ClassFileHelper.DIR, fileName) {
-                                            @Override
-                                            public void inProgress(float progress, long total, int id) {
-                                                if(view instanceof TextView) {
-                                                    TextView btnLeftTextView = (TextView) view;
-                                                    btnLeftTextView.setEnabled(false);
-                                                    btnLeftTextView.setText(String.format(Locale.CHINA, "%d%%", Math.round(progress * 100)));
-                                                }
-                                            }
-                                            @Override
-                                            public void onError(Call call, Exception e, int id) {
-                                                if(view instanceof TextView) {
-                                                    TextView btnLeftTextView = (TextView) view;
-                                                    btnLeftTextView.setEnabled(true);
-                                                    btnLeftTextView.setText("重新下载");
-                                                }
-                                            }
-
-                                            @Override
-                                            public void onResponse(File response, int id) {
-                                                if(view instanceof TextView && response != null && response.exists()) {
-                                                    TextView btnLeftTextView = (TextView) view;
-                                                    btnLeftTextView.setEnabled(true);
-                                                    btnLeftTextView.setText("立即安装");
-                                                }
-                                                installApk(file);
-                                            }
-                                        });
-                                    }
-                                }
-                            });
-                            if(version.isForceUpdate()){//强更
-                                dialogConfig.setCancelable(false);
-                            } else {
-                                dialogConfig.setBtnRightText("下次更新").setBtnRightOnClickListener(new View.OnClickListener() {
-                                    @Override
-                                    public void onClick(View view) {
-                                        SpUtils.saveIgnoreMd5(TestUtil.isSheep() ? version.getVersion_number()+"" : version.getMd5_address());
-                                        if(view instanceof TextView)
-                                            UPGRADE_DIALOG_BT.onEvent("action", ((TextView) view).getText());
-                                    }
-                                });
-                            }
-                            dialog = ViewUtil.showMsgDialog(activity, dialogConfig);
-                        }
+                        Version version = baseMessage.getData(Version.class);
+                        loadVersion(activity, ignoreMd5, action1, version);
                     }
 
                     @Override
                     public void onError(BaseMessage baseMessage) {
+                        ACache.get(SheepApp.getInstance()).put("version_url", "");
                         if(ignoreMd5 == null)
                             G.showToast("当前版本为最新版本,无需更新");
                         if(action1 != null)
@@ -523,6 +445,123 @@ public class SysAppUtil {
                 });
     }
 
+    private static void loadVersion(final Activity activity, final String ignoreMd5, final Action1<Integer> action1, final Version version) {
+        if(version == null){
+            if(ignoreMd5 == null)
+                G.showToast("当前版本为最新版本,无需更新");
+            if(action1 != null)
+                action1.call(0);
+            return;
+        }
+        boolean isNewApp;
+        if(TestUtil.isSheep()) {
+            if(ignoreMd5 != null && TextUtils.equals(ignoreMd5, version.getVersion_number()+"") && !version.isForceUpdate()){
+                LogUtil.println("showVersionInfo", "忽略", ignoreMd5, version.getVersion_name());
+                if(action1 != null)
+                    action1.call(0);
+                return;
+            }
+            int versionCode = SysAppUtil.getAppVersionCode();
+            if (versionCode == 0) {
+                if (ignoreMd5 == null)
+                    G.showToast("请稍候重试");//无法获取当前版本号,程序出错
+                if (action1 != null)
+                    action1.call(0);
+                return;
+            }
+            isNewApp = versionCode >= version.getVersion_number();
+        } else {
+            if(ignoreMd5 != null && TextUtils.equals(ignoreMd5, version.getMd5_address()) && !version.isForceUpdate()){
+                LogUtil.println("showVersionInfo", "忽略", ignoreMd5, version.getVersion_name());
+                if(action1 != null)
+                    action1.call(0);
+                return;
+            }
+            String fileMD5 = SysAppUtil.getConnectAdrressFileMD5();
+            if (TextUtils.isEmpty(fileMD5)) {//无法获取当前appMd5值,程序出错
+                if (ignoreMd5 == null)
+                    G.showToast("请稍候重试");
+                if (action1 != null)
+                    action1.call(0);
+                return;
+            }
+            isNewApp = fileMD5.equalsIgnoreCase(version.getMd5_address());
+        }
+        if(isNewApp){//已经是最新版本
+            ACache.get(SheepApp.getInstance()).put("version_url", "");
+            if(ignoreMd5 == null)
+                G.showToast("当前版本为最新版本,无需更新");
+            if(action1 != null)
+                action1.call(0);
+        } else {//有新版本
+            ACache.get(SheepApp.getInstance()).put("version_url", version.getAddress());
+            final String fileName = version.getMd5_address()+".apk";
+            final File file = new File(ClassFileHelper.DIR, fileName);
+            DialogConfig dialogConfig = new DialogConfig();
+            dialogConfig.setTitle("小绵羊V"+version.getVersion_name());
+            dialogConfig.setMsg(TextUtils.isEmpty(version.getUpdate_content()) ? "当前版本小绵羊V"+getConnectAdrressPackageInfo().versionName : version.getUpdate_content()).setLayoutId(R.layout.x_msg_wv_dialog)
+                    .setBtnLeftText(file.exists() ? "立即安装" : "立即更新").setBtnLeftNotDissDialog(true).setBtnLeftOnClickListener(new View.OnClickListener() {
+                private void installApk(File file){
+                    if(file != null && file.exists()) {
+                        ApkUtils.installApk(SheepApp.getInstance(), file.getAbsolutePath());
+                    }
+                }
+                @Override
+                public void onClick(final View view) {
+                    if(view instanceof TextView)
+                        UPGRADE_DIALOG_BT.onEvent("action", ((TextView) view).getText());
+                    if(file.exists()){//直接安装
+                        installApk(file);
+                    } else if(TextUtils.isEmpty(version.getAddress())){//地址错误
+                        G.showToast(R.string.error_download_link);
+                    } else {//下载安装
+                        OkHttpUtils.get().url(version.getAddress()).build().execute(new FileCallBack(ClassFileHelper.DIR, fileName) {
+                            @Override
+                            public void inProgress(float progress, long total, int id) {
+                                if(view instanceof TextView) {
+                                    TextView btnLeftTextView = (TextView) view;
+                                    btnLeftTextView.setEnabled(false);
+                                    btnLeftTextView.setText(String.format(Locale.CHINA, "%d%%", Math.round(progress * 100)));
+                                }
+                            }
+                            @Override
+                            public void onError(Call call, Exception e, int id) {
+                                if(view instanceof TextView) {
+                                    TextView btnLeftTextView = (TextView) view;
+                                    btnLeftTextView.setEnabled(true);
+                                    btnLeftTextView.setText("重新下载");
+                                }
+                            }
+
+                            @Override
+                            public void onResponse(File response, int id) {
+                                if(view instanceof TextView && response != null && response.exists()) {
+                                    TextView btnLeftTextView = (TextView) view;
+                                    btnLeftTextView.setEnabled(true);
+                                    btnLeftTextView.setText("立即安装");
+                                }
+                                installApk(file);
+                            }
+                        });
+                    }
+                }
+            });
+            if(version.isForceUpdate()){//强更
+                dialogConfig.setCancelable(false);
+            } else {
+                dialogConfig.setBtnRightText("下次更新").setBtnRightOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        SpUtils.saveIgnoreMd5(TestUtil.isSheep() ? version.getVersion_number()+"" : version.getMd5_address());
+                        if(view instanceof TextView)
+                            UPGRADE_DIALOG_BT.onEvent("action", ((TextView) view).getText());
+                    }
+                });
+            }
+            dialog = ViewUtil.showMsgDialog(activity, dialogConfig);
+        }
+    }
+
     private static PackageInfo getConnectAdrressPackageInfo() {
         return ApkUtils.getPackageInfo(SheepApp.getInstance().getConnectAddress().getPackageName());
     }
@@ -549,11 +588,20 @@ public class SysAppUtil {
     /**
      * bugly 检查更新
      */
-    public static  boolean checkBuglyUpdate(){
+    public static Version checkBuglyUpdate(){
 //        Beta.checkUpgrade();
         UpgradeInfo upgradeInfo = Beta.getUpgradeInfo();
-        if(upgradeInfo != null)
-            return true;
-        return false;
+        if(upgradeInfo != null) {
+            Version version = new Version();
+            version.setAddress(upgradeInfo.apkUrl);
+            version.setMd5_address(upgradeInfo.apkMd5);
+            version.setStrong_update(upgradeInfo.upgradeType-1);//version.getStrong_update == 1/upgradeInfo.upgradeType == 2 为强更
+            version.setUpdate_content(upgradeInfo.newFeature+"\n"+upgradeInfo.publishType);
+            version.setVersion_name(upgradeInfo.versionName);
+            version.setVersion_number(upgradeInfo.versionCode);
+            version.setUpdate_time((int) (upgradeInfo.publishTime/1000));
+            return version;
+        }
+        return null;
     }
 }

+ 24 - 5
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -5,6 +5,7 @@ import android.app.DownloadManager;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.location.Location;
 import android.net.Uri;
 import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
@@ -29,11 +30,13 @@ import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.usage.AppUsageManager;
 import com.sheep.gamegroup.view.activity.ActInstallApkList;
+import com.sheep.gamegroup.view.activity.ActSheepApkList;
 import com.sheep.gamegroup.view.activity.ActWeb;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskList;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.DeviceUtils;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.umeng.socialize.ShareAction;
@@ -95,7 +98,7 @@ public class TestUtil {
     }
 
     private static void debugCopy(final Context context, final TaskEty taskEty) {
-        if (StringUtils.CopyText(context, taskEty.getDownload_link())) {
+        if (StringUtils.CopyText(taskEty.getDownload_link())) {
             G.showToast("已经复制游戏下载链接");
         }
     }
@@ -283,7 +286,7 @@ public class TestUtil {
      * @param activity
      */
     public static void test(final Activity activity) {
-        final String[] items = {"测试可用金额","复制token","复制打点数据","游戏搜索","游戏帐号","游戏代充","尝试开启第三方应用使用情况","测试代理页面","第三方应用使用情况",
+        final String[] items = {"复制token","复制imsi","复制打点数据","测试可用金额","测试定位信息","测试apk的渠道","幂动科技","游戏搜索","游戏帐号","游戏代充","尝试开启第三方应用使用情况","测试代理页面","第三方应用使用情况",
                 "开启第三方应用使用情况","h5跳转","新手对话框","md5","空间不足提示框",
                 "显示已经安装应用列表","复制faq地址","复制代理地址","复制世界杯地址","任务游戏列表","世界杯活动","交通银行信用卡测试",
                 "浦发银行信用卡测试", "测试游戏模块","打卡成功提示","定向货币详情","进入绑定身份认证界面时的提示","提交身份认证时的提示", "检查标签",
@@ -294,6 +297,15 @@ public class TestUtil {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
+                            case "测试定位信息":
+                                String jsonString = LocationUtils.getInstance().getLocationJSONObject().toJSONString();
+                                G.showToast(jsonString);
+                                StringUtils.CopyText(jsonString);
+                                break;
+                            case "测试apk的渠道":
+                                Intent intent = new Intent(activity, ActSheepApkList.class);
+                                activity.startActivity(intent);
+                                break;
                             case "测试可用金额":
                                 CommonUtil.getInstance()
                                         .getVoucherAndRatio(activity, 115+"", new Action1<BaseMessage>() {
@@ -303,6 +315,9 @@ public class TestUtil {
                                             }
                                         });
                                 break;
+                            case "幂动科技":
+                                Jump2View.getInstance().goMiDong(activity, "http://10.8.210.172:8081/#/?authorization=123123");
+                                break;
                             case "游戏帐号":
                                 Jump2View.getInstance().goGameAccount(activity, "http://10.8.210.172:8081/#/?authorization=123123");
                                 break;
@@ -339,7 +354,7 @@ public class TestUtil {
                                 break;
                             case "md5":
                                 String md5 = SysAppUtil.getConnectAdrressFileMD5();
-                                StringUtils.CopyText(activity, md5);
+                                StringUtils.CopyText(md5);
                                 G.showToast(md5);
                                 break;
                             case "空间不足提示框":
@@ -349,7 +364,11 @@ public class TestUtil {
                                 showHasInstallApkList(activity);
                                 break;
                             case "复制token":
-                                StringUtils.CopyText(activity, SpUtils.getOpenId(activity));
+                                StringUtils.CopyText(SpUtils.getOpenId(activity));
+                                break;
+                            case "复制imsi":
+                                StringUtils.CopyText(new DeviceUtils(activity).getIMEI());
+                                G.showToast(TimeUtil.newInstance().getDayBegin() + "|" + TimeUtil.newInstance().big2Today("2018-07-27",TimeUtil.FORMAT_DD_LINE));
                                 break;
                             case "复制faq地址":
                                 copyUrl("faqurl");
@@ -455,7 +474,7 @@ public class TestUtil {
                     url = ((JSONObject) url_config1).getString("find_share_url");
                     break;
             }
-            StringUtils.CopyText(SheepApp.getInstance(), ActWeb.addUrlToken(url));
+            StringUtils.CopyText(ActWeb.addUrlToken(url));
         }
     }
 

+ 46 - 0
app/src/main/java/com/sheep/gamegroup/util/TimeUtil.java

@@ -1,8 +1,10 @@
 package com.sheep.gamegroup.util;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.Locale;
 
 /**
@@ -12,6 +14,15 @@ public class TimeUtil {
 
     public static String FORMAT = "yyyy/MM/dd HH:mm";
     public static String FORMAT_DD = "yyyy/MM/dd";
+    public static String FORMAT_DD_LINE = "yyyy-MM-dd";
+
+    private static TimeUtil timeUtil;
+
+    public static TimeUtil newInstance(){
+        if (timeUtil == null)
+            timeUtil = new TimeUtil();
+        return timeUtil;
+    }
 
     public static long getCurrentSeconds(){
         long ls = System.currentTimeMillis()/1000;
@@ -102,4 +113,39 @@ public class TimeUtil {
 
     }
 
+    /**
+     * 日期时间字符串转换成毫秒
+     * @return
+     */
+    public static long string2Long(String dateStr, String dateFormat){
+        Calendar calendar = Calendar.getInstance();
+        try {
+            calendar.setTime(new SimpleDateFormat(dateFormat).parse(dateStr));
+            return calendar.getTimeInMillis();
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        return 0;
+    }
+
+    /**
+     * 是否大于今天
+     */
+    public boolean big2Today(String dateStr, String dateFormat){
+        if(getDayBegin() == string2Long(dateStr, dateFormat)){
+            return true;
+        }
+        return false;
+    }
+    //获取当天的开始时间
+      public long getDayBegin() {
+                Calendar cal = new GregorianCalendar();
+                 cal.set(Calendar.HOUR_OF_DAY, 0);
+                 cal.set(Calendar.MINUTE, 0);
+                 cal.set(Calendar.SECOND, 0);
+                 cal.set(Calendar.MILLISECOND, 0);
+                 return (cal.getTime()).getTime();
+             }
+
 }

+ 9 - 6
app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java

@@ -46,7 +46,7 @@ public class UMConfigUtils {
         TASK_DETAIL("任务详情"),//5012
         TASK_DOWNLOAD("任务详情中->下载游戏"),//5013
         TASK_UPLOAD_PICTURE("任务详情中->上传截图"),//5014
-        USER_ACCOUNT_SAFE("个人中心 -> 账号安全"),//5015
+        USER_ACCOUNT_SAFE("个人中心 -> 账号安全 注:!!!!!界面已经合并到个人资料界面中!!!!!"),//5015
         USER_TASK_RECORD("个人中心 -> 任务记录"),//5016
         USER_TIXIAN_DETAIL("个人中心 -> 提现明细"),//5017
         USER_BIND_PHONE("账号安全 -> 绑定手机号(确定按钮"),//5018
@@ -151,6 +151,8 @@ public class UMConfigUtils {
         SHEEP_NEWBIE_TASK_UNDERSTAND_SHEEP_COMMIT("新手任务 -> 一分钟了解小绵羊界面 -> 点击我知道了"),//5117
         ORDER_MANAGER_CANCEL("订单管理 -> 取消支付"),//5118
         ORDER_MANAGER_PAY("订单管理 -> 立即支付"),//5119
+        MI_DONG_VIEW("幂动科技"),//5120
+        SETTING("进入设置界面"),
         ;
         private String tag;
 
@@ -206,7 +208,7 @@ public class UMConfigUtils {
     }
 
     public static void copyDaDianData() {
-        StringUtils.CopyText(SheepApp.getInstance(), Event.allToString());
+        StringUtils.CopyText(Event.allToString());
     }
 
     public enum IdEvent {
@@ -252,8 +254,9 @@ public class UMConfigUtils {
         if(ActivityManager.getInstance().currentActivity() instanceof ChangeTelAct){//绑定手机号界面卡,接口不能通过,调了也没用
             return;
         }
+        String jsonString = LocationUtils.getInstance().getLocationJSONObject().toJSONString();
         //自己的统计信息
-        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.DAU, AppStatisticsConfig.DauSubType.signIn, "");
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.DAU, AppStatisticsConfig.DauSubType.signIn, jsonString);
     }
 
     /**
@@ -263,8 +266,9 @@ public class UMConfigUtils {
         if(ActivityManager.getInstance().currentActivity() instanceof ChangeTelAct){//绑定手机号界面卡,接口不能通过,调了也没用
             return;
         }
+        String jsonString = LocationUtils.getInstance().getLocationJSONObject().toJSONString();
         //自己的统计退出
-        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.DAU, AppStatisticsConfig.DauSubType.signOff, "");
+        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.DAU, AppStatisticsConfig.DauSubType.signOff, jsonString);
     }
 
 
@@ -366,10 +370,9 @@ public class UMConfigUtils {
      * 当Fragment对用户的可见性发生了改变的时候就会回调此方法
      *
      * @param isVisibleToUser                      true:用户能看见当前Fragment;false:用户看不见当前Fragment
-     * @param isHappenedInSetUserVisibleHintMethod true:本次回调发生在setUserVisibleHintMethod方法里;false:发生在onResume或onPause方法里
      * @param tag                                  fragment 名字
      */
-    public static void onVisibilityChangedToUser(boolean isVisibleToUser, boolean isHappenedInSetUserVisibleHintMethod, String tag) {
+    public static void onVisibilityChangedToUser(boolean isVisibleToUser, String tag) {
         if (isVisibleToUser) {
             if (tag != null) {
                 //umeng fragment

+ 75 - 24
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -172,7 +172,7 @@ public class ViewUtil {
             @Override
             public void onClick(View v) {
                 QR_COPY.onEvent();
-                StringUtils.CopyText(activity, link);
+                StringUtils.CopyText(link);
                 G.showToast("复制链接成功");
             }
         });
@@ -335,28 +335,7 @@ public class ViewUtil {
                 if (dialogConfig.getMsgIndent() > 0) {
                     msg = addIndent(msg, dialogConfig.getMsgIndent());
                 }
-                Map<String, String> colorMsgMap = dialogConfig.getColorMsgMap();
-                if(colorMsgMap.isEmpty()) {
-                    dialog_msg.setText(msg);
-                } else {
-                    int index = 0;
-                    for (Map.Entry<String, String> entry : colorMsgMap.entrySet()) {
-                        String key = entry.getKey();
-                        String value = entry.getValue();//例如红色 #FF0000
-                        if(!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7){
-                            int length = msg.length();
-                            if(index < length){
-                                int position = msg.indexOf(key, index);
-                                String start = msg.substring(0, position);
-                                String middle = getHtmlText(key, value);
-                                String end = msg.substring(position + key.length());
-                                index = (start+middle).length();
-                                msg = start + middle + end;
-                            }
-                        }
-                    }
-                    dialog_msg.setText(Html.fromHtml(msg));
-                }
+                setColorMapText(dialog_msg, msg, dialogConfig.getColorMsgMap());
                 int msgGravity = dialogConfig.getMsgGravity();
                 if (msgGravity != Gravity.NO_GRAVITY)
                     dialog_msg.setGravity(msgGravity);
@@ -470,6 +449,78 @@ public class ViewUtil {
     }
 
     /**
+     * 通过map来设置字体颜色
+     * @param textView
+     * @param msg
+     * @param colorMsgMap key为文本,value为要设置的颜色(#FF0000)
+     */
+    public static void setColorMapText(TextView textView, String msg, Map<String, String> colorMsgMap) {
+        if(textView == null){
+            return;
+        }
+        if(TextUtils.isEmpty(msg)){
+            textView.setText("");
+        }
+        if(colorMsgMap.isEmpty()) {
+            textView.setText(msg);
+        } else {
+            int index = 0;
+            for (Map.Entry<String, String> entry : colorMsgMap.entrySet()) {
+                String key = entry.getKey();
+                String value = entry.getValue();//例如红色 #FF0000
+                if(!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7){
+                    int length = msg.length();
+                    if(index < length){
+                        int position = msg.indexOf(key, index);
+                        String start = msg.substring(0, position);
+                        String middle = getHtmlText(key, value);
+                        String end = msg.substring(position + key.length());
+                        index = (start+middle).length();
+                        msg = start + middle + end;
+                    }
+                }
+            }
+            textView.setText(Html.fromHtml(msg));
+        }
+    }
+    /**
+     * 通过map来设置字体颜色
+     * @param textView
+     * @param msg
+     * @param items key为文本,value为要设置的颜色(#FF0000)
+     */
+    public static void setColorMapText(TextView textView, String msg, String...items) {
+        if(textView == null){
+            return;
+        }
+        if(TextUtils.isEmpty(msg)){
+            textView.setText("");
+        }
+        if(items == null || items.length < 1 || items.length % 2 == 1) {
+            textView.setText(msg);
+        } else {
+            int index = 0;
+            for (int i = 0; i + 1 < items.length; ) {
+                String key = items[i];
+                String value = items[i+1];//例如红色 #FF0000
+                if(!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value) && msg.contains(key) && value.length() == 7){
+                    int length = msg.length();
+                    if(index < length){
+                        int position = msg.indexOf(key, index);
+                        String start = msg.substring(0, position);
+                        String middle = getHtmlText(key, value);
+                        String end = msg.substring(position + key.length());
+                        index = (start+middle).length();
+                        msg = start + middle + end;
+                    }
+                }
+                i+=2;
+            }
+            textView.setText(Html.fromHtml(msg));
+        }
+    }
+
+    /**
      * 获取html格式并带颜色的文字
      * @param text 文字
      * @param color 颜色
@@ -685,7 +736,7 @@ public class ViewUtil {
         }
 
     }
-
+    //在msg前面添加空格
     public static String addIndent(String msg, int indent) {
         if(indent > 0){
             StringBuilder stringBuilder = new StringBuilder();

+ 186 - 0
app/src/main/java/com/sheep/gamegroup/util/ZipChannelUtil.java

@@ -0,0 +1,186 @@
+package com.sheep.gamegroup.util;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.text.TextUtils;
+
+import java.io.DataOutput;
+import java.io.File;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+/**
+ * Created by realicing on 2018/7/18.
+ * realicing@sina.com
+ */
+public class ZipChannelUtil {
+    // ZIP文件注释长度字段和MAGIC的字节数
+    static final int SHORT_LENGTH = 2;
+    //注释字符编码
+    static final String UTF_8 = "UTF-8";
+    // 文件最后用于定位的MAGIC字节
+    static final byte[] MAGIC = new byte[]{0x21, 0x4b, 0x46, 0x5a, 0x53, 0x21}; //!KFZS!
+
+    /**
+     * 写入渠道号
+     * @param file 执行该方法前应该首先确定该文件存在,否则可能会得到异想不到的结果
+     * @param comment
+     * @throws IOException
+     */
+    public static void writeQUA(File file, String comment) throws IOException {
+        byte[] data = comment.getBytes(UTF_8);
+        final RandomAccessFile raf = new RandomAccessFile(file, "rw");// rw 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件
+        //定位到文件有效内容的末尾(文件长度-注释长度)
+        raf.seek(file.length() - SHORT_LENGTH);
+        //写入注释字节数{注释字节数+2(MAGIC长度说明)+MAGIC长度}
+        writeShort(data.length + SHORT_LENGTH + MAGIC.length, raf);
+        //写入注释内容
+        writeBytes(data, raf);
+        //写入MAGIC字节数
+        writeShort(data.length, raf);
+        //写入MAGIC
+        writeBytes(MAGIC, raf);
+        raf.close();
+    }
+
+    private static void writeBytes(byte[] data, DataOutput out) throws IOException {
+        out.write(data);
+    }
+
+    private static void writeShort(int i, DataOutput out) throws IOException {
+        ByteBuffer bb = ByteBuffer.allocate(SHORT_LENGTH).order(ByteOrder.LITTLE_ENDIAN);
+        bb.putShort((short) i);
+        out.write(bb.array());
+    }
+
+
+
+
+
+    //读取源apk的路径
+    public static String getSourceApkPath(Context context, String packageName) {
+        if (TextUtils.isEmpty(packageName))
+            return null;
+        try {
+            ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(packageName, 0);
+            return appInfo.sourceDir;
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    //读取渠道号
+    public static String readQUA(File file) throws IOException {
+        RandomAccessFile raf = null;
+        try {
+            raf = new RandomAccessFile(file, "r");
+            long index = raf.length();
+            byte[] buffer = new byte[MAGIC.length];
+            index -= MAGIC.length;
+            //定位到MAGIC处
+            raf.seek(index);
+            //读取MAGIC
+            raf.readFully(buffer);
+            //判断文件末尾是否存在MAGIC字符
+            if (isMagicMatched(buffer)) {
+                index -= SHORT_LENGTH;
+                raf.seek(index);
+                //读取渠道号长度
+                int length =  readShort(raf);
+                if (length > 0) {
+                    index -= length;
+                    raf.seek(index);
+                    //读取渠道号
+                    byte[] bytesComment = new byte[length];
+                    raf.readFully(bytesComment);
+                    return new String(bytesComment, UTF_8);
+                }
+            }
+        } finally {
+            if (raf != null) {
+                raf.close();
+            }
+        }
+        return "";
+    }
+    //是否已经添加渠道号
+    public static boolean isAddQUA(File file) throws IOException {
+        RandomAccessFile raf = null;
+        try {
+            raf = new RandomAccessFile(file, "r");
+            long index = raf.length();
+            byte[] buffer = new byte[MAGIC.length];
+            index -= MAGIC.length;
+            //定位到MAGIC处
+            raf.seek(index);
+            //读取MAGIC
+            raf.readFully(buffer);
+            //判断文件末尾是否存在MAGIC字符
+            return isMagicMatched(buffer);
+        } finally {
+            if (raf != null) {
+                raf.close();
+            }
+        }
+    }
+
+    private static int readShort(RandomAccessFile raf) throws IOException {
+        byte[] buffer = new byte[SHORT_LENGTH];
+        raf.read(buffer);
+        return buffer[0] + buffer[1]*16*16;//0a00中 0a 10 ,00 0 -> 10+0*256 = 10
+    }
+
+    //判断是否存在渠道号
+    private static boolean isMagicMatched(byte[] buffer) {
+        if (buffer.length != MAGIC.length) {
+            return false;
+        }
+        for (int i = 0; i < MAGIC.length; ++i) {
+            if (buffer[i] != MAGIC[i]) {
+                return false;
+            }
+        }
+        return true;
+    }
+    //删除渠道
+    public static void delQUA(File file) throws IOException {
+        RandomAccessFile raf = null;
+        try {
+            raf = new RandomAccessFile(file, "rw");
+            long index = raf.length();
+            byte[] buffer = new byte[MAGIC.length];
+            index -= MAGIC.length;
+            //定位到MAGIC处
+            raf.seek(index);
+            //读取MAGIC
+            raf.readFully(buffer);
+            //判断文件末尾是否存在MAGIC字符
+            if (isMagicMatched(buffer)) {
+                index -= SHORT_LENGTH;
+                raf.seek(index);
+                //读取注释中渠道长度
+                int length =  readShort(raf);
+                if (length > 0) {
+                    index -= length;
+                    //跳过注释
+                    raf.seek(index);
+                    //跳过注释长度
+                    index -= SHORT_LENGTH;
+                    raf.seek(index);
+                    byte[] NO_COMMENT = new byte[]{0x00, 0x00};
+                    writeBytes(NO_COMMENT, raf);
+                    long newLength = index + NO_COMMENT.length;
+                    raf.setLength(newLength);
+                }
+            }
+        } finally {
+            if (raf != null) {
+                raf.close();
+            }
+        }
+    }
+}

+ 85 - 0
app/src/main/java/com/sheep/gamegroup/util/glide/GlideCircleTransformWithBorder.java

@@ -0,0 +1,85 @@
+package com.sheep.gamegroup.util.glide;
+
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.support.annotation.NonNull;
+
+import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
+import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
+
+import java.security.MessageDigest;
+
+/**
+ * Created by realicing on 2018/7/20.
+ * realicing@sina.com
+ */
+public class GlideCircleTransformWithBorder  extends BitmapTransformation {
+    private Paint mBorderPaint;
+    private float mBorderWidth;
+    public static float DEFAULT_BORDER_WIDTH = -1;
+    public GlideCircleTransformWithBorder(int borderColor) {
+        super();
+        if(DEFAULT_BORDER_WIDTH < 0)
+            DEFAULT_BORDER_WIDTH = Resources.getSystem().getDisplayMetrics().density * 2;
+        mBorderWidth = DEFAULT_BORDER_WIDTH;
+
+        mBorderPaint = new Paint();
+        mBorderPaint.setDither(true);
+        mBorderPaint.setAntiAlias(true);
+        mBorderPaint.setColor(borderColor);
+        mBorderPaint.setStyle(Paint.Style.STROKE);
+        mBorderPaint.setStrokeWidth(DEFAULT_BORDER_WIDTH);
+    }
+    public GlideCircleTransformWithBorder(int borderWidth, int borderColor) {
+        super();
+        mBorderWidth = Resources.getSystem().getDisplayMetrics().density * borderWidth;
+
+        mBorderPaint = new Paint();
+        mBorderPaint.setDither(true);
+        mBorderPaint.setAntiAlias(true);
+        mBorderPaint.setColor(borderColor);
+        mBorderPaint.setStyle(Paint.Style.STROKE);
+        mBorderPaint.setStrokeWidth(mBorderWidth);
+    }
+
+
+    protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
+        return circleCrop(pool, toTransform);
+    }
+
+    private Bitmap circleCrop(BitmapPool pool, Bitmap source) {
+        if (source == null) return null;
+
+        int size = (int) (Math.min(source.getWidth(), source.getHeight()) - (mBorderWidth / 2));
+        int x = (source.getWidth() - size) / 2;
+        int y = (source.getHeight() - size) / 2;
+        // TODO this could be acquired from the pool too
+        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);
+        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(result);
+        Paint paint = new Paint();
+        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
+        paint.setAntiAlias(true);
+        float r = size / 2f;
+        canvas.drawCircle(r, r, r, paint);
+        if (mBorderPaint != null) {
+            float borderRadius = r - mBorderWidth / 2;
+            canvas.drawCircle(r, r, borderRadius, mBorderPaint);
+        }
+        return result;
+    }
+
+    @Override
+    public void updateDiskCacheKey(MessageDigest messageDigest) {
+
+    }
+
+    //
+//    @Override
+//    public String getId() {
+//        return getClass().getName();
+//    }
+}

+ 0 - 272
app/src/main/java/com/sheep/gamegroup/view/activity/AccountAndSecurityAct.java

@@ -1,272 +0,0 @@
-package com.sheep.gamegroup.view.activity;
-
-import android.app.Activity;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.RequestOptions;
-import com.kfzs.duanduan.event.BigEvent;
-import com.sheep.gamegroup.absBase.BaseActivity;
-import com.sheep.gamegroup.di.components.DaggerAccountAndSercuritComponent;
-import com.sheep.gamegroup.di.modules.AccountAndSercuritModule;
-import com.sheep.gamegroup.event.ImageHeadChange;
-import com.sheep.gamegroup.event.MoneyChange;
-import com.sheep.gamegroup.event.RealNameAutehrChange;
-import com.sheep.gamegroup.event.UserNameChange;
-import com.sheep.gamegroup.model.entity.UserEntity;
-import com.sheep.gamegroup.presenter.AccountAndSecuritContract;
-import com.sheep.gamegroup.presenter.AccountAndSecuritPresenter;
-import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.MyDbManager;
-import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.G;
-import com.sheep.jiuyan.samllsheep.utils.SpUtils;
-import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import javax.inject.Inject;
-
-import butterknife.BindView;
-import butterknife.OnClick;
-
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_PHONE;
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_WX;
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_INFO;
-
-/**
- * Created by Administrator on 2018/3/16.
- */
-
-public class AccountAndSecurityAct extends BaseActivity implements AccountAndSecuritContract.View {
-
-    @BindView(R.id.iv_head)
-    ImageView ivHead;
-    @BindView(R.id.tv_name)
-    TextView tvName;
-    @BindView(R.id.tv_link_content)
-    TextView tvLinkContent;
-    @BindView(R.id.tv_phone)
-    TextView tvPhone;
-    @BindView(R.id.rl_phone)
-    RelativeLayout rlPhone;
-    @BindView(R.id.tv_wx)
-    TextView tvWx;
-    @BindView(R.id.rl_wx)
-    RelativeLayout rlWx;
-    @BindView(R.id.tv_auther)
-    TextView tvAuther;
-    @BindView(R.id.rl_auther)
-    RelativeLayout rlAuther;
-    @BindView(R.id.rl_top)
-    RelativeLayout rlTop;
-
-    @Inject
-    AccountAndSecuritPresenter presenter;
-    UserEntity mEntity;
-    @BindView(R.id.tv_submit)
-    TextView tvSubmit;
-
-    private Activity activity;
-
-    @Override
-    protected int getLayoutId() {
-        return R.layout.x_account_security_layout;
-    }
-
-    @Override
-    public void initView() {
-        activity = this;
-        TitleBarUtils
-                .getInstance()
-                .setTitle(this, "账号与安全")
-                .setTitleFinish(this);
-
-        DaggerAccountAndSercuritComponent.builder()
-                .netComponent(SheepApp.get(this).getNetComponent())
-                .accountAndSercuritModule(new AccountAndSercuritModule(this))
-                .build().inject(this);
-
-    }
-
-    @Override
-    public void initListener() {
-
-    }
-
-    @Override
-    public void initData() {
-        presenter.getTask(null);
-        EventBus.getDefault().register(this);
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(UserNameChange done) {
-        UserEntity user=mEntity;
-        user.setNickname(done.getNikeName());
-        mEntity=user;
-        tvName.setText(mEntity.getNickname());
-
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-//        initData();
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(ImageHeadChange done) {
-        UserEntity user=mEntity;
-        user.setAvatar(done.getAvatar());
-        mEntity=user;
-        Glide.with(AccountAndSecurityAct.this)
-                .load(mEntity.getAvatar())
-                .apply(new RequestOptions().circleCrop().placeholder(R.drawable.icon))
-                .into(ivHead);
-    }
-
-
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(RealNameAutehrChange done) {
-
-        UserEntity entiy=mEntity;
-        entiy.setReal_name(done.getRealName());
-        entiy.setId_number(done.getIdCard());
-        entiy.setBank_card(done.getBanck());
-        mEntity=entiy;
-        refalshAuther(mEntity);
-
-    }
-
-
-
-
-    @OnClick({R.id.rl_phone, R.id.rl_wx, R.id.rl_auther, R.id.rl_top,R.id.tv_submit})
-    public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.rl_phone:   //跳转到绑定手机号
-                Jump2View.getInstance().goBindPhone(activity, null);
-                BIND_PHONE.onEvent();
-                break;
-            case R.id.rl_wx:  ////跳转到微信
-                if(mEntity == null){
-                    G.showToast(R.string.loading_data);
-                } else if(TextUtils.isEmpty(mEntity.getWx_openid())) {
-                    Jump2View.getInstance().goNoBindWx(AccountAndSecurityAct.this, ChangeWxOrTelAct.TYPE_NORMAL);
-                } else {
-                    G.showToast("您已经绑定微信");
-                }
-                BIND_WX.onEvent();
-                break;
-            case R.id.rl_auther: ////跳转授权
-                Jump2View.getInstance().goRealNameAuther(AccountAndSecurityAct.this,mEntity, 0);
-                break;
-
-            case R.id.rl_top:
-                Jump2View.getInstance().goPersionInfo(AccountAndSecurityAct.this,mEntity);
-                break;
-            case R.id.tv_submit:
-                CommonUtil.getInstance().loginOut((BaseActivity) activity);
-                break;
-        }
-    }
-
-    @Override
-    public void NetSuccess(int code, String msg, String s) {
-        G.showToast(msg);
-    }
-
-    @Override
-    public void NetError(int code, String errorMsg) {
-        G.showToast(errorMsg);
-
-    }
-
-
-    @Override
-    public void showTask(final UserEntity entity) {
-                mEntity = entity;
-                tvName.setText(entity.getNickname());
-                tvLinkContent.setText("绵羊号:" + entity.getInvitation_code());
-                if (TextUtils.isEmpty(entity.getMobile())) {
-                    tvPhone.setText("未绑定");
-                } else {
-                    tvPhone.setText(entity.getMobile());
-                    SpUtils.savePhone(activity, entity.getMobile());
-                }
-
-                Glide.with(AccountAndSecurityAct.this)
-                        .load(mEntity.getAvatar())
-                        .apply(new RequestOptions().circleCrop().placeholder(R.drawable.icon))
-                        .into(ivHead);
-                if (TextUtils.isEmpty(entity.getWx_nickname())) {
-                    if(TextUtils.isEmpty(entity.getWx_openid())) {
-                        tvWx.setText("未绑定");
-                    } else {
-                        tvWx.setText("");
-                    }
-                } else {
-                    tvWx.setText(entity.getWx_nickname());
-                    SpUtils.saveWeixin(activity, entity.getWx_nickname());
-                }
-
-                refalshAuther(entity);
-                MoneyChange change=new MoneyChange();
-                change.setBalance(entity.getBalance()+"");
-                change.setTotal_asset(mEntity.getTotal_asset()+"");
-                EventBus.getDefault().post(change);
-
-
-                //Todo user 类都没有统一,先这样
-                try{
-                    MyDbManager.getInstance()
-                            .saveOrUpdateUser(mEntity);
-                }catch (Exception e){
-                    e.printStackTrace();
-                }
-
-
-    }
-
-
-    @Subscribe
-    public void onEventMainThread(BigEvent event){
-        switch (event.getEventTypes()){
-            case REFRESH_DATA_PHONE:
-                initData();
-                break;
-        }
-    }
-
-    private  void  refalshAuther(UserEntity entity ){
-        boolean isBanck = TextUtils.isEmpty(entity.getBank_card());
-        boolean isId_number = TextUtils.isEmpty(entity.getId_number());
-        boolean isRoalName = TextUtils.isEmpty(entity.getReal_name());
-        if (isId_number && isRoalName) {
-            tvAuther.setText("未认证");
-        } else if (!isId_number && !isRoalName) {
-            tvAuther.setText("已认证");
-        } else {
-            tvAuther.setText("认证中");
-        }
-
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        EventBus.getDefault().unregister(this);
-    }
-
-
-}

+ 21 - 27
app/src/main/java/com/sheep/gamegroup/view/activity/ActFindGame.java

@@ -6,31 +6,21 @@ import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.design.widget.AppBarLayout;
 import android.support.v7.widget.AppCompatRatingBar;
-import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.Toolbar;
 import android.text.TextUtils;
 import android.view.View;
 import android.webkit.WebView;
 import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.ProgressBar;
-import android.widget.RadioGroup;
 import android.widget.RatingBar;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.arialyy.annotations.Download;
 import com.arialyy.aria.core.Aria;
 import com.arialyy.aria.core.download.DownloadTask;
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
-import com.bumptech.glide.request.RequestOptions;
-import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
-import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
-import com.kfzs.duanduan.fragment.FgtGameDetail;
 import com.kfzs.duanduan.services.DownloadTaskService;
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.kfzs.duanduan.utils.dlg.HelperUtils;
@@ -43,25 +33,17 @@ import com.sheep.gamegroup.model.entity.MyFindAppCore;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.Conversion2;
 import com.sheep.gamegroup.util.GlideImageLoader;
-import com.sheep.gamegroup.util.ImageGlarryDrawable;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
-import com.sheep.gamegroup.util.LogUtil;
-import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.ViewUtil;
-import com.sheep.gamegroup.view.customview.SheepViewPager;
-import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
-import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
-import org.afinal.simplecache.ACache;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
@@ -142,7 +124,8 @@ public class ActFindGame extends BaseActivity {
                 int titleHeight = img_baseactivity_title.getHeight();
                 int titleWidth = img_baseactivity_title.getWidth();
                 int topRow = (titleHeight - find_game_name_tv.getHeight() - find_game_info_tv.getHeight()) / 5;
-                int leftRow = isNeedReservation ? topRow : 5 * topRow;
+                int topRow2 = (titleHeight - find_game_name_tv.getHeight()) / 2;
+                int leftRow = topRow2 / 4;//isNeedReservation ? topRow : 5 * topRow;
 
                 int willTop = Math.max(topRow/2, find_game_top + verticalOffset);
                 int row = (find_icon_with * willTop + titleHeight * (find_game_top - willTop)) / find_game_top - topRow;
@@ -155,19 +138,19 @@ public class ActFindGame extends BaseActivity {
                 //名字位置变化
                 RelativeLayout.LayoutParams layoutParams2 = (RelativeLayout.LayoutParams) find_game_name_tv.getLayoutParams();
                 layoutParams2.leftMargin = Math.max(titleWidth + row + 2 * leftRow, (G.WIDTH - nameWidth) / 2 + verticalOffset);
-                layoutParams2.topMargin = Math.max(2 * topRow, getResources().getDimensionPixelSize(R.dimen.find_game_top2) + verticalOffset);
+                layoutParams2.topMargin = Math.max(topRow2, getResources().getDimensionPixelSize(R.dimen.find_game_top2) + verticalOffset);
                 find_game_name_tv.setLayoutParams(layoutParams2);
                 //信息位置变化
                 RelativeLayout.LayoutParams layoutParams3 = (RelativeLayout.LayoutParams) find_game_info_tv.getLayoutParams();
                 int left1 = (G.WIDTH - infoWidth) / 2;
                 int left2 = titleWidth + row + 2 * leftRow;
-                layoutParams3.leftMargin = left2 > left1 ? Math.min(left2, left1 - verticalOffset) : Math.max(left2, left1 + verticalOffset);
-                layoutParams3.topMargin = Math.max(find_game_name_tv.getHeight() + 4 * topRow, getResources().getDimensionPixelSize(R.dimen.find_game_top3) + verticalOffset);
+                layoutParams3.leftMargin = left1;//left2 > left1 ? Math.min(left2, left1 - verticalOffset) : Math.max(left2, left1 + verticalOffset);
+                layoutParams3.topMargin = /*Math.max(find_game_name_tv.getHeight() + 4 * topRow, */getResources().getDimensionPixelSize(R.dimen.find_game_top3) + verticalOffset/*)*/;
                 find_game_info_tv.setLayoutParams(layoutParams3);
                 //下载按钮位置变化
                 RelativeLayout.LayoutParams layoutParams4 = (RelativeLayout.LayoutParams) find_game_down_tv.getLayoutParams();
                 layoutParams4.setMarginEnd(Math.max(ibtn_baseactivity_right.getWidth(), (G.WIDTH - find_game_down_tv.getWidth()) / 2 + verticalOffset));
-                layoutParams4.topMargin = Math.max(topRow, getResources().getDimensionPixelSize(R.dimen.find_game_top4) + verticalOffset);
+                layoutParams4.topMargin = Math.max((titleHeight - find_game_down_tv.getHeight()) / 2, getResources().getDimensionPixelSize(R.dimen.find_game_top4) + verticalOffset);// Math.max(topRow, getResources().getDimensionPixelSize(R.dimen.find_game_top4) + verticalOffset);
                 find_game_down_tv.setLayoutParams(layoutParams4);
                 //星级位置变化
                 RelativeLayout.LayoutParams layoutParams5 = (RelativeLayout.LayoutParams) find_game_xin.getLayoutParams();
@@ -198,9 +181,14 @@ public class ActFindGame extends BaseActivity {
         resetAppScoreNum();
         resetMyAppScore();
         resetUserInfo();
+        if(isShowAppScore) {
+            find_game_score_no.setVisibility(View.VISIBLE);
+            find_game_score_my.setVisibility(View.VISIBLE);
+        }
     }
 
     private boolean mIsExpanded = false;//是否是折叠状态
+    private boolean isShowAppScore = false;//是否显示评分模块
 
     @Override
     public void initListener() {
@@ -220,8 +208,10 @@ public class ActFindGame extends BaseActivity {
                         FindApp findApp = baseMessage.getData(FindApp.class);
                         if (findApp != null) {
                             loadData(findApp);
-                            initAppScoreNum();
-                            initMyAppScore();
+                            if(isShowAppScore) {
+                                initAppScoreNum();
+                                initMyAppScore();
+                            }
                         } else {
                             resetData();
                         }
@@ -328,7 +318,7 @@ public class ActFindGame extends BaseActivity {
     private void loadData(final FindApp findApp) {
         this.findApp = findApp;
         //游戏简介与下载
-        ViewUtil.setImage(find_game_iv, findApp.getIcon());
+        GlideImageLoader.setGameImage(find_game_iv, findApp.getIcon());
         ViewUtil.setText(find_game_name_tv, findApp.getName());
         isNeedReservation = !findApp.isCanDonload();//这里认为只有两种状态:可下载与预约下载
         if (isNeedReservation)
@@ -378,6 +368,10 @@ public class ActFindGame extends BaseActivity {
     }
 
     //应用评分情况
+    @BindView(R.id.find_game_score_no)
+    View find_game_score_no;
+    @BindView(R.id.find_game_score_my)
+    View find_game_score_my;
     @BindView(R.id.find_game_xin2)
     AppCompatRatingBar find_game_xin2;
     @BindView(R.id.find_game_progress_5)
@@ -429,7 +423,7 @@ public class ActFindGame extends BaseActivity {
     TextView find_game_user_commit_tv;
 
     private void loadUserInfo(final UserEntity userEntity) {
-        GlideImageLoader.circleImage(find_game_user_iv, userEntity.getAvatar(), R.drawable.icon);
+        GlideImageLoader.setAvatar(find_game_user_iv, userEntity.getAvatar());
         ViewUtil.setText(find_game_user_name_tv, userEntity.getNickname());
         find_game_user_commit_tv.setOnClickListener(new View.OnClickListener() {
             @Override

+ 3 - 7
app/src/main/java/com/sheep/gamegroup/view/activity/ActFindInformation.java

@@ -24,6 +24,7 @@ import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindItem;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
@@ -169,10 +170,8 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
         TextView find_information_game_name = (TextView)itemView.findViewById(R.id.find_information_game_name);
         TextView find_information_game_surplus = (TextView)itemView.findViewById(R.id.find_information_game_surplus);
         TextView find_information_game_time = (TextView)itemView.findViewById(R.id.find_information_game_time);
-        TextView find_information_game_yuan = (TextView)itemView.findViewById(R.id.find_information_game_yuan);
-        TextView find_information_game_task_bottom = (TextView)itemView.findViewById(R.id.find_information_game_task_bottom);
         TextView find_information_game_task_center = (TextView)itemView.findViewById(R.id.find_information_game_task_center);
-        ViewUtil.setImage(find_information_game_icon, findApp.getIcon());
+        GlideImageLoader.setGameImage(find_information_game_icon, findApp.getIcon());
         ViewUtil.setText(find_information_game_name, findApp.getName());
         final boolean isNeedReservation = !findApp.isCanDonload();//这里认为只有两种状态:可下载与预约下载
         ViewUtil.setText(find_information_game_surplus);
@@ -180,8 +179,6 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
             ViewUtil.setText(find_information_game_time, String.format(Locale.CHINA, "开放时间:%s", TimeUtil.TimeStamp2Date(findApp.getDownload_at(), "yyyy-MM-dd\u0020HH:mm")));
         else
             ViewUtil.setText(find_information_game_time, String.format(Locale.CHINA, "厂商:%s\u0020包体大小:%sM", findApp.getManufacturer(),findApp.getPackage_size()));
-        find_information_game_yuan.setVisibility(View.GONE);
-        find_information_game_task_bottom.setVisibility(View.GONE);
         find_information_game_task_center.setVisibility(View.VISIBLE);
 
         updateView(this,findApp, find_information_game_task_center);
@@ -271,8 +268,7 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
     private FindItem findItem;
 
     private void notifyDataSetChanged(){
-        if(list.isEmpty())
-            empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         refresh.setRefreshing(false);
         view_list.getAdapter().notifyDataSetChanged();
     }

+ 3 - 3
app/src/main/java/com/sheep/gamegroup/view/activity/ActGameAccount.java

@@ -14,6 +14,7 @@ import com.sheep.gamegroup.model.entity.GameAccountSuper;
 import com.sheep.gamegroup.model.entity.RecyleObj;
 import com.sheep.gamegroup.model.entity.RecyleType;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdpGameAccount;
@@ -172,12 +173,11 @@ public class ActGameAccount extends BaseActivity {
         adpGameAccount.notifyDataSetChanged();
         refresh.setRefreshing(false);
         if(gameAccountSuper == null){
-            empty_view.setVisibility(View.VISIBLE);
+            CommonUtil.getInstance().updateEmptyView(empty_view, true);
             return;
         }
         if(ListUtil.isEmpty(gameAccountSuper.getPlatform()) && ListUtil.isEmpty(gameAccountSuper.getTengxun()) && ListUtil.isEmpty(gameAccountSuper.getXiaomi())){
-
-            empty_view.setVisibility(View.VISIBLE);
+            CommonUtil.getInstance().updateEmptyView(empty_view, true);
         }else {
             empty_view.setVisibility(View.GONE);
         }

+ 3 - 59
app/src/main/java/com/sheep/gamegroup/view/activity/ActGameAgencyRecharge.java

@@ -13,6 +13,7 @@ import com.kfzs.duanduan.fragment.FgtGameAgencyRecharge;
 import com.kfzs.duanduan.mine.GiftpackListAdapter;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.GridViewEntity;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.ViewUtil;
@@ -134,69 +135,12 @@ public class ActGameAgencyRecharge extends BaseActivity {
             }
         });
         pager.setCurrentItem(position);
-        reflex(indicator);
+        CommonUtil.getInstance()
+            .reflex(indicator, activity);
     }
     private int position = 0;//默认选中第一个
 
     /**
-     * 通过反射调整tabLayout中下划线的宽度
-     * @param tabLayout
-     */
-    public void reflex(final TabLayout tabLayout){
-        //了解源码得知 线的宽度是根据 tabView的宽度来设置的
-        tabLayout.post(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    //拿到tabLayout的mTabStrip属性
-                    LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);
-
-//                    int dp10 = dip2px(tabLayout.getContext(), 10);
-                    int add = getResources().getDimensionPixelSize(R.dimen.content_padding_10);
-                    int count = mTabStrip.getChildCount();
-                    int fillCount = Math.min(5, count);//一屏的个数
-
-                    for (int i = 0; i < count; i++) {
-                        View tabView = mTabStrip.getChildAt(i);
-
-                        //拿到tabView的mTextView属性  tab的字数不固定一定用反射取mTextView
-                        Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
-                        mTextViewField.setAccessible(true);
-
-                        TextView mTextView = (TextView) mTextViewField.get(tabView);
-
-                        tabView.setPadding(0, 0, 0, 0);
-
-                        //因为我想要的效果是   字多宽线就多宽,所以测量mTextView的宽度
-                        int width = 0;
-                        width = mTextView.getWidth();
-                        if (width == 0) {
-                            mTextView.measure(0, 0);
-                            width = mTextView.getMeasuredWidth();
-                        }
-
-                        //设置tab左右间距为10dp  注意这里不能使用Padding 因为源码中线的宽度是根据 tabView的宽度来设置的
-                        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
-                        params.width = width ;
-                        int margin = (G.WIDTH - fillCount*width - 2*add) / (fillCount*2);
-                        params.leftMargin = margin + (i == 0 ? add : 0);
-                        params.rightMargin = margin + (i + 1 == count ? add : 0);
-                        tabView.setLayoutParams(params);
-
-                        tabView.invalidate();
-                    }
-
-                } catch (NoSuchFieldException e) {
-                    e.printStackTrace();
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                }
-            }
-        });
-
-    }
-
-    /**
      * gridview 赋值
      */
     private void setValue(){

+ 12 - 8
app/src/main/java/com/sheep/gamegroup/view/activity/ActInstallApkList.java

@@ -17,6 +17,7 @@ import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
 import java.io.File;
@@ -64,9 +65,7 @@ public class ActInstallApkList extends BaseActivity {
     public void initData() {
         loadData(SysAppUtil.getAppInfos());
     }
-    private List<AppInfo> appInfoList;
     private void loadData(List<AppInfo> appInfoList) {
-        this.appInfoList = appInfoList;
         user_label_list.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
         user_label_list.setAdapter(new AdbCommonRecycler<AppInfo>(SheepApp.getInstance(), appInfoList){
 
@@ -82,17 +81,14 @@ public class ActInstallApkList extends BaseActivity {
                 TextView app_info_package_name_tv = holder.itemView.findViewById(R.id.app_info_package_name_tv);
                 TextView app_info_size_tv = holder.itemView.findViewById(R.id.app_info_size_tv);
                 TextView app_info_path_tv = holder.itemView.findViewById(R.id.app_info_path_tv);
-                TextView app_info_is_sys_tv = holder.itemView.findViewById(R.id.app_info_is_sys_tv);
-                TextView app_info_is_sd_tv = holder.itemView.findViewById(R.id.app_info_is_sd_tv);
 
                 app_info_iv.setImageDrawable(appInfo.getIcon());
                 ViewUtil.setText(app_info_name_tv, appInfo.getAppName());
                 app_info_name_tv.append(CommonUtil.getFileMD5(new File(appInfo.getSourceDir())));
                 ViewUtil.setText(app_info_package_name_tv, appInfo.getPackageName());
                 ViewUtil.setText(app_info_size_tv, appInfo.getApkSize());
-                ViewUtil.setText(app_info_path_tv, appInfo.getSourceDir());
-                ViewUtil.setText(app_info_is_sys_tv, appInfo.isUserApp() ? "用户app":"系统app");
-                ViewUtil.setText(app_info_is_sd_tv, appInfo.isSD() ? "SD卡" : "手机内存");
+                ViewUtil.setText(app_info_path_tv, appInfo.getSourceDir()+"\n"+appInfo.getSha1());
+                app_info_path_tv.append("\n"+ (appInfo.isUserApp() ? "用户app":"系统app")  +"\u3000"+ (appInfo.isSD() ? "SD卡" : "手机内存"));
 
                 holder.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
@@ -100,13 +96,21 @@ public class ActInstallApkList extends BaseActivity {
                         onClickItem(view, appInfo);
                     }
                 });
+                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
+                    @Override
+                    public boolean onLongClick(View view) {
+                        StringUtils.CopyText(appInfo.getSha1());
+                        G.showToast("复制sha1成功:"+appInfo.getSha1());
+                        return true;
+                    }
+                });
             }
         });
 
     }
 
     private void onClickItem(View view, final AppInfo appInfo) {
-        StringUtils.CopyText(this, appInfo.getPackageName());
+        StringUtils.CopyText(appInfo.getPackageName());
         readApp(appInfo);
     }
 

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActMainGame.java

@@ -78,7 +78,7 @@ public class ActMainGame extends BaseActivity {
 
     @Override
     protected int getLayoutId() {
-        return R.layout.personalcenter_act_layout;
+        return R.layout.act_main_game;
     }
 
     @Override

+ 169 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActMiDong.java

@@ -0,0 +1,169 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.support.design.widget.TabLayout;
+import android.support.v4.view.ViewPager;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.kfzs.duanduan.event.BigEvent;
+import com.kfzs.duanduan.event.EventTypes;
+import com.kfzs.duanduan.fragment.FgtMiDong;
+import com.kfzs.duanduan.mine.GiftpackListAdapter;
+import com.mdad.sdk.mdsdk.AdManager;
+import com.mdad.sdk.mdsdk.AppDownloadListener;
+import com.mdad.sdk.mdsdk.RewardListener;
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import org.afinal.simplecache.ACache;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+/**
+ * 幂动科技 任务
+ * Created by ljy on 2018/7/19.
+ */
+
+public class ActMiDong extends BaseActivity {
+    @BindView(R.id.indicator)
+    TabLayout indicator;
+    @BindView(R.id.pager)
+    ViewPager pager;
+    private GiftpackListAdapter mAdapter;
+
+    private Activity activity;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.act_midong_layout;
+    }
+
+    @Override
+    public void initView() {
+        activity = this;
+        TitleBarUtils.getInstance()
+                .setTitle(activity, "幂动任务")
+                .setTitleFinish(activity);
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+    private int curPosition = 0;
+    private List<FgtMiDong> fgtMiDongList = ListUtil.emptyList();
+    @Override
+    public void initData() {
+        mAdapter = new GiftpackListAdapter(getSupportFragmentManager(), activity);
+        fgtMiDongList.add(FgtMiDong.newInstance(0));
+        fgtMiDongList.add(FgtMiDong.newInstance(1));
+        mAdapter.add(fgtMiDongList.get(0), "普通任务");
+        mAdapter.add(fgtMiDongList.get(1), "签到任务");
+        pager.setAdapter(mAdapter);
+        indicator.setupWithViewPager(pager);
+        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int i, float v, int i1) {
+
+            }
+
+            @Override
+            public void onPageSelected(int i) {
+                curPosition = i;
+//                FIND_TAG.onEvent("find_tag_name", ListUtil.hasIndex(list, i - 1) ? list.get(i - 1).getName() : "全部");
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int i) {
+
+            }
+        });
+        pager.setCurrentItem(0);
+
+        CommonUtil.getInstance()
+            .reflex(indicator, activity);
+        AdManager.getInstance(activity).setDownloadListener(new AppDownloadListener() {
+            @Override
+            public void onDownloadStart(int id) {
+                LogUtil.println("AdManager", "onDownloadStart", id);
+                ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), id), "onDownloadStart");
+                EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+            }
+
+            @Override
+            public void onDownloadFail(int id) {
+                LogUtil.println("AdManager","onDownloadFail", id);
+                ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), id), "onDownloadFail");
+                EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+            }
+
+            @Override
+            public void onDownloadSuccess(int id) {//没有收到回调
+                LogUtil.println("AdManager","onDownloadSuccess", id);
+                ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), id), "onDownloadSuccess");
+                EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+            }
+        });
+        AdManager.getInstance(activity).setRewardListener(new RewardListener() {
+            @Override
+            public void doTaskSuccess(String s) {
+                LogUtil.println("AdManager","onDownloadFail", s);
+                ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), s), "doTaskSuccess");
+                EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+
+            }
+
+            @Override
+            public void doTaskFail(String s) {
+                LogUtil.println("AdManager","onDownloadFail", s);
+                ACache.get(SheepApp.getInstance()).put(String.format(Locale.CHINA, "%s%d", AdManager.class.getSimpleName(), s), "doTaskFail");
+                EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.REFRESH_MING_DONG));
+
+            }
+        });
+    }
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // TODO: add setContentView(...) invocation
+        ButterKnife.bind(this);
+        EventBus.getDefault().register(this);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        EventBus.getDefault().unregister(this);
+    }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event){
+        switch (event.getEventTypes()){
+            case REFRESH_MING_DONG:
+                FgtMiDong item = ListUtil.getIndex(fgtMiDongList, curPosition);
+                if(item != null){
+                    item.refreshData();
+                }
+                break;
+        }
+    }
+}

+ 1 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActReservation.java

@@ -259,8 +259,7 @@ public class ActReservation extends BaseActivity {
 
 
     private void notifyDataSetChanged() {
-        if (list.isEmpty())
-            empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         refresh.setRefreshing(false);
         view_list.getAdapter().notifyDataSetChanged();
     }

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchGame.java

@@ -242,7 +242,7 @@ public class ActSearchGame extends BaseActivity {
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
                     @Override
                     public void onError(BaseMessage baseMessage) {
-                        download_mgr_empty_view.setVisibility(View.VISIBLE);
+                        CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
                         search_game_hot.setVisibility(View.GONE);
                         search_game_list.setVisibility(View.GONE);
                     }
@@ -314,7 +314,7 @@ public class ActSearchGame extends BaseActivity {
         adapter.notifyDataSetChanged();
         if (list.isEmpty()) {
             if(hotList.isEmpty()) {
-                download_mgr_empty_view.setVisibility(View.VISIBLE);
+                CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
             } else {
                 search_game_hot.setVisibility(View.VISIBLE);
             }

+ 94 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActSetting.java

@@ -0,0 +1,94 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.app.Activity;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import com.kfzs.duanduan.utils.ApkUtils;
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.model.entity.DialogConfig;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import rx.functions.Action1;
+
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_CLEAN;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_CLEAN_SURE;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_UPGRADE;
+
+/**
+ * Created by realicing on 2018/04/.
+ * realicing@sina.com
+ */
+public class ActSetting extends BaseActivity {
+
+    private Activity activity;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.act_setting;
+    }
+
+    @Override
+    public void initView() {
+        activity = this;
+        TitleBarUtils.getInstance()
+                .setTitle(this, "设置")
+                .setTitleFinish(this);
+
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+    @Override
+    public void initData() {
+        initCacheSize();
+    }
+
+    @OnClick({R.id.abourt_us_layout, R.id.clear_layout, R.id.tv_submit})
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.abourt_us_layout://关于我们
+                Jump2View.getInstance().goNewAboutUs(activity);
+                break;
+            case R.id.clear_layout://清除缓存
+                ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("清除缓存").setMsg("所有本地的缓存都会被清理").setBtnRightText("取消")
+                        .setBtnLeftText("确定").setBtnLeftOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View view) {
+                                USER_CLEAN_SURE.onEvent();
+                                SysAppUtil.clearCache(new Action1<Object>() {
+                                    @Override
+                                    public void call(Object o) {
+                                        G.showToast("清理缓存完成");
+                                        initCacheSize();
+                                    }
+                                });
+                            }
+                        }));
+                USER_CLEAN.onEvent();
+                break;
+            case R.id.tv_submit:
+                CommonUtil.getInstance().loginOut((BaseActivity) activity);
+                break;
+        }
+    }
+    @BindView(R.id.clear_item_tv)
+    TextView clear_item_tv;
+    private void initCacheSize() {
+        String size = SysAppUtil.getAppCacheSize();
+        clear_item_tv.setText(TextUtils.isEmpty(size) || TextUtils.equals("0K",size) ? "无需清理" : size);
+    }
+
+}

+ 220 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActSheepApkList.java

@@ -0,0 +1,220 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.text.format.Formatter;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.arialyy.aria.util.CommonUtil;
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.model.entity.ApkInfo;
+import com.sheep.gamegroup.model.entity.AppInfo;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.StringUtils;
+import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.ZipChannelUtil;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.List;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
+
+/**
+ * Created by realicing on 2018/6/19.
+ * realicing@sina.com
+ */
+public class ActSheepApkList extends BaseActivity {
+    @Override
+    protected int getLayoutId() {
+        return R.layout.act_user_label_list;
+    }
+
+
+    @BindView(R.id.user_label_list)
+    RecyclerView user_label_list;
+
+    @BindView(R.id.user_label_commit_tv)
+    TextView user_label_commit_tv;
+
+    @Override
+    public void initView() {
+        TitleBarUtils
+                .getInstance()
+                .setTitle(this, "Sheep目录Apk渠道测试")
+                .setTitleFinish(this);
+        user_label_commit_tv.setVisibility(View.GONE);
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+
+    @Override
+    public void initData() {
+        loadData(getList());
+    }
+
+    private List<ApkInfo> getList() {
+        List<ApkInfo> apkInfoList = ListUtil.emptyList();
+
+        File dir = new File(DIR);
+        File[] files = dir.listFiles();
+        if(files != null)
+            for (File file : files) {
+                apkInfoList.add(getAppInfo(getApplicationContext(), file));
+            }
+        return apkInfoList;
+    }
+    public static ApkInfo getAppInfo(Context context, File file) {
+        ApkInfo apkInfo = new ApkInfo();
+        PackageManager packageManager = context.getPackageManager();
+        String absolutePath = file.getAbsolutePath();
+        PackageInfo pkgInfo = getPackageInfo(context, absolutePath);
+        if (pkgInfo == null) {
+            return apkInfo;
+        }
+        pkgInfo.applicationInfo.sourceDir = absolutePath;
+        pkgInfo.applicationInfo.publicSourceDir = absolutePath;
+
+        AppInfo appInfo = new AppInfo();
+        //程序包名
+        String packageName = pkgInfo.packageName;
+        appInfo.setPackageName(packageName);
+        //获取到图标
+        Drawable icon = pkgInfo.applicationInfo.loadIcon(packageManager);
+        appInfo.setIcon(icon);
+        //获取到应用的名字
+        String appName = pkgInfo.applicationInfo.loadLabel(packageManager).toString();
+        appInfo.setAppName(appName);
+        //获取到安装包的路径
+        appInfo.setSourceDir(absolutePath);
+        //获取到安装apk的大小
+        long apkSize = file.length();
+        //格式化apk的大小
+        appInfo.setApkSize(Formatter.formatFileSize(SheepApp.getInstance(),apkSize));
+        appInfo.setSha1(SysAppUtil.getSHA1(pkgInfo));
+
+        apkInfo.setAppInfo(appInfo);
+        apkInfo.setFile(file);
+        try {
+            String comment = ZipChannelUtil.readQUA(apkInfo.getFile());
+            apkInfo.setComment(comment);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return apkInfo;
+    }
+    //得到PackageInfo对象
+    public static PackageInfo getPackageInfo(Context context, String apkFilepath) {
+        PackageManager pm = context.getPackageManager();
+        PackageInfo pkgInfo = null;
+        try {
+            pkgInfo = pm.getPackageArchiveInfo(apkFilepath, PackageManager.GET_ACTIVITIES | PackageManager.GET_SIGNATURES);
+        } catch (Exception e) {
+            // should be something wrong with parse
+            e.printStackTrace();
+        }
+        return pkgInfo;
+    }
+    private void loadData(List<ApkInfo> list) {
+        user_label_list.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
+        user_label_list.setAdapter(new AdbCommonRecycler<ApkInfo>(SheepApp.getInstance(), list){
+
+            @Override
+            public int getViewIdByType(int type) {
+                return R.layout.app_info_item;
+            }
+
+            @Override
+            public void convert(ViewHolder holder, final ApkInfo item) {
+                ImageView app_info_iv = holder.itemView.findViewById(R.id.app_info_iv);
+                TextView app_info_name_tv = holder.itemView.findViewById(R.id.app_info_name_tv);
+                TextView app_info_package_name_tv = holder.itemView.findViewById(R.id.app_info_package_name_tv);
+                TextView app_info_size_tv = holder.itemView.findViewById(R.id.app_info_size_tv);
+                TextView app_info_path_tv = holder.itemView.findViewById(R.id.app_info_path_tv);
+
+                final AppInfo appInfo = item.getAppInfo();
+                if(appInfo == null){
+                    return;
+                }
+                app_info_iv.setImageDrawable(appInfo.getIcon());
+                ViewUtil.setText(app_info_name_tv, appInfo.getAppName());
+                app_info_name_tv.append(CommonUtil.getFileMD5(item.getFile())+"\n"+item.getComment());
+                ViewUtil.setText(app_info_package_name_tv, appInfo.getPackageName());
+                ViewUtil.setText(app_info_size_tv, appInfo.getApkSize());
+                ViewUtil.setText(app_info_path_tv, appInfo.getSourceDir()+"\n"+appInfo.getSha1());
+
+                holder.itemView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        try {
+                            onClickItem(item);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                            G.showToast(e.getMessage());
+                        }
+                    }
+                });
+                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
+                    @Override
+                    public boolean onLongClick(View view) {
+                        StringUtils.CopyText(appInfo.getSha1());
+                        G.showToast("复制sha1成功:"+appInfo.getSha1());
+                        return true;
+                    }
+                });
+            }
+        });
+
+    }
+
+    private void onClickItem(final ApkInfo apkInfo) throws IOException {
+        if(TextUtils.isEmpty(apkInfo.getComment())){
+            String comment = "976873";
+            ZipChannelUtil.writeQUA(apkInfo.getFile(), comment);
+            apkInfo.setComment(comment);
+            user_label_list.getAdapter().notifyDataSetChanged();
+            G.showToast("给apk添加zip注释作为渠道成功");
+        } else {
+            ZipChannelUtil.delQUA(apkInfo.getFile());
+            G.showToast("成功删除渠道:"+apkInfo.getComment());
+            apkInfo.setComment("");
+            user_label_list.getAdapter().notifyDataSetChanged();
+        }
+    }
+
+    @OnClick({R.id.user_label_commit_tv})
+    public void onViewClicked(View view) {
+        switch (view.getId()) {
+            case R.id.user_label_commit_tv:
+                toCommit();
+                break;
+        }
+    }
+
+    private void toCommit() {
+    }
+
+}

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/AskGetMoneyAct.java

@@ -150,7 +150,7 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
                         @Override
                         public void onClick(View view) {
                             QR_COPY.onEvent();
-                            StringUtils.CopyText(AskGetMoneyAct.this, userEntity.getShareLink());
+                            StringUtils.CopyText(userEntity.getShareLink());
                             G.showToast("复制链接成功");
                         }
                     }));

+ 8 - 5
app/src/main/java/com/sheep/gamegroup/view/activity/ChangeTelAct.java

@@ -149,6 +149,7 @@ public class ChangeTelAct extends BaseActivity implements PhoneContract.View{
                 });
                 break;
             case 30001:
+            default:
                 break;
         }
         mobiles = SpUtils.getPhone(activity);
@@ -181,6 +182,7 @@ public class ChangeTelAct extends BaseActivity implements PhoneContract.View{
                 break;
             case 30001://新用户必须绑定手机号,正常情况是会在登录成功后
                 Jump2View.getInstance().gotoLoginAgain();
+            default:
                 finish();
                 break;
         }
@@ -405,11 +407,6 @@ public class ChangeTelAct extends BaseActivity implements PhoneContract.View{
     public void bindTelSuccess(BaseMessage o) {
         G.showToast(o);
         switch (where_from){
-            case FROM_SPLASH://非第一次登录(如:登录后直接重启),老用户需要绑定手机号
-                Intent intent = new Intent(activity, ActMain.class);
-                startActivity(intent);
-                finish();
-                break;
             case FROM_LOGIN:
             case 30001:
                 Jump2View.getInstance().checkLabel(activity, new Action1<BaseMessage>() {
@@ -421,6 +418,12 @@ public class ChangeTelAct extends BaseActivity implements PhoneContract.View{
                     }
                 });
                 break;
+            case FROM_SPLASH://非第一次登录(如:登录后直接重启),老用户需要绑定手机号
+                Intent intent = new Intent(activity, ActMain.class);
+                startActivity(intent);
+            default:
+                finish();
+                break;
         }
     }
 

+ 3 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/GameTaskOrderListAct.java

@@ -10,6 +10,8 @@ import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameTaskOrderEnty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.NetUtil;
 import com.sheep.gamegroup.view.adapter.AdpGameTaskOrderList;
 import com.sheep.gamegroup.view.customview.RefreshLayout;
 import com.sheep.jiuyan.samllsheep.R;
@@ -127,8 +129,7 @@ public class GameTaskOrderListAct extends BaseActivity {
                 });
     }
     private void notifyDataSetChanged(){
-        if(listData.isEmpty())
-            empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, listData.isEmpty());
         hideProgress();
         swipe_container.setRefreshing(false);
         adp.notifyDataSetChanged();

+ 3 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/GamemakeMoneyAct.java

@@ -15,6 +15,7 @@ import com.kfzs.duanduan.ActDownloadMgr;
 import com.kfzs.duanduan.event.BigEvent;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.GridViewEntity;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.adapter.AdpTryMakemoney;
@@ -71,7 +72,7 @@ public class GamemakeMoneyAct extends BaseActivity {
 
     @Override
     protected int getLayoutId() {
-        return R.layout.try_makemoney_act_layout;
+        return R.layout.act_game_make_money;
     }
 
     @Override
@@ -125,6 +126,7 @@ public class GamemakeMoneyAct extends BaseActivity {
             }
         });
         pager.setCurrentItem(currentItem);
+        CommonUtil.getInstance().reflex(indicator, activity);
     }
 
     @Override

+ 0 - 149
app/src/main/java/com/sheep/gamegroup/view/activity/HomePageAct.java

@@ -1,149 +0,0 @@
-package com.sheep.gamegroup.view.activity;
-
-import android.app.Activity;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.sheep.gamegroup.di.components.DaggerHomePageComponent;
-import com.sheep.gamegroup.di.modules.HomePageModule;
-import com.sheep.gamegroup.model.entity.BaseMessage;
-import com.sheep.gamegroup.model.entity.UserEntity;
-import com.sheep.gamegroup.presenter.HomePageContract;
-import com.sheep.gamegroup.presenter.HomePagePresenter;
-import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.MyDbManager;
-import com.sheep.gamegroup.util.MyListview;
-import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.gamegroup.absBase.BaseActivity;
-import com.sheep.jiuyan.samllsheep.utils.G;
-
-import javax.inject.Inject;
-
-import butterknife.BindView;
-import butterknife.OnClick;
-
-/**
- * Created by ljy on 2018/3/19.
- */
-
-public class HomePageAct extends BaseActivity implements HomePageContract.View{
-    @BindView(R.id.icon_img_iv)
-    ImageView iconImgIv;
-    @BindView(R.id.name_tv)
-    TextView nameTv;
-    @BindView(R.id.sheep_num_tv)
-    TextView sheepNumTv;
-    @BindView(R.id.user_layout)
-    RelativeLayout userLayout;
-    @BindView(R.id.withdrawal)
-    TextView withdrawal;
-    @BindView(R.id.my_price)
-    TextView myPrice;
-    @BindView(R.id.my_all_price)
-    TextView myAllPrice;
-    @BindView(R.id.try_play_layout)
-    LinearLayout tryPlayLayout;
-    @BindView(R.id.invitation_layout)
-    LinearLayout invitationLayout;
-    @BindView(R.id.lying_layout)
-    LinearLayout lyingLayout;
-    @BindView(R.id.listview)
-    MyListview listview;
-
-    @Inject
-    HomePagePresenter pagePresenter;
-    private Activity activity;
-    private UserEntity userEntity;
-
-
-    Handler mHanderl = new Handler(){
-        @Override
-        public void handleMessage(Message msg) {
-            super.handleMessage(msg);
-            myPrice.setText(userEntity.getBalance()+" 元");
-            myAllPrice.setText("累计资产 "+userEntity.getTotal_asset()+" 元");
-            nameTv.setText(userEntity.getNickname()+"");//绵羊号:123456789
-            sheepNumTv.setText("绵羊号:"+userEntity.getInvitation_code());
-        }
-    };
-    @Override
-    protected int getLayoutId() {
-        return R.layout.homepage_act_layout;
-    }
-
-    @Override
-    public void initView() {
-        activity = this;
-        DaggerHomePageComponent.builder()
-                .netComponent(SheepApp.get(this).getNetComponent())
-                .homePageModule(new HomePageModule(this))
-                .build()
-                .inject(this);
-    }
-
-    @Override
-    public void initListener() {
-
-    }
-
-    @Override
-    public void initData() {
-        pagePresenter.getUserInfo();
-
-    }
-
-    @OnClick({R.id.icon_img_iv, R.id.user_layout, R.id.withdrawal, R.id.try_play_layout, R.id.invitation_layout, R.id.lying_layout})
-    public void onViewClicked(View view) {
-        switch (view.getId()) {
-            case R.id.icon_img_iv:
-                break;
-            case R.id.user_layout:
-                Jump2View.getInstance().goPersonnalCenterView(activity, null);
-                break;
-            case R.id.withdrawal:
-                Jump2View.getInstance().tryGoWithdrawal(activity, userEntity);
-                break;
-            case R.id.try_play_layout:
-                Jump2View.getInstance().goTryplayView(activity, null);
-                break;
-            case R.id.invitation_layout:
-                Jump2View.getInstance().goAskGetMoney(activity, null);
-                break;
-            case R.id.lying_layout:
-                break;
-        }
-    }
-
-    @Override
-    public void updateData2View(Object o) {
-        if(o == null){
-            return;
-        }
-        BaseMessage baseMessage = (BaseMessage) o;
-        userEntity = JSON.parseObject(JSONObject.toJSONString(baseMessage.getData()), UserEntity.class);
-        try {
-            MyDbManager.getInstance().saveOrUpdateUser(userEntity);
-//            userEntity = MyDbManager.getInstance().dbFindUser();
-            Log.e("------userEntity",userEntity.getNickname()+"|"+userEntity.getMobile()+"");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        mHanderl.sendEmptyMessage(0);
-
-    }
-
-    @Override
-    public void failData2View(Object o) {
-        G.showToast("网络错误");
-
-    }
-}

+ 3 - 3
app/src/main/java/com/sheep/gamegroup/view/activity/MiddleAct.java

@@ -127,9 +127,9 @@ public class MiddleAct extends Activity {
                         case 65://我的资产
                             Jump2View.getInstance().goMyMoney(activity,null);
                             break;
-                        case 66://安全中心
-                            Jump2View.getInstance().goAccountAndSecurit(activity,null);
-                            break;
+//                        case 66://安全中心
+//                            Jump2View.getInstance().goAccountAndSecurit(activity,null);
+//                            break;
                         case 71://浏览器打开web界面: url h5链接
                             Jump2View.getInstance().goWeb(activity, msg.getUrl());
                             break;

+ 2 - 9
app/src/main/java/com/sheep/gamegroup/view/activity/PersonalCenterAct.java

@@ -4,9 +4,11 @@ import android.app.Activity;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
+import android.view.View;
 
 import com.kfzs.duanduan.fragment.FgtPersonalCenter;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
@@ -28,15 +30,6 @@ public class PersonalCenterAct extends BaseActivity {
     public void initView() {
         activity = this;
 
-        TitleBarUtils
-                .getInstance()
-                .setTitle(this, "个人中心")
-                .setTitleColor(this, getResources().getColor(R.color.white))
-                .setTitleListen(this, R.drawable.narrow_back_white, null)
-                .setTitleBackgroud(this, R.drawable.sp_bg_gradient_blue_nocorners)
-                .setShowOrHideLine(this, false)
-                .setTitleFinish(this);
-
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         Bundle bundle = new Bundle();
         Fragment fragment = getSupportFragmentManager().findFragmentByTag("tag");

+ 95 - 44
app/src/main/java/com/sheep/gamegroup/view/activity/PersionInfoAct.java

@@ -1,9 +1,10 @@
 package com.sheep.gamegroup.view.activity;
 
+import android.app.Activity;
 import android.content.Intent;
+import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSONObject;
@@ -11,16 +12,19 @@ import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
 import com.sheep.gamegroup.absBase.AbsChooseImageActivity;
 import com.sheep.gamegroup.event.ImageHeadChange;
+import com.sheep.gamegroup.event.MoneyChange;
 import com.sheep.gamegroup.event.UserNameChange;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.util.AppUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
 import org.greenrobot.eventbus.EventBus;
@@ -35,6 +39,8 @@ import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
 import rx.schedulers.Schedulers;
 
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_PHONE;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.BIND_WX;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_INFO_AVATAR;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_INFO_NAME;
 
@@ -43,28 +49,18 @@ import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_INFO_NAME;
  * Created by Administrator on 2018/3/16.
  */
 
-public class PersionInfoAct extends AbsChooseImageActivity {
+public class PersonalInfoAct extends AbsChooseImageActivity {
 
     UserEntity mEntity;
-    @BindView(R.id.tv_name)
-    TextView tvName;
-    @BindView(R.id.tv_nike)
-    TextView tvNike;
-    @BindView(R.id.tv_sheep_id)
-    TextView tvSheepId;
-    @BindView(R.id.tv_qr)
-    ImageView tvQr;
-    @BindView(R.id.tv_qr_small)
-    ImageView tv_qr_small;
-    @BindView(R.id.rl_qr)
-    RelativeLayout rlQr;
-
-    @BindView(R.id.rl_head)
-    RelativeLayout rl_head;
-    @BindView(R.id.iv_head_right)
-    ImageView ivHeadRight;
-    @BindView(R.id.layout_more1)
-    RelativeLayout layout_more1;
+    @BindView(R.id.personal_info_name)
+    TextView personal_info_name;
+    @BindView(R.id.personal_info_code)
+    TextView personal_info_code;
+    @BindView(R.id.personal_info_qr)
+    ImageView personal_info_qr;
+
+    @BindView(R.id.personal_info_avatar)
+    ImageView personal_info_avatar;
 
 
     @Override
@@ -72,8 +68,10 @@ public class PersionInfoAct extends AbsChooseImageActivity {
         return R.layout.xpersion_info_act_layout;
     }
 
+    private Activity activity;
     @Override
     public void initView() {
+        activity = this;
         ButterKnife.bind(this);
         TitleBarUtils
                 .getInstance()
@@ -86,6 +84,12 @@ public class PersionInfoAct extends AbsChooseImageActivity {
 
     }
 
+    @BindView(R.id.personal_info_phone)
+    TextView personal_info_phone;
+    @BindView(R.id.personal_info_wx)
+    TextView personal_info_wx;
+    @BindView(R.id.personal_info_authentication)
+    TextView personal_info_authentication;
     @Override
     public void initData() {
         Intent i = getIntent();
@@ -99,27 +103,57 @@ public class PersionInfoAct extends AbsChooseImageActivity {
                 }
             }
             if(mEntity != null) {
-                tvNike.setText(mEntity.getNickname());
-                tvSheepId.setText(mEntity.getInvitation_code());
+                personal_info_name.setText(mEntity.getNickname());
+                personal_info_code.setText(mEntity.getInvitation_code());
 
-                Glide.with(PersionInfoAct.this)
+                Glide.with(PersonalInfoAct.this)
                         .load(AppUtil.getQRLink(mEntity.getShareLink(), 90))
-                        .into(tvQr);
-                Glide.with(PersionInfoAct.this)
-                        .load("http://cdngame.kuaifazs.com/icon.png")
-                        .apply(new RequestOptions().override(23))
-                        .into(tv_qr_small);
-
-                Glide.with(PersionInfoAct.this)
-                        .load(mEntity.getAvatar())
-                        .apply(new RequestOptions().placeholder(R.drawable.icon))
-                        .into(ivHeadRight);
+                        .into(personal_info_qr);
+                GlideImageLoader.setAvatar(personal_info_avatar, mEntity.getAvatar());
+                //账号与安全
+
+                if (TextUtils.isEmpty(mEntity.getMobile())) {
+                    personal_info_phone.setText("未绑定");
+                } else {
+                    personal_info_phone.setText(mEntity.getMobile());
+                    SpUtils.savePhone(activity, mEntity.getMobile());
+                }
+
+                if (TextUtils.isEmpty(mEntity.getWx_nickname())) {
+                    if(TextUtils.isEmpty(mEntity.getWx_openid())) {
+                        personal_info_wx.setText("未绑定");
+                    } else {
+                        personal_info_wx.setText("");
+                    }
+                } else {
+                    personal_info_wx.setText(mEntity.getWx_nickname());
+                    SpUtils.saveWeixin(activity, mEntity.getWx_nickname());
+                }
+
+                refalshAuther(mEntity);
+                MoneyChange change=new MoneyChange();
+                change.setBalance(mEntity.getBalance()+"");
+                change.setTotal_asset(mEntity.getTotal_asset()+"");
             }
         }
 
+
         EventBus.getDefault().register(this);
 
     }
+    private  void  refalshAuther(UserEntity entity ){
+        boolean isBanck = TextUtils.isEmpty(entity.getBank_card());
+        boolean isId_number = TextUtils.isEmpty(entity.getId_number());
+        boolean isRoalName = TextUtils.isEmpty(entity.getReal_name());
+        if (isId_number && isRoalName) {
+            personal_info_authentication.setText("未认证");
+        } else if (!isId_number && !isRoalName) {
+            personal_info_authentication.setText("已认证");
+        } else {
+            personal_info_authentication.setText("认证中");
+        }
+
+    }
 
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -127,30 +161,47 @@ public class PersionInfoAct extends AbsChooseImageActivity {
         UserEntity user = mEntity;
         user.setNickname(done.getNikeName());
         mEntity = user;
-        tvNike.setText(mEntity.getNickname());
+        personal_info_name.setText(mEntity.getNickname());
 
     }
 
 
-    @OnClick({R.id.layout_more1, R.id.rl_qr, R.id.rl_head})
+    @OnClick({ R.id.personal_info_avatar_container, R.id.personal_info_name_container, R.id.personal_info_qr_container,R.id.personal_info_phone_container, R.id.personal_info_wx_container, R.id.personal_info_authentication_container})
     public void onClick(View view) {
         if(mEntity == null){
             G.showToast(R.string.loading_data);
             return;
         }
         switch (view.getId()) {
-            case R.id.layout_more1:
-                Intent i = new Intent(PersionInfoAct.this, ReNameActivity.class);
+            case R.id.personal_info_avatar_container://头像
+                showChooseDialog();
+                USER_INFO_AVATAR.onEvent();
+                break;
+            case R.id.personal_info_name_container:
+                Intent i = new Intent(PersonalInfoAct.this, ReNameActivity.class);
                 i.putExtra("name", mEntity.getNickname());
                 startActivity(i);
                 USER_INFO_NAME.onEvent();
                 break;
-            case R.id.rl_qr:
-                ViewUtil.showQR(PersionInfoAct.this, mEntity.getShareLink());
+            case R.id.personal_info_qr_container:
+                ViewUtil.showQR(PersonalInfoAct.this, mEntity.getShareLink());
                 break;
-            case R.id.rl_head:
-                showChooseDialog();
-                USER_INFO_AVATAR.onEvent();
+            case R.id.personal_info_phone_container:   //跳转到绑定手机号
+                Jump2View.getInstance().goBindPhone(activity, null);
+                BIND_PHONE.onEvent();
+                break;
+            case R.id.personal_info_wx_container:  ////跳转到微信
+                if(mEntity == null){
+                    G.showToast(R.string.loading_data);
+                } else if(TextUtils.isEmpty(mEntity.getWx_openid())) {
+                    Jump2View.getInstance().goNoBindWx(activity, ChangeWxOrTelAct.TYPE_NORMAL);
+                } else {
+                    G.showToast("您已经绑定微信");
+                }
+                BIND_WX.onEvent();
+                break;
+            case R.id.personal_info_authentication_container: ////跳转授权
+                Jump2View.getInstance().goRealNameAuther(activity, mEntity, 0);
                 break;
         }
     }
@@ -162,7 +213,7 @@ public class PersionInfoAct extends AbsChooseImageActivity {
 
     @Override
     protected void onGetImage(String path) {
-        GlideImageLoader.circleImage(ivHeadRight, path, R.drawable.icon);
+        GlideImageLoader.circleImage(personal_info_avatar, path, R.drawable.icon);
     }
 
     @Override

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/SignRecordAct.java

@@ -17,6 +17,7 @@ import com.sheep.gamegroup.model.entity.PunchLogEntity;
 import com.sheep.gamegroup.model.entity.StatisticsEntity;
 import com.sheep.gamegroup.presenter.SignRecordContract;
 import com.sheep.gamegroup.presenter.SignRecordPresenter;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.MathUtil;
@@ -137,7 +138,7 @@ public class SignRecordAct extends BaseActivity implements SignRecordContract.Vi
         if(index == 3){
 
             if(ListUtil.isEmpty(mDatas)){
-                empty_view.setVisibility(View.VISIBLE);
+                CommonUtil.getInstance().updateEmptyView(empty_view, true);
                 recyclerview.setVisibility(View.GONE);
             }else{
                 empty_view.setVisibility(View.GONE);

+ 60 - 50
app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java

@@ -20,12 +20,12 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.VideoView;
 
-import com.alibaba.fastjson.JSON;
 import com.bumptech.glide.Glide;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.Advertising;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
@@ -35,7 +35,7 @@ import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
-import org.afinal.simplecache.ACache;
+import org.afinal.simplecache.ApiKey;
 
 import java.util.List;
 
@@ -78,6 +78,8 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     protected String[] needPermissions = {
             Manifest.permission.WRITE_EXTERNAL_STORAGE,
             Manifest.permission.READ_EXTERNAL_STORAGE,
+            Manifest.permission.ACCESS_COARSE_LOCATION,
+            Manifest.permission.ACCESS_FINE_LOCATION,
             Manifest.permission.READ_PHONE_STATE
     };
     private RxjavaCountDownTimer timer;
@@ -107,7 +109,7 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
             EasyPermissions.requestPermissions(this, "应用需要这些权限", PERMISSON_REQUESTCODE, needPermissions);
         } else {
             isRequestCodePermissions = false;
-            sendHandlerMessages();
+            sendHandlerMessages(1000);
         }
     }
 
@@ -115,8 +117,52 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
         @Override
         public void handleMessage(Message msg) {
             super.handleMessage(msg);
-            if(!isRequestCodePermissions && !isLoaddingData && timerIsFinish())
-                gotoNext();
+            switch (msg.what){
+                case 0:
+                    if(!isRequestCodePermissions && !isLoaddingData && timerIsFinish())
+                        gotoNext();
+                    break;
+                case 1:
+                    if(SysAppUtil.isNewSmallSheep(false)){//新版本只显示引导页面,不展示弹窗和开屏广告
+                        isLoaddingData = false;
+                        sendHandlerMessages(200);
+                    } else {
+                        Advertising cacheAdvertising = CommonUtil.getInstance().getCacheResult(ApiKey.advertisements(1), Advertising.class);
+                        if (cacheAdvertising != null) {
+                            isLoaddingData = false;
+                            advertising = cacheAdvertising;
+                            try {
+                                loadAdvertising();
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        } else {
+                            SheepApp.getInstance().getNetComponent().getApiService().getAdvertising(1)
+                                    .subscribeOn(Schedulers.io())
+                                    .observeOn(AndroidSchedulers.mainThread())
+                                    .subscribe(new SheepSubscriber<BaseMessage>(activity) {
+                                        @Override
+                                        public void onNext(BaseMessage baseMessage) {
+                                            CommonUtil.getInstance().resetCacheTime(ApiKey.advertisements(1), 3600*5);//开屏广告最多缓存5个小时
+                                            isLoaddingData = false;
+                                            advertising = baseMessage.getData(Advertising.class);
+                                            try {
+                                                loadAdvertising();
+                                            } catch (Exception e) {
+                                                e.printStackTrace();
+                                            }
+                                        }
+
+                                        @Override
+                                        public void onError(BaseMessage baseMessage) {
+                                            isLoaddingData = false;
+                                            sendHandlerMessages(10);
+                                        }
+                                    });
+                        }
+                    }
+                    break;
+            }
 
         }
     };
@@ -126,7 +172,7 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     }
 
     private void gotoNext() {
-        if (!isClick && btnJoin.isEnabled()) {
+        if (!isClick) {
             isClick = true;
             Jump2View.getInstance().gotoGuide(activity);
         }
@@ -143,18 +189,7 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     public void initView() {
         activity = this;
         GlideImageLoader.setImage(login_bg_img, "http://cdngame.kuaifazs.com/login_bg_img.png");
-        ACache mCache = ACache.get(this);
-        Object object = mCache.getAsObject(Advertising.class.getSimpleName());
-        if(object instanceof Advertising ){
-            advertising = (Advertising) object;
-            try {
-                loadAdvertising();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } else {
-            sendHandlerMessages();
-        }
+        mHandler.sendEmptyMessageDelayed(1, 500);
     }
 
     @Override
@@ -165,34 +200,11 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     private Advertising advertising;
     @Override
     public void initData() {
-        if(SysAppUtil.isNewSmallSheep(false)){//新版本只显示引导页面,不展示弹窗和开屏广告
-            isLoaddingData = false;
-        }
-        SheepApp.getInstance().getNetComponent().getApiService().getAdvertising(1)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new SheepSubscriber<BaseMessage>(activity) {
-                    @Override
-                    public void onNext(BaseMessage baseMessage) {
-                        Advertising newAdvertising = baseMessage.getData(Advertising.class);
-                        isLoaddingData = false;
-
-                        if(newAdvertising != null && newAdvertising.isImage()) {
-                            ACache mCache = ACache.get(activity);
-                            mCache.put(Advertising.class.getSimpleName(), newAdvertising);
-                        }
-                    }
-
-                    @Override
-                    public void onError(BaseMessage baseMessage) {
-                        isLoaddingData = false;
-                    }
-                });
     }
 
     private void loadAdvertising() {
         if(advertising.isImage()) {
-            if(!TextUtils.equals("http://staticcdn.kuaifazs.com/upload/static/201807/16/e0/bf/bnjb9S.jpg",advertising.getDisplay_src())) {
+            if(!TextUtils.equals("http://staticcdn.kuaifazs.com/upload/static/201807/25/16/76/L0Om90.jpg",advertising.getDisplay_src())) {
                 Glide.with(activity).load(advertising.getDisplay_src()).into(splash_bg);
             }
 //            btnJoin.setVisibility(View.GONE);
@@ -224,26 +236,24 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
         mHandler.removeMessages(0);
         if(advertising.getShow_time() > 0) {
             splash_skip.setVisibility(View.VISIBLE);
-            timer = RxjavaCountDownTimer.getInstance(BuildConfig.DEBUG ? 1 : advertising.getShow_time())
+            timer = RxjavaCountDownTimer.getInstance(/*BuildConfig.DEBUG ? 10 : */advertising.getShow_time())
                     .setOnTickListener(new RxjavaCountDownTimer.OnTickListener() {
                         @Override
                         public void onFinish() {
-                            splash_skip.setEnabled(true);
                             splash_skip.setVisibility(View.INVISIBLE);//设置为INVISIBLE代表定时器结束
 //                            btnJoin.setVisibility(View.VISIBLE);
                             if (isResume)
-                                sendHandlerMessages();
+                                sendHandlerMessages(10);
                         }
 
                         @Override
                         public void onTicker(long time) {
-                            splash_skip.setEnabled(false);
                             splash_skip.setText(activity.getString(R.string.tip_skip, time));
                         }
                     }).start();
         } else {
 //            btnJoin.setVisibility(View.VISIBLE);
-            sendHandlerMessages();
+            sendHandlerMessages(1000);
         }
     }
     private boolean isResume = false;
@@ -367,12 +377,12 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     public void onActivityReenter(int resultCode, Intent data) {
         super.onActivityReenter(resultCode, data);
         isRequestCodePermissions = false;
-        sendHandlerMessages();
+        sendHandlerMessages(10);
     }
-    private void sendHandlerMessages(){
+    private void sendHandlerMessages(int time){
         try {
             mHandler.removeMessages(0);
-            mHandler.sendEmptyMessageDelayed(0, BuildConfig.DEBUG ? 100 : 2000);
+            mHandler.sendEmptyMessageDelayed(0, /*BuildConfig.DEBUG ? 100 :*/ time);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 68 - 51
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -34,6 +34,7 @@ import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.absBase.AbsChooseImageActivity;
 import com.sheep.gamegroup.di.components.DaggerTaskDetailComponent;
 import com.sheep.gamegroup.di.modules.TaskDetailModule;
+import com.sheep.gamegroup.heler.TaskHelper;
 import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DialogEntity;
@@ -52,7 +53,9 @@ import com.sheep.gamegroup.presenter.TaskDetailPresenter;
 import com.sheep.gamegroup.usage.AppUsageManager;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DeviceUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LocationUtils;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyDbManager;
@@ -125,7 +128,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     @BindView(R.id.detail_item_layout_3)
     LinearLayout detail_item_layout_3;
     @BindView(R.id.item_layout)
-    RelativeLayout item_layout;
+    View item_layout;
     /**
      * 2.6详情改版
      */
@@ -243,22 +246,42 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         taskEty = taskReleaseEty.getTask();
         nameTv.setText(taskReleaseEty.getName() + "");
         priceTv.setText("+" + taskReleaseEty.getBonus() + "元");
-        if(!taskReleaseEty.getDeadline().equals("永久")){
-            dateTv.setText("截至日期:"+TimeUtil.getDate(TimeUtil.FORMAT, Long.valueOf(taskReleaseEty.getDeadline())) + "");
-        }else {
-            dateTv.setText("截至日期:"+taskReleaseEty.getDeadline());
+        if (!taskReleaseEty.getDeadline().equals("永久")) {
+            dateTv.setText("截至日期:" + TimeUtil.getDate(TimeUtil.FORMAT, Long.valueOf(taskReleaseEty.getDeadline())) + "");
+        } else {
+            dateTv.setText("截至日期:" + taskReleaseEty.getDeadline());
         }
         num_tv.setText("剩" + taskReleaseEty.getLast_num() + "份");
 
 
-        Glide.with(SheepApp.mContext)
-                .load(taskEty.getIcon())
-                .apply(new RequestOptions().placeholder(R.drawable.icon))
-                .into(iconIv);
+        GlideImageLoader.setGameImage(iconIv, taskEty.getIcon());
 
 
         detailTaskTv.setVisibility(View.GONE);
 
+
+        setSonVuewShow();
+
+        loadOld();
+
+        //自动审核
+        if (taskEty.getInspect_type() == 3) {
+
+            taskdetail_explain_layout.setVisibility(View.VISIBLE);
+        } else {
+            taskdetail_explain_layout.setVisibility(View.GONE);
+        }
+        /**
+         * detail_task_tv 游戏任务,显示
+         */
+        if (taskEty.isGameTask() && taskEty.isCan_receive_account()) {
+            detailTaskTv.setVisibility(View.VISIBLE);
+            detailTaskTv.setText("领取福利号");
+            detailTaskTv.setBackground(activity.getResources().getDrawable(R.drawable.selector_button_full_main));
+        }
+        updateBottom();
+    }
+    private void updateBottom(){
         bottom_btn_layout.setVisibility(View.VISIBLE);
         btnTaskItem.setVisibility(View.VISIBLE);
         btnUpImag.setVisibility(View.VISIBLE);
@@ -288,22 +311,11 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         if(btn_show)
             bottom_btn_layout.setVisibility(View.GONE);
 
-        setSonVuewShow();
-
-        loadOld();
-
         //任务已经下线
         if(taskReleaseEty.getStatus() == 3 || taskReleaseEty.getStatus() == 4){
             bottom_btn_layout.setVisibility(View.GONE);
         }
 
-        //自动审核
-        if(taskEty.getInspect_type() == 3){
-
-            taskdetail_explain_layout.setVisibility(View.VISIBLE);
-        }else {
-            taskdetail_explain_layout.setVisibility(View.GONE);
-        }
 
         if(gettaskAcceptedEty != null){// && taskEty.getTask_type() == 1000) {//连续任务
             if(!TextUtils.isEmpty(gettaskAcceptedEty.getScreenshots())) {
@@ -346,14 +358,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 btnTaskItem.setVisibility(View.GONE);
             }
         }
-        /**
-         * detail_task_tv 游戏任务,显示
-         */
-        if(taskEty.isGameTask() &&taskEty.isCan_receive_account()){
-            detailTaskTv.setVisibility(View.VISIBLE);
-            detailTaskTv.setText("领取福利号");
-            detailTaskTv.setBackground(activity.getResources().getDrawable(R.drawable.selector_button_full_main));
-        }
     }
     //设置底部按钮状态
     private void setBottomState() {
@@ -604,7 +608,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                             ViewUtil.showGamePayAccount(activity, game_id, taskReleaseEty.getName());
                             return;
                         }
-                    }else if(taskEty.getTask_type() == 1002 ||taskEty.getTask_type() == 1003){
+                    }else if(taskEty.isGameTask()){
                         if(taskEty.isGameReservationCantDownload()){
                             CommonUtil.getInstance().reservationGameTask(activity, taskReleaseEty, null);
                         } else {
@@ -640,7 +644,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 G.showToast(R.string.error_package_link);
                 return;
             }
-            String gps = LocationUtils.getInstance().getLongitudeLatitude(getApplicationContext());
+            String gps = LocationUtils.getInstance().getLongitudeLatitude();
             JSONObject object = new JSONObject();
             object.put("gps", gps);
             long runTime = AppUsageManager.getInstance().getTotalTimeInForeground(taskEty.getPackage_names());
@@ -770,7 +774,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         hideProgress();
         G.showToast(baseMessage.getMsg() + "");
         isGetTaskDesc = false;
-        empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, true);
     }
 
 
@@ -961,21 +965,29 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         if (task.getKey().equals(taskEty.getDownload_link())) {
             //在这里处理任务完成的状态
             btnTaskItem.setText(CommonUtil.START_INSTALL);
-            onResume();
+            freshData();
         }
     }
 
     private boolean isGetTaskDesc = false;
 
-    @Override
-    protected void onResume() {
-        super.onResume();
+    public void freshData() {
         if (taskId != -1 && !isGetTaskDesc && !isFresh) {
             isGetTaskDesc = true;
             accepteTaskDetail(taskId);
         }
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (taskReleaseEty == null){
+            freshData();
+        } else {
+            updateBottom();
+        }
+    }
+
     /**
      * 子任务模块显示
      */
@@ -999,6 +1011,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                     item_exlpain_title.setText(getString(R.string.supplement_explain_n));
                     item_exlpain_conetent.setText(getString(R.string.supplement_explain));
                     sonListviewAdp = new TaskdetailSonListviewAdp(taskEty.getChild(), activity);
+                    TaskHelper.setSelectFlag(taskEty);
                     detail_task_recyclerview.setAdapter(sonListviewAdp);
                     isSuccession = true;
                 }else {
@@ -1008,7 +1021,8 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
 
                 break;
             case 1002:
-            case 1003://游戏任务
+            case 1003:
+            case 1004://游戏任务
                 ems_game_layout.setVisibility(View.VISIBLE);
                 detail_shrae_friend_layout.setVisibility(View.GONE);
                 item_layout.setBackgroundResource(R.drawable.x_shap_shadow_bg_rectgangle_white);
@@ -1022,26 +1036,29 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 break;
         }
 
-        //fuck
-        if(!isSuccession && taskEty.getDescEntityList() != null && taskEty.getDescEntityList().size()>0){
+        //非连续任务且非游戏任务且应用自动审核时长任务  使用TaskdetailSonListviewAdp显示单个任务详情
+        if(!isSuccession && !ListUtil.isEmpty(taskEty.getDescEntityList())){
             List<TaskChild> descEntityArrayList = new ArrayList<>();
             TaskChild taskChild = new TaskChild();
             taskChild.setDescEntityList(taskEty.getDescEntityList());
-            List<ScreenshotsEntity> listS = new ArrayList<>();
-            if(taskEty.getDescEntityList() != null && taskEty.getDescEntityList().size() > 0){
-                listS.clear();
-                for(TaskDescEntity descEntity: taskEty.getDescEntityList()){
-                    if(descEntity.getImg() != null){
-                        ScreenshotsEntity screenshotsEntity = new ScreenshotsEntity();
-                        screenshotsEntity.setImg(descEntity.getImg());
-                        listS.add(screenshotsEntity);
+            if(!taskEty.isGameTask() && !taskEty.isAppAutoCommitTask()) {
+                List<ScreenshotsEntity> listS = new ArrayList<>();
+                if (taskEty.getDescEntityList() != null && taskEty.getDescEntityList().size() > 0) {
+                    listS.clear();
+                    for (TaskDescEntity descEntity : taskEty.getDescEntityList()) {
+                        if (!TextUtils.isEmpty(descEntity.getImg())) {
+                            ScreenshotsEntity screenshotsEntity = new ScreenshotsEntity();
+                            screenshotsEntity.setImg(descEntity.getImg());
+                            screenshotsEntity.setDesc(descEntity.getDesc());
+                            listS.add(screenshotsEntity);
+                        }
                     }
                 }
-            }
-            if(listS != null && listS.size() > 0){
-                taskChild.setScreenshotsList(listS);
-            }else {
-                taskChild.setScreenshotsList(taskEty.getScreenshotsList());
+                if (listS.size() > 0) {
+                    taskChild.setScreenshotsList(listS);
+                } else {
+                    taskChild.setScreenshotsList(taskEty.getScreenshotsList());
+                }
             }
 
             descEntityArrayList.add(taskChild);

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailCreditCardAct.java

@@ -86,7 +86,7 @@ public class TaskDetailCreditCardAct extends AbsChooseImageActivity {
     @BindView(R.id.detail_task_listview)
     MyListview detail_task_listview;
     @BindView(R.id.item_layout)
-    RelativeLayout item_layout;
+    View item_layout;
     private Activity activity;
 
     private TaskEty taskEty;

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/TaskListAct.java

@@ -14,6 +14,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.presenter.TaskListContract;
 import com.sheep.gamegroup.presenter.TaskListPresenter;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.TaskListItemAdp;
@@ -138,8 +139,7 @@ public class TaskListAct extends BaseActivity implements TaskListContract.View {
         notifyDataSetChanged();
     }
     private void notifyDataSetChanged(){
-        if(etyList.isEmpty())
-            empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, etyList.isEmpty());
         hideProgress();
         swipe_container.setRefreshing(false);
         adp.notifyDataSetChanged();

+ 1 - 153
app/src/main/java/com/sheep/gamegroup/view/activity/TryMakeMoneyact.java

@@ -5,20 +5,13 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
-import android.util.Log;
 import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
 
 import com.kfzs.duanduan.ActDownloadMgr;
 import com.kfzs.duanduan.event.BigEvent;
 import com.sheep.gamegroup.absBase.BaseActivity;
-import com.sheep.gamegroup.model.entity.GridViewEntity;
-import com.sheep.gamegroup.util.MyGridview;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.adapter.AdpTryMakemoney;
-import com.sheep.gamegroup.view.adapter.AdpTrymakemoneyTabGridview;
 import com.sheep.gamegroup.view.fragment.FgtTryMakeMoney;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
@@ -26,11 +19,8 @@ import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
-import java.util.ArrayList;
-
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import butterknife.OnClick;
 
 /**
  * 试着赚钱页面
@@ -42,23 +32,9 @@ public class TryMakeMoneyact extends BaseActivity {
     TabLayout indicator;
     @BindView(R.id.pager)
     ViewPager pager;
-    @BindView(R.id.tab_gridview)
-    MyGridview tabGridview;
-    @BindView(R.id.select_tab_iv)
-    ImageView selectTabIv;
-    @BindView(R.id.task_gridview_layout)
-    LinearLayout task_gridview_layout;
     private Activity activity;
 
     private AdpTryMakemoney mAdapter;
-    private String[] titles = new String[]{"推荐任务", "即将开始"};
-
-    private AdpTrymakemoneyTabGridview tabGridviewAdp;
-    private ArrayList<Object> gridviewListAll = new ArrayList<>();
-    private ArrayList<Object> gridviewList = new ArrayList<>();
-    private boolean clickFlag = false;
-    private GridViewEntity gridViewEntity;//选中的
-    private int select;
 
     private int is_succession;//0:一般任务 1:连续任务
 
@@ -95,104 +71,21 @@ public class TryMakeMoneyact extends BaseActivity {
                 });
 
         mAdapter = new AdpTryMakemoney(getSupportFragmentManager(), this);
-        mAdapter.add(FgtTryMakeMoney.newInstance(0), titles[0]);
+        mAdapter.add(FgtTryMakeMoney.newInstance(0), "");
 //        mAdapter.add(FgtTryMakeMoney.newInstance(2), titles[1]);
         pager.setAdapter(mAdapter);
         indicator.setupWithViewPager(pager);
 
-        tabGridviewAdp = new AdpTrymakemoneyTabGridview(activity, gridviewList);
-        tabGridview.setAdapter(tabGridviewAdp);
-        indicator.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
-            @Override
-            public void onTabSelected(TabLayout.Tab tab) {
-                if(tab.getPosition() == 0){
-                    task_gridview_layout.setVisibility(View.GONE);
-                }else {
-                    task_gridview_layout.setVisibility(View.GONE);
-                }
-            }
-
-            @Override
-            public void onTabUnselected(TabLayout.Tab tab) {
-
-            }
-
-            @Override
-            public void onTabReselected(TabLayout.Tab tab) {
-
-            }
-        });
-        /*
-          v2.6
-         */
         indicator.setVisibility(View.GONE);
     }
 
     @Override
     public void initListener() {
-        tabGridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                if(gridViewEntity == gridviewList.get(position)){
-                    return;
-                }
-                select = position;
-                gridViewEntity = (GridViewEntity) gridviewList.get(position);
-                for(int i=0;i<gridviewList.size();i++){
-                    if(position == i){
-                        ((GridViewEntity) gridviewList.get(i)).setSelectState(true);
-                    }else {
-                        ((GridViewEntity) gridviewList.get(i)).setSelectState(false);
-
-                    }
-                    tabGridviewAdp.notifyDataSetChanged();
-                }
-                try{
-                    //刷新界面
-                    mAdapter.getItem(indicator.getSelectedTabPosition()).onResume();
-                    Log.e("-----select position",indicator.getSelectedTabPosition()+"");
-                }catch (Exception e){
-                    e.printStackTrace();
-                }
-            }
-        });
     }
 
     @Override
     public void initData() {
         //真tm神经病 需求改了无数次
-        task_gridview_layout.setVisibility(View.GONE);
-//        if(is_succession == 0){
-//            SheepApp.get(activity)
-//                    .getNetComponent()
-//                    .getApiService()
-//                    .getChildTask(1)
-//                    .subscribeOn(Schedulers.io())
-//                    .observeOn(AndroidSchedulers.mainThread())
-//                    .subscribe(new SheepSubscriber<BaseMessage>(activity) {
-//                        @Override
-//                        public void onError(BaseMessage baseMessage) {
-//                            G.showToast(baseMessage.getMsg()+"");
-//                            task_gridview_layout.setVisibility(View.GONE);
-//                        }
-//
-//                        @Override
-//                        public void onNext(BaseMessage baseMessage) {
-//
-//                            task_gridview_layout.setVisibility(View.VISIBLE);
-//                            List<GridViewEntity> entityList = JSONArray.parseArray(JSONArray.toJSONString(baseMessage.getData()), GridViewEntity.class);
-//                            if(entityList != null){
-//                                gridviewListAll.clear();
-//                                gridviewListAll.add(new GridViewEntity(true, -1, "全部" ));
-//                                gridviewListAll.addAll(entityList);
-//                                setValueList2(clickFlag);
-//                            }
-//                        }
-//                    });
-//        }else {
-//            task_gridview_layout.setVisibility(View.GONE);
-//        }
-
     }
 
     @Override
@@ -202,20 +95,6 @@ public class TryMakeMoneyact extends BaseActivity {
         ButterKnife.bind(this);
     }
 
-    @OnClick(R.id.select_tab_iv)
-    public void onViewClicked() {
-        clickFlag = !clickFlag;
-        setValueList2(clickFlag);
-        tabGridviewAdp.notifyDataSetChanged();
-    }
-
-    /**
-     * 获取tab的值,fragment调用
-     */
-    public GridViewEntity getTabValue(){
-        return gridViewEntity;
-    }
-
     /**
      * 获取is_succession,是否是连续任务
      */
@@ -223,37 +102,6 @@ public class TryMakeMoneyact extends BaseActivity {
         return is_succession;
     }
 
-
-    /**
-     * test
-     * list 赋值
-     */
-    private void setValueList() {
-        gridviewListAll.clear();
-        for (int i = 0; i < 10; i++) {
-            if(i == 0){
-                gridviewListAll.add(new GridViewEntity(true, "click_" + i));
-            }else {
-                gridviewListAll.add(new GridViewEntity(false, "click_" + i));
-            }
-
-        }
-        setValueList2(clickFlag);
-    }
-    private void setValueList2(boolean flag) {
-        gridviewList.clear();
-        if(flag || gridviewListAll.size() <= 4){
-            gridviewList.addAll(gridviewListAll);
-            selectTabIv.setRotation(180);
-        }else {
-            selectTabIv.setRotation(0);
-            for (int i = 0; i < 4; i++) {
-                gridviewList.add(gridviewListAll.get(i));
-            }
-        }
-        tabGridviewAdp.notifyDataSetChanged();
-    }
-
     @Override
     protected void onDestroy() {
         super.onDestroy();

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/WithdrawalListAct.java

@@ -12,6 +12,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.WithdrawalEty;
 import com.sheep.gamegroup.presenter.WithdrawalListContract;
 import com.sheep.gamegroup.presenter.WithdrawalListPresenter;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.view.adapter.WithdrawalListAdp;
 import com.sheep.gamegroup.view.customview.RefreshLayout;
 import com.sheep.jiuyan.samllsheep.R;
@@ -131,8 +132,7 @@ public class WithdrawalListAct extends BaseActivity implements WithdrawalListCon
     }
 
     private void notifyDataSetChanged(){
-        if(etyList.isEmpty())
-            empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, etyList.isEmpty());
         hideProgress();
         swipe_container.setRefreshing(false);
         adp.notifyDataSetChanged();

+ 286 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/AdListAdapter.java

@@ -0,0 +1,286 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.mdad.sdk.mdsdk.AdManager;
+import com.mdad.sdk.mdsdk.common.AdData;
+import com.sheep.gamegroup.model.entity.AdDataSon;
+import com.sheep.gamegroup.util.TimeUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import org.afinal.simplecache.ACache;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Created by hrs on 2018/6/6.
+ */
+
+public class AdListAdapter extends android.support.v7.widget.RecyclerView.Adapter<android.support.v7.widget.RecyclerView.ViewHolder> {
+
+    private boolean isSign = false;
+    private List<AdDataSon> mList;
+    private Context mContext;
+    private final int TYPE_APP_LAYOUT = 0;
+    private final int TYPE_FOOTER_LAYOUT = 1;//底部加载更多动画样式
+    //上拉加载更多状态-默认为0
+    private int load_more_status = 0;
+
+    //上拉加载更多
+    public static final int PULLUP_LOAD_MORE = 0;
+    //正在加载中
+    public static final int LOADING_MORE = 1;
+    //加载完成
+    public static final int LOADING_FINISH = 2;
+
+    public AdListAdapter(Context context, List<AdDataSon> list) {
+        this.mContext = context;
+        this.mList = new ArrayList<>();
+        if (list != null)
+            mList.addAll(list);
+    }
+
+    public AdListAdapter(Context context, List<AdDataSon> list, boolean isSign) {
+        this.mContext = context;
+        this.mList = new ArrayList<>();
+        if (list != null)
+            mList.addAll(list);
+        this.isSign = isSign;
+    }
+    public void setSign(boolean isSign){
+        this.isSign = isSign;
+    }
+
+    public void setData(List<AdDataSon> list) {
+        mList.clear();
+        if (list != null)
+            mList.addAll(list);
+    }
+
+    public void removeData(String id) {
+        int pos = -1;
+        if (mList != null && mList.size() > 0) {
+            for (int i = 0; i < mList.size(); i++) {
+                AdDataSon data = mList.get(i);
+                if (data.getAdData().getId().equals(id)) {
+                    pos = i;
+                    break;
+                }
+            }
+            if (pos > -1) {
+                mList.remove(pos);
+                notifyDataSetChanged();
+            }
+        }
+    }
+
+    public void addData(List<AdDataSon> list) {
+        if (list != null)
+            mList.addAll(list);
+    }
+
+    @Override
+    public android.support.v7.widget.RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view;
+        switch (viewType) {
+            case TYPE_APP_LAYOUT:
+                view = LayoutInflater.from(mContext).inflate(R.layout.wall_list_item, parent, false);
+//                view = LayoutInflater.from(mContext).inflate(R.layout.wall_list_item, parent, false);
+                return new AppViewHolder(view);
+            case TYPE_FOOTER_LAYOUT:
+                view = new TextView(mContext);
+                return new FootViewHolder(view);
+        }
+        return null;
+    }
+
+    @Override
+    public void onBindViewHolder(android.support.v7.widget.RecyclerView.ViewHolder holder, final int position) {
+        if (holder instanceof FootViewHolder) {
+            FootViewHolder footViewHolder = (FootViewHolder) holder;
+            footViewHolder.foot_view_item_tv.setText("");
+        } else if (holder instanceof AppViewHolder) {
+            final AppViewHolder appViewHolder = (AppViewHolder) holder;
+            if (mList != null && mList.size() > 0) {
+                final AdData data = mList.get(position).getAdData();
+                if (data != null) {
+                    appViewHolder.mTitleTv.setText(data.getName());
+                    String description = data.getDescription();
+                    if (TextUtils.isEmpty(description))
+                        description = data.getSign_description();
+                    if (TextUtils.isEmpty(description))
+                        description = "";
+                    appViewHolder.mDesTv.setText(description);
+                    if (!TextUtils.isEmpty(data.getLogo())) {
+                        Glide.with(mContext).load(data.getLogo()).into(appViewHolder.mIconIv);
+                    }
+                    appViewHolder.mRewardTv.setText("+" + data.getPrice());
+                    String size = data.getSize();
+                    if (size == null)
+                        size = " ";
+                    if (!isSign) {
+                        setDownloadTvText(appViewHolder, data);
+                    } else {
+                        String todayTask = data.getDate();
+                        if (todayTask != null && todayTask.equals(TimeStamp2Date(System.currentTimeMillis(), "yyyy-MM-dd"))) {
+                            setDownloadTvText(appViewHolder, data);
+                            appViewHolder.mDownloadTv.setEnabled(true);
+                            appViewHolder.mDownloadTv.setBackgroundColor(Color.parseColor("#d12121"));
+                        } else {
+                            appViewHolder.mDownloadTv.setEnabled(false);
+                            appViewHolder.mDownloadTv.setText("时间还没到喔");
+                            appViewHolder.mDownloadTv.setBackgroundColor(Color.parseColor("#cccccc"));
+                        }
+                    }
+                    if (!TextUtils.isEmpty(data.getTodayTask())) {
+                        appViewHolder.mDateTv.setText(data.getTodayTask());
+                        if(TimeUtil.newInstance().big2Today(data.getTodayTask(), TimeUtil.FORMAT_DD_LINE)){
+                            appViewHolder.mDateTv.setEnabled(true);
+                        }else {
+                            appViewHolder.mDateTv.setEnabled(false);
+                        }
+                        appViewHolder.mDateTv.setVisibility(View.VISIBLE);
+                    } else {
+                        appViewHolder.mDateTv.setVisibility(View.GONE);
+                    }
+                    appViewHolder.mDownloadTv.setOnClickListener(new View.OnClickListener() {
+
+                        @Override
+                        public void onClick(View view) {
+                            /**
+                             * 签到任务传1,非签到任务传0
+                             */
+                            AdManager.getInstance(mContext).openOrDownLoadApps((Activity) mContext, data, isSign ? 1 : 0);
+                        }
+                    });
+                }
+            }
+        }
+    }
+
+    private void setDownloadTvText(AppViewHolder appViewHolder, AdData data) {
+        if (isAppInstalled(mContext, data.getPackage_name())) {
+            appViewHolder.mDownloadTv.setText("继续体验");
+        } else {
+            String downloadState = ACache.get(SheepApp.getInstance()).getAsString(String.format(Locale.CHINA, "%s%s", AdManager.class.getSimpleName(), data.getId()));
+            if (downloadState == null) {
+                appViewHolder.mDownloadTv.setText("立即下载");
+            } else {
+                switch (downloadState) {
+                    case "onDownloadStart":
+                        appViewHolder.mDownloadTv.setText("正在下载");
+                        break;
+                    case "onDownloadSuccess":
+                        appViewHolder.mDownloadTv.setText("立即安装");
+                        break;
+                    case "onDownloadFail":
+                    default:
+                        appViewHolder.mDownloadTv.setText("立即下载");
+                        break;
+                }
+            }
+        }
+    }
+
+    // 将Unix时间戳转变为日期,如调用TimeStampToDate("1252639886", "yyyy-MM-dd
+    // HH:mm:ss")返回值:2009-11-09 11:31:26
+
+    public static String TimeStamp2Date(Long timestamp, String formats) {
+        String date = "";
+        try {
+            date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));
+
+        } catch (NumberFormatException e) {
+
+        }
+        return date;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        // 最后一个item设置为footerView
+        if (position + 1 == getItemCount()) {
+            return TYPE_FOOTER_LAYOUT;
+        } else {
+            return TYPE_APP_LAYOUT;
+        }
+    }
+
+    public static boolean isAppInstalled(Context context, String packageName) {
+        if (TextUtils.isEmpty(packageName))
+            return false;
+        try {
+            ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName,
+                    PackageManager.GET_UNINSTALLED_PACKAGES);
+            if (info == null) {
+                return false;
+            } else {
+                return true;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            return false;
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        if (mList == null) return 1;
+        return mList.size() + 1;
+    }
+
+    class AppViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder {
+
+        View view;
+        TextView mTitleTv;
+        TextView mDesTv;
+        ImageView mIconIv;
+        TextView mSizeIv;
+        TextView mRewardTv;
+        TextView mDateTv;
+        TextView mTagTv;
+        TextView mDownloadTv;
+        ImageView my_money_item_recharge_amount_iv;
+
+        public AppViewHolder(View itemView) {
+            super(itemView);
+            view = itemView;
+
+            mTitleTv = (TextView) itemView.findViewById(R.id.tv_title);//标题
+            mDesTv = (TextView) itemView.findViewById(R.id.tv_des);//标题
+            mRewardTv = (TextView) itemView.findViewById(R.id.tv_reward);//标题
+            mSizeIv = (TextView) itemView.findViewById(R.id.tv_size);//标题
+            mDateTv = (TextView) itemView.findViewById(R.id.tv_date);//标题
+            mTagTv = (TextView) itemView.findViewById(R.id.tv_tag);//标题
+            mDownloadTv = (TextView) itemView.findViewById(R.id.tv_download);//标题
+            mIconIv = (ImageView) itemView.findViewById(R.id.iv_icon);//标题
+            my_money_item_recharge_amount_iv = (ImageView) itemView.findViewById(R.id.my_money_item_recharge_amount_iv);//标题
+
+        }
+    }
+
+    /**
+     * 底部FootView布局
+     */
+    public static class FootViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder {
+        private TextView foot_view_item_tv;
+
+        public FootViewHolder(View view) {
+            super(view);
+            foot_view_item_tv = (TextView) view;
+        }
+    }
+}

+ 19 - 1
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpGameAccount.java

@@ -8,6 +8,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.kfzs.duanduan.adp.AdpCommonRecy;
@@ -42,6 +43,7 @@ import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_GAME_ACCOUNT_LOO
 public class AdpGameAccount extends AdpCommonRecy<RecyleObj> {
 
     private Context context;
+    private int width;
     public AdpGameAccount(Context context) {
         super(context);
         this.context = context;
@@ -102,13 +104,29 @@ public class AdpGameAccount extends AdpCommonRecy<RecyleObj> {
                 if(item == null){
                     return;
                 }
-                TextView account_tv = holder.itemView.findViewById(R.id.account_tv);
+                final TextView account_tv = holder.itemView.findViewById(R.id.account_tv);
                 TextView state_tv = holder.itemView.findViewById(R.id.state_tv);
                 TextView look_tv = holder.itemView.findViewById(R.id.look_tv);
                 View line_view = holder.itemView.findViewById(R.id.line_view);
                 LinearLayout delete_layout = holder.itemView.findViewById(R.id.delete_layout);
 
+
+
                 account_tv.setText("账号:"+ CommonUtil.getInstance().returnStarData(item.getAccount(), 4, 2, 3));
+
+                account_tv.postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) account_tv.getLayoutParams();
+                        int widths = account_tv.getMeasuredWidth();
+                        if(widths > width){
+                            width = widths;
+                        }
+                        layoutParams.width = width;
+                        layoutParams.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
+                        account_tv.setLayoutParams(layoutParams);
+                    }
+                }, 10);
                 state_tv.setText(item.getTypeName());
                 look_tv.setOnClickListener(new View.OnClickListener() {
                     @Override

+ 2 - 7
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpHomeListGrideview.java

@@ -61,19 +61,14 @@ public class AdpHomeListGrideview extends BaseAdapter {
             holder.gridview_item_name_tv = convertView.findViewById(R.id.gridview_item_name_tv);
             holder.gridview_item_detail_tv = convertView.findViewById(R.id.gridview_item_detail_tv);
             holder.gridview_item_icon_iv = convertView.findViewById(R.id.gridview_item_icon_iv);
-            // 获取屏幕宽度
-            int W = G.WIDTH <G.HEIGHT ? G.WIDTH : G.HEIGHT;
-            int cricleRadius = W / 2 - 40;
-            int h = cricleRadius  / 2 - 20;
-            convertView.setLayoutParams(new AbsListView.LayoutParams(cricleRadius, h));
             convertView.setTag(holder);
         }
         final HomeListEntity entity = getItem(position);
         ViewUtil.setText(holder.hot_tv, entity.getTip());
         holder.hot_tv.setVisibility(entity.hasTip()?View.VISIBLE: View.GONE);
         holder.hot_tv.setTextColor(entity.getTipColor());
-        holder.gridview_item_name_tv.setText(entity.getTitle()+"");
-        holder.gridview_item_detail_tv.setText(entity.getDesc()+"");
+        ViewUtil.setText(holder.gridview_item_name_tv, entity.getTitle());
+        ViewUtil.setText(holder.gridview_item_detail_tv, entity.getDesc());
         Glide.with(context)
                 .load(entity.getIcon())
                 .apply(new RequestOptions().dontAnimate())

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpHomeListListview.java

@@ -71,8 +71,8 @@ public class AdpHomeListListview extends BaseAdapter {
                 .load(entity.getIcon())
                 .apply(new RequestOptions().dontAnimate())
                 .into(holder.q_iv);
-        holder.q_name_tv.setText(entity.getTitle()+"");
-        holder.q_dec_tv.setText(entity.getDesc()+"");
+        ViewUtil.setText(holder.q_name_tv, entity.getTitle());
+        ViewUtil.setText(holder.q_dec_tv, entity.getDesc());
 
         if(position == getCount()-1){
             holder.line_ly_q_view.setVisibility(View.GONE);

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/adapter/TaskListItemAdp.java

@@ -110,7 +110,7 @@ public class TaskListItemAdp extends BaseAdapter {
 //        });
         Glide.with(context)
                 .load(ety.getRelease_task().getTask().getIcon())
-                .apply(new RequestOptions().placeholder(R.mipmap.x_ic_def_head))
+                .apply(new RequestOptions().placeholder(R.mipmap.icon))
                 .into(holder.icon_iv);
         return convertView;
     }

+ 15 - 60
app/src/main/java/com/sheep/gamegroup/view/adapter/TaskdetailSonListviewAdp.java

@@ -20,7 +20,9 @@ import com.sheep.gamegroup.model.entity.ScreenshotsEntity;
 import com.sheep.gamegroup.model.entity.TaskChild;
 import com.sheep.gamegroup.model.entity.TaskDescEntity;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.MyListview;
+import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
@@ -157,89 +159,48 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
         }
 
         /*
-          holder.recycler_screenshot_view.setAdapter(new ArrayAdapter<ScreenshotsEntity>(context, R.layout.taskdetail_desc_item_screens, descEntity.getScreenshotsList()){
-        @Override
-        public boolean convert(int position, View convertView, ViewGroup parent, ScreenshotsEntity item) {
-        ScreenshotsEntity taskDescEntity = item;
-        if (taskDescEntity == null)
-        return true;
-        ImageView screens_iv = convertView.findViewById(R.id.screens_iv);
-        TextView screens_tv = convertView.findViewById(R.id.screens_tv);
-
-        screens_iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
-        int with = G.WIDTH / 3;
-        int heigth = with ;
-        screens_iv.setLayoutParams(new LinearLayout.LayoutParams(with, heigth));
-
-        screens_tv.setText("" + taskDescEntity.getDesc());
-        Glide.with(context)
-        .load(taskDescEntity.getImg())
-        .into(screens_iv);
-        return true;
-        }
-        });
-          截图
+         * 截图
          */
-        if(descEntity.getScreenshotsList() != null && descEntity.getScreenshotsList().size() > 0){
+        if(!ListUtil.isEmpty(descEntity.getScreenshotsList())){
             final ArrayList<String> imgListStr = new ArrayList<>();
-            imgListStr.clear();
             for(ScreenshotsEntity s: descEntity.getScreenshotsList()){
                 imgListStr.add(s.getImg());
             }
 
-//        CarouselLayoutManager layoutManager = new CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL,true);
-//        layoutManager.setPostLayoutListener(new CarouselZoomPostLayoutListener());
-//            holder.recycler_screenshot_view.addOnScrollListener(new CenterScrollListener());
-//        layoutManager.setMaxVisibleItems(1);
             LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
             holder.recycler_screenshot_view.setHasFixedSize(true);
             holder.recycler_screenshot_view.setLayoutManager(layoutManager);
-//            holder.recycler_screenshot_view.addItemDecoration(new SpaceItemDecoration(5));
-            holder.recycler_screenshot_view.setAdapter(new RecyclerView.Adapter() {
-                @NonNull
+            holder.recycler_screenshot_view.setAdapter(new AdbCommonRecycler<ScreenshotsEntity>(context, descEntity.getScreenshotsList()){
                 @Override
-                public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
-                    LinearLayout view = (LinearLayout) LayoutInflater.from(context)
-                            .inflate(R.layout.taskdetail_desc_item_screens, viewGroup, false);
-                    RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(view) {
-                        @Override
-                        public String toString() {
-                            return super.toString();
-                        }
-                    };
-                    return viewHolder;
+                public int getViewIdByType(int type) {
+                    return R.layout.taskdetail_desc_item_screens;
                 }
 
                 @Override
-                public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
-                    ScreenshotsEntity taskDescEntity = descEntity.getScreenshotsList().get(i);
+                public void convert(final com.sheep.gamegroup.util.ViewHolder viewHolder, ScreenshotsEntity item) {
                     ImageView screens_iv = viewHolder.itemView.findViewById(R.id.screens_iv);
                     TextView screens_tv = viewHolder.itemView.findViewById(R.id.screens_tv);
-                    screens_iv.setAdjustViewBounds(true);
-                    screens_iv.setScaleType(ImageView.ScaleType.FIT_XY);
-
-                    screens_iv.setLayoutParams(new LinearLayout.LayoutParams(with, with-50));
 
-                    if(TextUtils.isEmpty(taskDescEntity.getDesc())){
+                    if(TextUtils.isEmpty(item.getDesc())){
                         screens_tv.setVisibility(View.GONE);
                     }else {
                         screens_tv.setVisibility(View.VISIBLE);
-                        screens_tv.setText("" + taskDescEntity.getDesc());
+                        screens_tv.setText(item.getDesc());
                         screens_tv.setMaxWidth(with);
                     }
 
+
                     Glide.with(context)
-                            .load(taskDescEntity.getImg())
-                            .apply(new RequestOptions().override(with, with-50))
+                            .load(item.getImg())
                             .into(screens_iv);
                     screens_iv.setOnClickListener(new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
                             try{
-                                if(imgListStr != null && imgListStr.size()>0){
+                                if(!ListUtil.isEmpty(imgListStr)){
                                     PhotoPreview.builder()
                                             .setPhotos(imgListStr)
-                                            .setCurrentItem(i)
+                                            .setCurrentItem(viewHolder.getAdapterPosition())
                                             .setShowDeleteButton(false)
                                             .start((Activity) context, 101);
                                 }
@@ -251,20 +212,14 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
                     });
                 }
 
-                @Override
-                public int getItemCount() {
-                    return descEntity.getScreenshotsList()==null?0:descEntity.getScreenshotsList().size();
-                }
             });
         }
 
 
 
-        final ViewHolder finalHolder = holder;
-        holder.select_tab_iv.setOnClickListener(new View.OnClickListener() {
+        holder.title_item_layout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                boolean flag = descEntity.isSelectFlag();
                 descEntity.setSelectFlag(!descEntity.isSelectFlag());
 //                if(position == 0){
 //                    descEntityArrayList.get(position).setSelectFlag(true);

+ 0 - 199
app/src/main/java/com/sheep/gamegroup/view/adapter/TaskdetailSonRecycleViewAdp.java

@@ -1,199 +0,0 @@
-package com.sheep.gamegroup.view.adapter;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.bumptech.glide.Glide;
-import com.sheep.gamegroup.model.entity.ScreenshotsEntity;
-import com.sheep.gamegroup.model.entity.TaskChild;
-import com.sheep.gamegroup.model.entity.TaskDescEntity;
-import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.SelfCountDownTimer;
-import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.utils.G;
-
-import java.util.List;
-
-/**
- * 任务详情子模块显示adp
- * Created by ljy on 2018/6/12.
- */
-
-public class TaskdetailSonRecycleViewAdp extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
-
-    private List<TaskChild> descEntityArrayList;
-    private Context context;
-
-    public TaskdetailSonRecycleViewAdp(List<TaskChild> descEntityArrayList, Context context) {
-        this.descEntityArrayList = descEntityArrayList;
-        this.context = context;
-    }
-
-    @NonNull
-    @Override
-    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
-        LinearLayout view = (LinearLayout) LayoutInflater.from(context)
-                .inflate(R.layout.taskdetail_recycler_item, viewGroup, false);
-        RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(view) {
-            @Override
-            public String toString() {
-                return super.toString();
-            }
-        };
-        return viewHolder;
-    }
-
-    @Override
-    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
-        final TaskChild descEntity = descEntityArrayList.get(i);
-        if(descEntity == null)
-            return;
-        LinearLayout title_item_layout = viewHolder.itemView.findViewById(R.id.title_item_layout);
-        TextView title_item_tv = viewHolder.itemView.findViewById(R.id.title_item_tv);
-        final ImageView select_tab_iv = viewHolder.itemView.findViewById(R.id.select_tab_iv);
-        TextView item_remaining_time_tv = viewHolder.itemView.findViewById(R.id.item_remaining_time_tv);
-        final RecyclerView item_detail_listview = viewHolder.itemView.findViewById(R.id.item_detail_listview);
-        /*
-          截图
-         */
-        LinearLayout taskdetail_screenshot_layout = viewHolder.itemView.findViewById(R.id.taskdetail_screenshot_layout);
-        RecyclerView recycler_screenshot_view = viewHolder.itemView.findViewById(R.id.recycler_screenshot_view);
-        title_item_layout.setVisibility(View.VISIBLE);
-        CommonUtil.getInstance()
-                    .bindDataTaskDetailSon(descEntity, title_item_tv, i);
-
-        if(descEntity.getDescEntityList() != null && descEntity.getDescEntityList().size() > 0){
-            taskdetail_screenshot_layout.setVisibility(View.VISIBLE);
-        }else {
-            taskdetail_screenshot_layout.setVisibility(View.GONE);
-        }
-        if(i == 0){
-            descEntityArrayList.get(i).setSelectFlag(true);
-            select_tab_iv.setRotation(180);
-            item_detail_listview.setVisibility(View.VISIBLE);
-        }else {
-            descEntityArrayList.get(i).setSelectFlag(false);
-            select_tab_iv.setRotation(0);
-            item_detail_listview.setVisibility(View.GONE);
-        }
-        /*
-          任务详情
-         */
-        if(descEntity.getDemo_time() > 0){
-            CommonUtil.getInstance().getHashMap(item_remaining_time_tv);
-
-            item_remaining_time_tv.setVisibility(View.VISIBLE);
-            SelfCountDownTimer selfCountDownTimer = CommonUtil.getInstance().getCountDownTimer(descEntity.getDemo_time(), item_remaining_time_tv, "剩余试玩时间:");
-            selfCountDownTimer.reset(descEntity.getDemo_time());
-            selfCountDownTimer.start();
-
-            CommonUtil.getInstance().addTimerHashMap(item_remaining_time_tv, selfCountDownTimer);
-        }else {
-            item_remaining_time_tv.setVisibility(View.GONE);
-        }
-        item_detail_listview.setHasFixedSize(true);
-        item_detail_listview.setLayoutManager(new LinearLayoutManager(context));
-        item_detail_listview.setAdapter(new RecyclerView.Adapter() {
-            @NonNull
-            @Override
-            public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
-                LinearLayout view = (LinearLayout) LayoutInflater.from(context)
-                        .inflate(R.layout.textview_layout, viewGroup, false);
-                RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(view) {
-                    @Override
-                    public String toString() {
-                        return super.toString();
-                    }
-                };
-                return viewHolder;
-            }
-
-            @Override
-            public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
-                TaskDescEntity taskDescEntity = descEntity.getDescEntityList().get(i);
-                TextView textView = viewHolder.itemView.findViewById(R.id.textview);
-                textView.setText(taskDescEntity.getStep() + "、" + taskDescEntity.getDesc());
-            }
-
-            @Override
-            public int getItemCount() {
-                return descEntity.getDescEntityList()==null?0:descEntity.getDescEntityList().size();
-            }
-        });
-        /*
-          截图
-         */
-        recycler_screenshot_view.setHasFixedSize(true);
-        recycler_screenshot_view.setLayoutManager(new LinearLayoutManager(context));
-        recycler_screenshot_view.setAdapter(new RecyclerView.Adapter() {
-            @NonNull
-            @Override
-            public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
-                LinearLayout view = (LinearLayout) LayoutInflater.from(context)
-                        .inflate(R.layout.taskdetail_desc_item_screens, viewGroup, false);
-                RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(view) {
-                    @Override
-                    public String toString() {
-                        return super.toString();
-                    }
-                };
-                return viewHolder;
-            }
-
-            @Override
-            public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
-                ScreenshotsEntity taskDescEntity = descEntity.getScreenshotsList().get(i);
-                ImageView screens_iv = viewHolder.itemView.findViewById(R.id.screens_iv);
-                TextView screens_tv = viewHolder.itemView.findViewById(R.id.screens_tv);
-
-                screens_iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
-                int with = G.WIDTH / 3;
-                int heigth = with ;
-                screens_iv.setLayoutParams(new LinearLayout.LayoutParams(with, heigth));
-
-                screens_tv.setText("" + taskDescEntity.getDesc());
-                Glide.with(context)
-                        .load(taskDescEntity.getImg())
-                        .into(screens_iv);
-            }
-
-            @Override
-            public int getItemCount() {
-                return descEntity.getScreenshotsList()==null?0:descEntity.getScreenshotsList().size();
-            }
-        });
-
-
-        select_tab_iv.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                boolean flag = descEntity.isSelectFlag();
-                descEntity.setSelectFlag(!descEntity.isSelectFlag());
-                if(i == 0){
-                    descEntityArrayList.get(i).setSelectFlag(true);
-                    select_tab_iv.setRotation(180);
-                    item_detail_listview.setVisibility(View.VISIBLE);
-                }else {
-                    descEntityArrayList.get(i).setSelectFlag(false);
-                    select_tab_iv.setRotation(0);
-                    item_detail_listview.setVisibility(View.GONE);
-                }
-                notifyDataSetChanged();
-            }
-        });
-
-    }
-
-    @Override
-    public int getItemCount() {
-        return descEntityArrayList == null?0:descEntityArrayList.size();
-    }
-}

+ 94 - 97
app/src/main/java/com/sheep/gamegroup/view/adapter/TryMakeMoneyAdp.java

@@ -16,6 +16,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
 import com.bumptech.glide.request.RequestOptions;
 import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
 import com.kfzs.duanduan.adp.AdpCommonRecy;
@@ -24,6 +25,7 @@ import com.kfzs.duanduan.event.BigEvent;
 import com.kfzs.duanduan.event.EventTypes;
 import com.kfzs.duanduan.services.DownloadTaskService;
 import com.kfzs.duanduan.utils.ApkUtils;
+import com.sheep.gamegroup.heler.TaskHelper;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameAgencyRechargePlatformEntity;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
@@ -35,6 +37,7 @@ import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.presenter.TryMakeMoneyPresenter;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.SelfCountDownTimer;
@@ -78,6 +81,7 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
     @Inject
     TryMakeMoneyPresenter presenter;
     private Context context;
+    private int from;// 1 来自主页
     private int type = 0;//0:推荐 1:热门 2:预约 3:游戏推荐
     private int is_succession;//0:一般任务 1:连续任务
 
@@ -85,6 +89,11 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
         super(context);
         this.context = context;
     }
+    public TryMakeMoneyAdp(Context context, int from) {
+        super(context);
+        this.context = context;
+        this.from = from;
+    }
 
     @Override
     public int getViewIdByType(int type) {
@@ -185,8 +194,7 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                 }
                 viewHolder.itemView.setTag(TAG_ID_TEMP, item.getId());
                 TextView detail_task_tv = viewHolder.itemView.findViewById(R.id.detail_task_tv);
-                viewHolder.itemView.findViewById(R.id.item_title_tv).setVisibility(View.GONE);
-                viewHolder.itemView.findViewById(R.id.item_title_iv).setVisibility(View.GONE);
+                viewHolder.itemView.findViewById(R.id.task_top).setVisibility(View.GONE);
 
                 if(i == getItemCount()-1){
                     viewHolder.itemView.findViewById(R.id.line_tv).setVisibility(View.GONE);
@@ -210,19 +218,14 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                                 false);
                     }
                 });
-                viewHolder.itemView.findViewById(R.id.cancel_task_tv).setVisibility(View.GONE);
 
                 //CommonUtil.getInstance().getCharSequence(context, item.getName(), "")
-                ((TextView)viewHolder.itemView.findViewById(R.id.item_anem_tv)).setText(item.getName()+"");
+                ((TextView)viewHolder.itemView.findViewById(R.id.item_name_tv)).setText(item.getName()+"");
                 final TextView task_type_tv = viewHolder.itemView.findViewById(R.id.task_type_tv);
                 task_type_tv.setVisibility(View.VISIBLE);
                 viewHolder.itemView.findViewById(R.id.item_money).setVisibility(View.GONE);
 
-                Glide.with(context)
-                        .load(item.getIcon()+"")
-                        .apply(new RequestOptions().placeholder(R.mipmap.x_ic_def_head))
-                        .into((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv));
-
+                GlideImageLoader.setGameImage((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv), item.getIcon());
                 if(item.isGameReservationCantDownload()){
                     task_type_tv.setEnabled(false);
                     detail_task_tv.setEnabled(false);
@@ -295,7 +298,7 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                 }
                 task_type_tv.setText(taskTypeTvValue+"");
                 task_type_tv.setTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + item.getDownload_url());
-//                ((TextView)viewHolder.itemView.findViewById(R.id.item_num_tv)).setText("剩余"+ item.getLast_num()+"份");
+//                TaskHelper.setNumText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv), taskReleaseEty);
 //                ((TextView)viewHolder.itemView.findViewById(R.id.item_money)).setText("+"+ item.getBonus() +"元");
                 //任务领取
                 task_type_tv.setOnClickListener(new View.OnClickListener() {
@@ -369,7 +372,7 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
             @NonNull
             @Override
             public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
-                ConstraintLayout view = (ConstraintLayout) LayoutInflater.from(context)
+                View view = LayoutInflater.from(context)
                         .inflate(R.layout.game_agency_recharge_plotform_item, viewGroup, false);
                 RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(view) {
                     @Override
@@ -386,6 +389,8 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                 if(item == null){
                     return;
                 }
+                View padding = viewHolder.itemView.findViewById(R.id.padding);
+                padding.setVisibility(viewHolder.getAdapterPosition() == 0 ? View.VISIBLE : View.GONE);
                 TextView detail_task_tv_center = viewHolder.itemView.findViewById(R.id.detail_task_tv);
                 detail_task_tv_center.setVisibility(View.VISIBLE);
 
@@ -397,14 +402,14 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                 detail_task_tv_center.setText("充值");
 
                 //name
-                ((TextView)viewHolder.itemView.findViewById(R.id.item_anem_tv)).setText(item.getName()+"");
+                ((TextView)viewHolder.itemView.findViewById(R.id.item_name_tv)).setText(item.getName()+"");
 
                 final TextView item_num_tv = viewHolder.itemView.findViewById(R.id.item_num_tv);
                 item_num_tv.setText(item.getDesc()+"");
 
                 Glide.with(context)
                         .load(item.getIcon())
-                        .apply(new RequestOptions().placeholder(R.mipmap.x_ic_def_head))
+                        .apply(new RequestOptions().placeholder(R.mipmap.icon))
                         .into((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv));
 
 
@@ -459,24 +464,19 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                     return;
                 }
                 viewHolder.itemView.setTag(TAG_ID_TEMP, etyList.get(i).getId());
-                ((TextView) viewHolder.itemView.findViewById(R.id.item_anem_tv)).setText(taskReleaseEty.getName() + "");
+                ((TextView) viewHolder.itemView.findViewById(R.id.item_name_tv)).setText(taskReleaseEty.getName() + "");
                 ((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv)).setText(taskReleaseEty.getTask().getDetailShow()+"");
                 ((TextView) viewHolder.itemView.findViewById(R.id.item_money)).setVisibility(View.GONE);
-                Glide.with(context)
-                        .load(taskEty.getIcon() + "")
-                        .apply(new RequestOptions().placeholder(R.mipmap.x_ic_def_head))
-                        .into((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv));
+                GlideImageLoader.setGameImage((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv), taskEty.getIcon());
                 viewHolder.itemView.setEnabled(false);
                 ((TextView) viewHolder.itemView.findViewById(R.id.item_date_tv)).setVisibility(View.GONE);
-                viewHolder.itemView.findViewById(R.id.item_title_tv).setVisibility(View.GONE);
-                viewHolder.itemView.findViewById(R.id.item_title_iv).setVisibility(View.GONE);
+                viewHolder.itemView.findViewById(R.id.task_top).setVisibility(View.GONE);
 
                 if (i == getItemCount() - 1) {
                     viewHolder.itemView.findViewById(R.id.line_tv).setVisibility(View.GONE);
                 } else {
                     viewHolder.itemView.findViewById(R.id.line_tv).setVisibility(View.VISIBLE);
                 }
-                viewHolder.itemView.findViewById(R.id.cancel_task_tv).setVisibility(View.GONE);
 
                 TextView detail_task_tv = viewHolder.itemView.findViewById(R.id.detail_task_tv);
                 TextView detail_task_tv_down = viewHolder.itemView.findViewById(R.id.detail_task_tv_down);
@@ -494,7 +494,7 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                 }else {
                     detail_task_tv.setVisibility(View.VISIBLE);
                     detail_task_tv_down.setVisibility(View.GONE);
-                    detail_task_tv.setText("领取游戏帐号");
+                    detail_task_tv.setText("领取帐号");
                     detail_task_tv.setBackground(context.getResources().getDrawable(R.drawable.sp_bg_gradient_rectangle_blue));
                     detail_task_tv.setEnabled(true);
                     viewHolder.itemView.setEnabled(false);
@@ -565,21 +565,26 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
             }
 
             @Override
-            public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int i) {
+            public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int i) {
                 final TaskReleaseEty taskReleaseEty = ListUtil.getIndex(etyList, i);
                 final TaskEty taskEty;
                 if (taskReleaseEty == null || (taskEty = taskReleaseEty.getTask()) == null) {
                     return;
                 }
                 viewHolder.itemView.setTag(TAG_ID_TEMP, etyList.get(i).getId());
-                ((TextView) viewHolder.itemView.findViewById(R.id.item_anem_tv)).setText(taskReleaseEty.getName() + "");
-                ((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv)).setText("剩余" + taskReleaseEty.getLast_num() + "份");
+                ((TextView) viewHolder.itemView.findViewById(R.id.item_name_tv)).setText(taskReleaseEty.getName() + "");
+                switch (from) {
+                    case 1://来自主页
+                        TaskHelper.setTaskTypeText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv), taskReleaseEty);
+                        TaskHelper.setNumText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv1), taskReleaseEty);
+                        break;
+                    default:
+                        TaskHelper.setNumText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv), taskReleaseEty);
+                        break;
+                }
                 ((TextView) viewHolder.itemView.findViewById(R.id.item_money)).setText("+" + taskReleaseEty.getBonus() + "元");
-                Glide.with(context)
-                        .load(taskEty.getIcon() + "")
-                        .apply(new RequestOptions().placeholder(R.mipmap.x_ic_def_head))
-                        .into((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv));
 
+                GlideImageLoader.setGameImage((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv), taskEty.getIcon());
                 if (isBegin == 1 || type == 2) {//即将开始
                     viewHolder.itemView.setEnabled(false);
                     ((TextView) viewHolder.itemView.findViewById(R.id.item_date_tv)).setText(
@@ -594,40 +599,29 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                     }
                 }
                 if (i == 0) {
-                    viewHolder.itemView.findViewById(R.id.item_title_tv).setVisibility(View.VISIBLE);
-                    viewHolder.itemView.findViewById(R.id.item_title_iv).setVisibility(View.GONE);
-                    String titleStr;
-                    int resourceId = R.mipmap.task_hot_icon;
+                    viewHolder.itemView.findViewById(R.id.task_top).setVisibility(View.VISIBLE);
                     if (isBegin == 1) {
-
-                        titleStr = "即将开始";
+                        ((ImageView) viewHolder.itemView.findViewById(R.id.item_title_iv)).setImageResource(R.mipmap.jijiangks);
+                        ((TextView) viewHolder.itemView.findViewById(R.id.item_title_tv)).setText("即将开始");
                     } else {
                         switch (type) {
-                            case 0:
-                                titleStr = "可接取";
-                                break;
                             case 1:
-                                titleStr = "每日必做";
-                                viewHolder.itemView.findViewById(R.id.item_title_iv).setVisibility(View.VISIBLE);
-                                Glide.with(context)
-                                        .load(resourceId)
-                                        .apply(new RequestOptions().placeholder(resourceId))
-                                        .into((ImageView) viewHolder.itemView.findViewById(R.id.item_title_iv));
+                                ((ImageView) viewHolder.itemView.findViewById(R.id.item_title_iv)).setImageResource(R.mipmap.remenyx);
+                                ((TextView) viewHolder.itemView.findViewById(R.id.item_title_tv)).setText("每日必做");
                                 break;
                             case 2:
-                                titleStr = "即将开始";
+                                ((ImageView) viewHolder.itemView.findViewById(R.id.item_title_iv)).setImageResource(R.mipmap.jijiangks);
+                                ((TextView) viewHolder.itemView.findViewById(R.id.item_title_tv)).setText("即将开始");
                                 break;
+                            case 0:
                             default:
-                                titleStr = "可接取";
+                                ((ImageView) viewHolder.itemView.findViewById(R.id.item_title_iv)).setImageResource(R.mipmap.kejiequ);
+                                ((TextView) viewHolder.itemView.findViewById(R.id.item_title_tv)).setText("可接取");
                                 break;
                         }
                     }
-
-                    ((TextView) viewHolder.itemView.findViewById(R.id.item_title_tv)).setText(titleStr + "");
-
                 } else {
-                    viewHolder.itemView.findViewById(R.id.item_title_tv).setVisibility(View.GONE);
-                    viewHolder.itemView.findViewById(R.id.item_title_iv).setVisibility(View.GONE);
+                    viewHolder.itemView.findViewById(R.id.task_top).setVisibility(View.GONE);
                 }
                 if (i == getItemCount() - 1) {
                     viewHolder.itemView.findViewById(R.id.line_tv).setVisibility(View.GONE);
@@ -635,7 +629,6 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                     viewHolder.itemView.findViewById(R.id.line_tv).setVisibility(View.VISIBLE);
                 }
                 TestUtil.setDebugDownLoad(context, viewHolder.itemView, taskEty);
-                viewHolder.itemView.findViewById(R.id.cancel_task_tv).setVisibility(View.GONE);
                 TextView detail_task_tv = viewHolder.itemView.findViewById(R.id.detail_task_tv);
 
 
@@ -685,11 +678,12 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                             }
                             return;
                         }
-                        taskEty.setRunTask(0);
-                        taskEty.setRelease_task_id(taskReleaseEty.getId());
-                        taskEty.setName(taskReleaseEty.getName());
-                        taskEty.setAcceptedTaskId(taskReleaseEty.getAccepted_task_id());
-                        Jump2View.getInstance().goDialogActivityView(context, taskEty);
+                        viewHolder.itemView.performClick();
+//                        taskEty.setRunTask(0);
+//                        taskEty.setRelease_task_id(taskReleaseEty.getId());
+//                        taskEty.setName(taskReleaseEty.getName());
+//                        taskEty.setAcceptedTaskId(taskReleaseEty.getAccepted_task_id());
+//                        Jump2View.getInstance().goDialogActivityView(context, taskEty);
                     }
                 });
                 viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@@ -745,41 +739,50 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
 
             @Override
             public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int i) {
-                if(etyList.get(i) == null
-                        || etyList.get(i).getRelease_task() == null
-                        || etyList.get(i).getRelease_task().getTask() == null){
+                final TaskAcceptedEty taskAcceptedEty;
+                final TaskReleaseEty taskReleaseEty;
+                final TaskEty taskEty;
+                if((taskAcceptedEty = ListUtil.getIndex(etyList, i)) == null
+                        || (taskReleaseEty = taskAcceptedEty.getRelease_task()) == null
+                        || (taskEty = taskReleaseEty.getTask()) == null){
                     return;
                 }
                     viewHolder.itemView.setTag(TAG_ID_TEMP, etyList.get(i).getId());
                 if(i == 0){
-
+                    viewHolder.itemView.findViewById(R.id.task_top).setVisibility(View.VISIBLE);
                     viewHolder.itemView.findViewById(R.id.item_title_tv).setVisibility(View.VISIBLE);
                     ((TextView)viewHolder.itemView.findViewById(R.id.item_title_tv)).setText("进行中");
                 }else{
-                    viewHolder.itemView.findViewById(R.id.item_title_tv).setVisibility(View.GONE);
-                    viewHolder.itemView.findViewById(R.id.item_title_iv).setVisibility(View.GONE);
+                    viewHolder.itemView.findViewById(R.id.task_top).setVisibility(View.GONE);
                 }
                 viewHolder.itemView.findViewById(R.id.line_tv).setVisibility(View.GONE);
 
-                viewHolder.itemView.findViewById(R.id.cancel_task_tv).setVisibility(View.GONE);
 
-                ((TextView)viewHolder.itemView.findViewById(R.id.item_anem_tv)).setText(etyList.get(i).getRelease_task().getName()+"");
-                ((TextView)viewHolder.itemView.findViewById(R.id.item_num_tv)).setText("剩余"+ etyList.get(i).getRelease_task().getLast_num()+"份");
-                ((TextView)viewHolder.itemView.findViewById(R.id.item_money)).setText("+"+ etyList.get(i).getRelease_task().getBonus() +"元");
-                if(!etyList.get(i).getRelease_task().getDeadline().equals("永久")){
+                ((TextView)viewHolder.itemView.findViewById(R.id.item_name_tv)).setText(taskReleaseEty.getName()+"");
+                switch (from) {
+                    case 1://来自主页
+                        TaskHelper.setTaskTypeText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv), taskReleaseEty);
+                        TaskHelper.setNumText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv1), taskReleaseEty);
+                        break;
+                    default:
+                        TaskHelper.setNumText((TextView) viewHolder.itemView.findViewById(R.id.item_num_tv), taskReleaseEty);
+                        break;
+                }
+                ((TextView)viewHolder.itemView.findViewById(R.id.item_money)).setText("+"+ taskReleaseEty.getBonus() +"元");
+                if(!taskReleaseEty.getDeadline().equals("永久")){
                     ((TextView)viewHolder.itemView.findViewById(R.id.item_date_tv)).setText(
-                            "截止时间:" + TimeUtil.getDate(TimeUtil.FORMAT_DD, Long.valueOf(etyList.get(i).getRelease_task().getDeadline()))+"");
+                            "截止时间:" + TimeUtil.getDate(TimeUtil.FORMAT_DD, Long.valueOf(taskReleaseEty.getDeadline()))+"");
                 }else {
                     ((TextView)viewHolder.itemView.findViewById(R.id.item_date_tv)).setText(
-                            "截止时间:" + etyList.get(i).getRelease_task().getDeadline());
+                            "截止时间:" + taskReleaseEty.getDeadline());
                 }
 
                 ((TextView)viewHolder.itemView.findViewById(R.id.detail_task_tv)).setText("取消任务");
 
                 if((is_succession == 1 || is_succession == 3)
-                        &&  (etyList.get(i).getChild_task_id() > 1
-                                || (etyList.get(i).getChild_task_id() == 1
-                        && (etyList.get(i).getStatus() == 6 || etyList.get(i).getStatus() == 7 || etyList.get(i).getStatus() == 9)))
+                        &&  (taskAcceptedEty.getChild_task_id() > 1
+                                || (taskAcceptedEty.getChild_task_id() == 1
+                        && (taskAcceptedEty.getStatus() == 6 || taskAcceptedEty.getStatus() == 7 || taskAcceptedEty.getStatus() == 9)))
                         ){
                     viewHolder.itemView.findViewById(R.id.detail_task_tv).setVisibility(View.GONE);
                 }else {
@@ -792,13 +795,13 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
 
                 //设置标签颜色task_type_tv
                 //Todo 2.6又不需要了
-//                if(!TextUtils.isEmpty(etyList.get(i).getRelease_task().getChild_task_name())){
+//                if(!TextUtils.isEmpty(taskReleaseEty.getChild_task_name())){
 //                    task_type_tv.setVisibility(View.VISIBLE);
-//                    task_type_tv.setText(etyList.get(i).getRelease_task().getChild_task_name() + "");
+//                    task_type_tv.setText(taskReleaseEty.getChild_task_name() + "");
 //                    CommonUtil.getInstance()
 //                            .setViewBackground(
 //                                    task_type_tv,
-//                                    etyList.get(i).getRelease_task().getLabel_color()+"");
+//                                    taskReleaseEty.getLabel_color()+"");
 //                }else {
 //                    task_type_tv.setVisibility(View.INVISIBLE);
 //                }
@@ -806,16 +809,13 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                     @Override
                     public void onClick(View v) {
 
-                        presenter.giveUpTask(etyList.get(i).getId());
+                        presenter.giveUpTask(taskAcceptedEty.getId());
                         //暂停下载
-                        CommonUtil.getInstance().stopDownloadTask(mContext, etyList.get(i).getRelease_task().getTask().getDownload_link());
+                        CommonUtil.getInstance().stopDownloadTask(mContext, taskEty.getDownload_link());
 
                     }
                 });
-                Glide.with(context)
-                        .load(etyList.get(i).getRelease_task().getTask().getIcon()+"")
-                        .apply(new RequestOptions().placeholder(R.mipmap.x_ic_def_head))
-                        .into((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv));
+                GlideImageLoader.setGameImage((ImageView) viewHolder.itemView.findViewById(R.id.item_icon_iv), taskEty.getIcon());
                 viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
@@ -825,32 +825,29 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
                         }
                         UMConfigUtils.IdEvent.TASK.commit(item.getRelease_task_id());
 
-                        TaskEty taskEty = etyList.get(i).getRelease_task().getTask();
                         taskEty.setRunTask(1);
-                        taskEty.setBonus(etyList.get(i).getRelease_task().getBonus());
-                        taskEty.setRelease_task_id(etyList.get(i).getRelease_task().getId());
-                        taskEty.setAcceptedTaskId(etyList.get(i).getId());
-                        taskEty.setName(etyList.get(i).getRelease_task().getName());
-                        Jump2View.getInstance().goTaskDetailView(context,  etyList.get(i).getRelease_task().getId());
+                        taskEty.setBonus(taskReleaseEty.getBonus());
+                        taskEty.setRelease_task_id(taskReleaseEty.getId());
+                        taskEty.setAcceptedTaskId(taskAcceptedEty.getId());
+                        taskEty.setName(taskReleaseEty.getName());
+                        Jump2View.getInstance().goTaskDetailView(context,  taskReleaseEty.getId());
                         UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_DETAIL);
                     }
                 });
-                TestUtil.setDebugDownLoad(context, viewHolder.itemView, etyList.get(i).getRelease_task().getTask());
+                TestUtil.setDebugDownLoad(context, viewHolder.itemView, taskEty);
 
                 /*
                   倒计时
                  */
                 final TextView countdown_tv = viewHolder.itemView.findViewById(R.id.end_of_time_tv);
-                if(etyList.get(i).getEnd_time() > 0){
+                if(taskAcceptedEty.getEnd_time() > 0){
                     SelfCountDownTimer scTimer = timerHashMap.get(countdown_tv);
                     if(scTimer != null){
                         scTimer.cancel();
                     }
 
                     countdown_tv.setVisibility(View.VISIBLE);
-                    String sr = "<font color='#ff2d4b'><small>" + "" + "</small></font>";
-//                    countdown_tv.setText(sr+"");
-                    SelfCountDownTimer selfCountDownTimer = new SelfCountDownTimer( etyList.get(i).getEnd_time() * 1000, 1000, etyList.get(i).getRelease_task().getCancel_duration()) {
+                    SelfCountDownTimer selfCountDownTimer = new SelfCountDownTimer( taskAcceptedEty.getEnd_time() * 1000, 1000, taskReleaseEty.getCancel_duration()) {
                         @Override
                         public void onTimerRest() {
                             countdown_tv.setText("");
@@ -858,18 +855,18 @@ public class TryMakeMoneyAdp extends AdpCommonRecy<RecyleObj> {
 
                         @Override
                         public void onTimerTick(long millisUntilFinished, int counTime) {
-                            countdown_tv.setText(Html.fromHtml(CommonUtil.getInstance().assemblyStrings(TimeUtil.getHours(millisUntilFinished), "")+""));
+                            countdown_tv.setText(TimeUtil.getHours(millisUntilFinished));
                         }
 
                         @Override
                         public void onTimerFinish() {
                             countdown_tv.setVisibility(View.GONE);
-//                            presenter.giveUpTask(etyList.get(i).getId());
+//                            presenter.giveUpTask(taskAcceptedEty.getId());
 //                            //暂停下载
-//                            CommonUtil.getInstance().stopDownloadTask(mContext, etyList.get(i).getRelease_task().getTask().getDownload_link());
+//                            CommonUtil.getInstance().stopDownloadTask(mContext, taskEty.getDownload_link());
                         }
                     };
-                    selfCountDownTimer.reset(etyList.get(i).getRelease_task().getCancel_duration());
+                    selfCountDownTimer.reset(taskReleaseEty.getCancel_duration());
                     selfCountDownTimer.start();
                     timerHashMap.put(countdown_tv, selfCountDownTimer);
                 }else {

+ 0 - 56
app/src/main/java/com/sheep/gamegroup/view/customview/GlideCircleTransform.java

@@ -1,56 +0,0 @@
-package com.sheep.gamegroup.view.customview;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapShader;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-
-import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
-import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
-
-import java.security.MessageDigest;
-
-/**
- * Created by ljy on 2018/4/28.
- */
-
-public class GlideCircleTransform extends BitmapTransformation {
-
-    public GlideCircleTransform(Context context) {
-        super(context);
-    }
-
-    @Override
-    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
-        return circleCrop(pool, toTransform);
-    }
-
-    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
-        if (source == null) return null;
-
-        int size = Math.min(source.getWidth(), source.getHeight());
-        int x = (source.getWidth() - size) / 2;
-        int y = (source.getHeight() - size) / 2;
-
-        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);
-
-        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
-        if (result == null) {
-            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
-        }
-
-        Canvas canvas = new Canvas(result);
-        Paint paint = new Paint();
-        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
-        paint.setAntiAlias(true);
-        float r = size / 2f;
-        canvas.drawCircle(r, r, r, paint);
-        return result;
-    }
-
-    @Override
-    public void updateDiskCacheKey(MessageDigest messageDigest) {
-
-    }
-}

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/view/dialog/DialogOrienteeringDetails.java

@@ -16,6 +16,7 @@ import com.alibaba.fastjson.JSON;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
@@ -189,7 +190,7 @@ public class DialogOrienteeringDetails {
     private void noDatanotify(){
         RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 6*gao);
         swipe_container.setLayoutParams(layoutParams);
-        empty_view.setVisibility(View.VISIBLE);
+        CommonUtil.getInstance().updateEmptyView(empty_view, true);
         swipe_container.setRefreshing(false);
         adapter.notifyDataSetChanged();
     }

+ 0 - 0
app/src/main/java/com/sheep/gamegroup/view/dialog/DialogShare.java


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.