Selaa lähdekoodia

Merge remote-tracking branch 'origin/2.8' into sheep_tinker

# Conflicts:
#	app/src/main/java/com/kfzs/duanduan/react/ReactUtil.java
#	app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java
zengjiebin 7 vuotta sitten
vanhempi
commit
05072b42da
95 muutettua tiedostoa jossa 3198 lisäystä ja 1718 poistoa
  1. 5 4
      app/build.gradle
  2. BIN
      app/libs/PhotoPicker-release.aar
  3. 5 2
      app/src/main/AndroidManifest.xml
  4. 1 1
      app/src/main/java/com/kfzs/duanduan/ActDownloadMgr.java
  5. 0 62
      app/src/main/java/com/kfzs/duanduan/ActMain.java
  6. 3 3
      app/src/main/java/com/kfzs/duanduan/ActSearch.java
  7. 3 2
      app/src/main/java/com/kfzs/duanduan/KFZSApp.java
  8. 1 1
      app/src/main/java/com/kfzs/duanduan/fragment/CategoryRankFragment.java
  9. 6 14
      app/src/main/java/com/kfzs/duanduan/fragment/FgtFriendExtractPage.java
  10. 1 1
      app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java
  11. 1 1
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSignRankings.java
  12. 8 44
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java
  13. 78 0
      app/src/main/java/com/kfzs/duanduan/react/ConfigUtil.java
  14. 10 1
      app/src/main/java/com/kfzs/duanduan/react/FileUtil.java
  15. 0 56
      app/src/main/java/com/kfzs/duanduan/react/ReactUtil.java
  16. 2 2
      app/src/main/java/com/kfzs/duanduan/utils/ListViewUtil.java
  17. 33 1
      app/src/main/java/com/sheep/gamegroup/absBase/AbsChooseImageActivity.java
  18. 0 17
      app/src/main/java/com/sheep/gamegroup/event/ImageHeadChange.java
  19. 0 27
      app/src/main/java/com/sheep/gamegroup/event/MoneyChange.java
  20. 0 35
      app/src/main/java/com/sheep/gamegroup/event/RealNameAutehrChange.java
  21. 0 17
      app/src/main/java/com/sheep/gamegroup/event/UserNameChange.java
  22. 2 1
      app/src/main/java/com/sheep/gamegroup/heler/TaskHelper.java
  23. 12 1
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  24. 41 0
      app/src/main/java/com/sheep/gamegroup/model/entity/AskAward.java
  25. 59 0
      app/src/main/java/com/sheep/gamegroup/model/entity/AskTop.java
  26. 9 2
      app/src/main/java/com/sheep/gamegroup/model/entity/UserEntity.java
  27. 4 2
      app/src/main/java/com/sheep/gamegroup/model/util/AutoTaskListUtil.java
  28. 1 1
      app/src/main/java/com/sheep/gamegroup/usage/AppUsageManager.java
  29. 2 0
      app/src/main/java/com/sheep/gamegroup/util/AppUtil.java
  30. 302 201
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  31. 4 4
      app/src/main/java/com/sheep/gamegroup/util/ConnectAddress.java
  32. 212 21
      app/src/main/java/com/sheep/gamegroup/util/DataUtil.java
  33. 362 0
      app/src/main/java/com/sheep/gamegroup/util/GlobalScreenShot.java
  34. 62 9
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  35. 9 0
      app/src/main/java/com/sheep/gamegroup/util/ListUtil.java
  36. 6 0
      app/src/main/java/com/sheep/gamegroup/util/StringUtils.java
  37. 9 1
      app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java
  38. 23 8
      app/src/main/java/com/sheep/gamegroup/util/TestUtil.java
  39. 4 5
      app/src/main/java/com/sheep/gamegroup/util/TimeUtil.java
  40. 4 4
      app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java
  41. 80 2
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  42. 5 2
      app/src/main/java/com/sheep/gamegroup/util/ZipChannelUtil.java
  43. 6 6
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchGame.java
  44. 25 21
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSheepApkList.java
  45. 48 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActWeb.java
  46. 235 122
      app/src/main/java/com/sheep/gamegroup/view/activity/AskGetMoneyAct.java
  47. 110 101
      app/src/main/java/com/sheep/gamegroup/view/activity/MiddleAct.java
  48. 63 73
      app/src/main/java/com/sheep/gamegroup/view/activity/PersonalInfoAct.java
  49. 3 7
      app/src/main/java/com/sheep/gamegroup/view/activity/ReNameActivity.java
  50. 20 38
      app/src/main/java/com/sheep/gamegroup/view/activity/RealNameAuthenAct.java
  51. 1 1
      app/src/main/java/com/sheep/gamegroup/view/activity/SignRecordAct.java
  52. 76 95
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java
  53. 31 13
      app/src/main/java/com/sheep/gamegroup/view/dialog/DialogShare.java
  54. 2 2
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyGame.java
  55. 57 60
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java
  56. 50 36
      app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java
  57. 12 2
      app/src/main/java/com/sheep/jiuyan/samllsheep/service/FloatService.java
  58. 429 0
      app/src/main/java/com/sheep/jiuyan/samllsheep/service/FloatShotScreenService.java
  59. 1 0
      app/src/main/java/com/sheep/jiuyan/samllsheep/utils/G.java
  60. 7 0
      app/src/main/res/drawable/button_full_normal_purple_click.xml
  61. BIN
      app/src/main/res/drawable/screenshot_panel.9.png
  62. 9 0
      app/src/main/res/drawable/selector_button_full_purple.xml
  63. 1 1
      app/src/main/res/drawable/shape_page.xml
  64. 33 0
      app/src/main/res/drawable/x_shap_shadow_bg_rectgangle_purple.xml
  65. 29 0
      app/src/main/res/drawable/x_shap_shadow_bg_rectgangle_purple_red.xml
  66. 13 0
      app/src/main/res/layout-um/act_preview_screen_shot.xml
  67. 36 0
      app/src/main/res/layout-um/global_screenshot.xml
  68. 30 0
      app/src/main/res/layout/ask_to_share.xml
  69. 23 0
      app/src/main/res/layout/ask_to_share_item.xml
  70. 2 2
      app/src/main/res/layout/bind_phone_number_act_layout.xml
  71. 4 4
      app/src/main/res/layout/empty_view.xml
  72. 4 4
      app/src/main/res/layout/empty_view_bottom.xml
  73. 4 4
      app/src/main/res/layout/fgt_sign_rankings.xml
  74. 11 9
      app/src/main/res/layout/friend_list_empty.xml
  75. 41 0
      app/src/main/res/layout/global_screenshot.xml
  76. 3 3
      app/src/main/res/layout/list_has_empty.xml
  77. 4 4
      app/src/main/res/layout/sign_record_layout.xml
  78. 8 0
      app/src/main/res/layout/x_ask_award_item.xml
  79. 235 515
      app/src/main/res/layout/x_ask_getmoney_act_layout.xml
  80. 16 13
      app/src/main/res/layout/x_ask_getmoney_act_layout_include.xml
  81. 13 12
      app/src/main/res/layout/x_ask_getmoney_act_layout_item.xml
  82. 66 0
      app/src/main/res/layout/x_ask_top5_item.xml
  83. 40 0
      app/src/main/res/layout/x_ask_top5_title.xml
  84. 4 0
      app/src/main/res/layout/x_real_name_auther_layout.xml
  85. BIN
      app/src/main/res/mipmap-xxhdpi/ask_top_1.png
  86. BIN
      app/src/main/res/mipmap-xxhdpi/ask_top_2.png
  87. BIN
      app/src/main/res/mipmap-xxhdpi/ask_top_3.png
  88. BIN
      app/src/main/res/mipmap-xxhdpi/ic_crop.webp
  89. 7 0
      app/src/main/res/values/color_app_theme_colors.xml
  90. 9 0
      app/src/main/res/values/dd_styles.xml
  91. 1 1
      app/src/main/res/values/gamegroup_string.xml
  92. 1 1
      app/src/main/res/values/strings.xml
  93. 3 9
      build.gradle
  94. 1 1
      datashare/build.gradle
  95. 2 2
      view/build.gradle

+ 5 - 4
app/build.gradle

@@ -120,7 +120,7 @@ repositories {
 }
 
 dependencies {
-    compile 'com.android.support:design:27.1.0'
+    compile "com.android.support:design:$supportLibVersion"
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     testCompile 'junit:junit:4.12'
     compile 'com.google.code.gson:gson:2.8.2'
@@ -225,15 +225,16 @@ dependencies {
 
     //    compile 'com.kf.framework:volleyplus:latest.integration@aar'
     compile 'com.kf.framework:volleyplus:1.4.5@aar'
-    compile 'com.android.support:support-annotations:27.1.0'
-    compile 'com.android.support:recyclerview-v7:27.1.0'
+    compile "com.android.support:support-annotations:$supportLibVersion"
+    compile "com.android.support:recyclerview-v7:$supportLibVersion"
     compile project(':datashare')
     compile files('libs/jackson-core-2.2.1.jar')
     compile files('libs/jackson-dataformat-xml-2.1.2.jar')
     compile 'io.reactivex:rxandroid:1.2.1'
     compile 'com.github.ithedan:TextViewDrawable:v1.0'
 //    compile 'com.github.zhangkexpz:LayoutScroll:v1.0'
-    compile 'me.iwf.photopicker:PhotoPicker:0.9.12@aar'
+//    compile 'me.iwf.photopicker:PhotoPicker:0.9.12@aar'
+    compile(name: 'PhotoPicker-release', ext: 'aar')
     compile 'com.github.bumptech.glide:glide:4.1.1'
 
     //    compile 'com.github.yalantis:ucrop:2.2.1-native'

BIN
app/libs/PhotoPicker-release.aar


+ 5 - 2
app/src/main/AndroidManifest.xml

@@ -111,7 +111,11 @@
         <service
             android:name=".service.FloatService"
             android:enabled="true"
-            android:exported="true"></service>
+            android:exported="true"/>
+        <service
+            android:name=".service.FloatShotScreenService"
+            android:enabled="true"
+            android:exported="true"/>
 
         <provider
             android:name=".provider.SheepFileProvider"
@@ -374,7 +378,6 @@
             android:name="com.sheep.gamegroup.view.activity.ActXiaomiGame"
             android:screenOrientation="portrait" />
 
-
         <!--友盟start-->
         <meta-data
             android:name="UMENG_APPKEY"

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

@@ -55,7 +55,7 @@ public class ActDownloadMgr extends BaseCompatActivity {
     @BindView(R.id.download_mgr_listview)
     ListView lvDownloadMgr;
 
-    @BindView(R.id.download_mgr_empty_view)
+    @BindView(R.id.empty_view)
     View tvEmptyView;
 
     /**

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

@@ -1,25 +1,17 @@
 package com.kfzs.duanduan;
 
-import android.Manifest;
 import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.Toast;
 
 import com.kfzs.appstore.utils.restful.KFZSNetwork;
 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;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.R;
 import com.umeng.socialize.UMShareAPI;
@@ -27,9 +19,6 @@ import com.umeng.socialize.UMShareAPI;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import rx.functions.Action1;
@@ -42,13 +31,11 @@ public class ActMain extends BaseActivity {
     LinearLayout other_container;
 
     public final static String INTENT_GAME_ID = "INTEN_GAME_ID";
-    public final static String INTENT_IS_FROM_LOGIN = "INTENT_IS_FROM_LOGIN";
 
 
     private ImageView mImgDot;//下载按钮的小红点
 
 
-    private final static int INTENT_GET_PERMISSION = 1;
 
     public TabsHelper tabsHelper;
 
@@ -61,7 +48,6 @@ public class ActMain extends BaseActivity {
     public void initView() {
         KFZSApp.actMain = this;
         tabsHelper = new TabsHelper();
-        getSA();//6.0以上获取必要权限
         HelperUtils.init();//初始化屏幕的高,density等
         ButterKnife.bind(this);
         EventBus.getDefault().register(this);
@@ -95,54 +81,6 @@ public class ActMain extends BaseActivity {
     }
 
 
-
-    /**
-     * 申请读写权限6.0
-     */
-    private void getSA() {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
-            return;
-        }
-        List<String> sa = new ArrayList<>();
-        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
-                != PackageManager.PERMISSION_GRANTED) {
-            sa.add(Manifest.permission.READ_PHONE_STATE);
-        }
-        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
-                != PackageManager.PERMISSION_GRANTED) {
-            sa.add(Manifest.permission.READ_EXTERNAL_STORAGE);
-        }
-        if (sa.size() < 1) {//如果都已经授权了,不能空列表去请求,否则报异常
-            return;
-        }
-        ActivityCompat.requestPermissions(this, sa.toArray(new String[]{}), INTENT_GET_PERMISSION);
-    }
-
-
-    /**
-     * 权限申请的回调
-     *
-     * @param requestCode
-     * @param permissions
-     * @param grantResults
-     */
-    @Override
-    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
-        if (requestCode == INTENT_GET_PERMISSION) {
-            boolean isOk = true;
-            for (int result : grantResults) {
-                if (result == PackageManager.PERMISSION_DENIED) {
-                    isOk = false;
-                    break;//只要有一个拒绝,就退出并提示
-                }
-            }
-            if (!isOk) {
-                Toast.makeText(ActMain.this, "权限获取失败,部分功能可能无法正常工作。", Toast.LENGTH_SHORT).show();
-            }
-        }
-        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
-    }
-
     private Container<Action1<Integer>> container = new Container<>();
 
     public Container<Action1<Integer>> getContainer() {

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

@@ -230,7 +230,7 @@ public class ActSearch extends BaseCompatActivity {
     private void initTabGame() {
         View view = View.inflate(this, R.layout.list_search, null);
         ListView listView = view.findViewById(R.id.list_list_search);
-        listView.setEmptyView(view.findViewById(R.id.download_mgr_empty_view));
+        listView.setEmptyView(view.findViewById(R.id.empty_view));
         mAdpSearchGame = new AdpSearchGame(this);
         mAdpSearchGame.setmInstallButtonMgrMap(mInstallButtonMgrMap);
         listView.setAdapter(mAdpSearchGame);
@@ -244,7 +244,7 @@ public class ActSearch extends BaseCompatActivity {
     private void initTabNewGame() {
         View view = View.inflate(this, R.layout.list_search, null);
         ListView listView = view.findViewById(R.id.list_list_search);
-        listView.setEmptyView(view.findViewById(R.id.download_mgr_empty_view));
+        listView.setEmptyView(view.findViewById(R.id.empty_view));
 
         //mAdpSearchNewGame = new AdpSearchNewGame(this);
         //mAdpSearchNewGame.setmInstallButtonMgrMap(mInstallButtonMgrMap);
@@ -259,7 +259,7 @@ public class ActSearch extends BaseCompatActivity {
     private void initTabTest() {
         View view = View.inflate(this, R.layout.list_search, null);
         ListView listView = view.findViewById(R.id.list_list_search);
-        listView.setEmptyView(view.findViewById(R.id.download_mgr_empty_view));
+        listView.setEmptyView(view.findViewById(R.id.empty_view));
 
         //mAdpSearchTest = new AdpSearchTest(this);
         //mAdpSearchTest.setmInstallButtonMgrMap(mInstallButtonMgrMap);

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

@@ -12,9 +12,11 @@ import com.arialyy.aria.core.Aria;
 import com.kfzs.appstore.utils.restful.KFZSNetwork;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.util.ActivityManager;
+import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.service.DownloadService;
 import com.sheep.jiuyan.samllsheep.service.FloatService;
+import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 
@@ -76,6 +78,7 @@ public class KFZSApp extends MultiDexApplication {
         KFZSNetwork.init(application);
         DisplayMetrics metric = getResources().getDisplayMetrics();
         G.DENSITY = metric.density;
+        G.DENSITY_DPI = metric.densityDpi;
         boolean isHeightBig = metric.heightPixels > metric.widthPixels;
         G.HEIGHT = isHeightBig ? metric.heightPixels : metric.widthPixels;
         G.WIDTH = isHeightBig ? metric.widthPixels : metric.heightPixels;
@@ -97,8 +100,6 @@ public class KFZSApp extends MultiDexApplication {
     public void quit() {
         try {
             Aria.download(this).stopAllTask();
-            stopService(new Intent(this, DownloadService.class));
-            stopService(new Intent(this, FloatService.class));
             ActivityManager.getInstance().finishAllActivity();
         } catch (Exception e) {
             Log.e(TAG, "quit error" + e.getMessage() + "\n" + e.getCause());

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

@@ -68,7 +68,7 @@ public class CategoryRankFragment extends BaseCompatFragment {
 
         mRecyclerView = ViewFindUtils.find(mContentView, R.id.recy_fgt_main_game);
         //隐藏空空如也
-        ViewFindUtils.find(mContentView, R.id.download_mgr_empty_view).setVisibility(View.GONE);
+        ViewFindUtils.find(mContentView, R.id.empty_view).setVisibility(View.GONE);
         mAdpFragmentRank = new AdpFragmentRank(activity, mRecyclerView, ClsTypeChoose);
 
         mRecyclerView.setLayoutManager(new LinearLayoutManager(activity));

+ 6 - 14
app/src/main/java/com/kfzs/duanduan/fragment/FgtFriendExtractPage.java

@@ -33,8 +33,8 @@ import rx.schedulers.Schedulers;
 public class FgtFriendExtractPage extends BaseFragment {
     @BindView(R.id.friend_list_ll)
     LinearLayout friend_list_ll;
-    @BindView(R.id.download_mgr_empty_view)
-    View download_mgr_empty_view;
+    @BindView(R.id.empty_view)
+    View empty_view;
     @Override
     public int getLayoutId() {
         return R.layout.friend_list_empty;
@@ -59,8 +59,8 @@ public class FgtFriendExtractPage extends BaseFragment {
             ViewGroup view = (ViewGroup) friend_list_ll.getChildAt(i);
             if(i < size){
                 view.setVisibility(View.VISIBLE);
-                if(i % 2 == 0)
-                    view.setBackgroundColor(0xffF8F8F8);
+//                if(i % 2 == 0)
+//                    view.setBackgroundColor(0xffF8F8F8);
                 int j = 0;
                 Friend friend = list.get(i);
                 TextView friend_item_id = (TextView) view.getChildAt(j++);
@@ -75,11 +75,7 @@ public class FgtFriendExtractPage extends BaseFragment {
                 view.setVisibility(View.INVISIBLE);
             }
         }
-        if(list.isEmpty()){
-            CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
-        } else {
-            download_mgr_empty_view.setVisibility(View.GONE);
-        }
+        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty(), true);
     }
     private boolean isLoadding = false;
     private void initData(){
@@ -111,11 +107,7 @@ public class FgtFriendExtractPage extends BaseFragment {
                     @Override
                     public void onError(BaseMessage baseMessage) {
                         G.showToast(baseMessage);
-                        if(list.isEmpty()){
-                            CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
-                        } else {
-                            download_mgr_empty_view.setVisibility(View.GONE);
-                        }
+                        CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty(), true);
                         isLoadding = false;
                     }
                 });

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

@@ -207,7 +207,7 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                 break;
             case R.id.recommend_friend_layout://推荐给好友
                 if (userEntity != null) {
-                    ViewUtil.shareLink(activity, userEntity.getShareLink());
+                    ViewUtil.shareLink(activity, CommonUtil.getInstance().jointString(userEntity.getShareLink("ohter"), "ohter"));
                 }
                 USER_SHARE.onEvent();
                 break;

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

@@ -51,7 +51,7 @@ public class FgtSignRankings extends BaseCompatFragment implements SignRankingsC
     @BindView(R.id.main_content)
     LinearLayout main_content;
 
-    @BindView(R.id.download_mgr_empty_view)
+    @BindView(R.id.empty_view)
     View empty_view;
     Unbinder unbinder;
     RecyclerViewAdapter recyclerViewAdapter;

+ 8 - 44
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -27,15 +27,12 @@ import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
 import com.kfzs.duanduan.BaseCompatFragment;
 import com.kfzs.duanduan.event.BigEvent;
-import com.kfzs.duanduan.react.ReactUtil;
+import com.kfzs.duanduan.react.ConfigUtil;
 import com.kfzs.duanduan.react.SharedPreferences;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
 import com.sheep.gamegroup.di.components.DaggerSmallSheepComponent;
 import com.sheep.gamegroup.di.modules.SmallSheepModule;
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
-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.BulletinEnty;
 import com.sheep.gamegroup.model.entity.Ext;
@@ -82,7 +79,6 @@ 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;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -201,6 +197,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     protected void initView(Bundle savedInstanceState) {
         setContentView(R.layout.homepage_act_layout);
         activity = getActivity();
+        DataUtil.getInstance().isTaskListChange(getClass());
         showPDialog();
         initView();
         initListener();
@@ -210,6 +207,8 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         if (pagePresenter != null) {
             initData();
         }
+        //每次进入主页都刷新一下url配置信息
+        CommonUtil.getInstance().initUrlConfigByNet(null, null);
     }
 
 
@@ -236,7 +235,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         }
         ViewUtil.setText(nameTv, userEntity.getNickname());
         ViewUtil.setText(sheepNumTv, String.format(Locale.CHINA, "绵羊号:%s", userEntity.getInvitation_code()));
-        if (ReactUtil.isSmallDebug()) {
+        if (ConfigUtil.isSmallDebug()) {
             sheepNumTv.append("\n邀请人:");
             sheepNumTv.append(userEntity.getParent_code());
         }
@@ -262,15 +261,6 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                         }
                         break;
                     case MotionEvent.ACTION_UP:
-                        if (upview1 != null) {
-                            //开始滚动
-                            upview1.startFlipping();
-                        }
-                        if (homepageItemNoticeMv != null) {
-                            //开始滚动
-                            homepageItemNoticeMv.startFlipping();
-                        }
-                        break;
                     default:
                         if (upview1 != null) {
                             //开始滚动
@@ -447,7 +437,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     }
 
     private void refreshTaskList() {
-        DataUtil.getInstance().resetTaskListChange();
+        DataUtil.getInstance().isTaskListChange(getClass());
         tryMakeMoneyPresenter.returnTask(is_succession, show_game_task);
         RequestParameEty parameEty = new RequestParameEty();
         parameEty.setHashMap(
@@ -540,6 +530,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         if(isNewData) {
             BaseMessage baseMessage = (BaseMessage) object;
             allTaskAcceptedTaskList = baseMessage.getDataList(TaskAcceptedEty.class);
+            AutoTaskListUtil.getInstance().loadList(allTaskAcceptedTaskList);
             mHanderl.sendEmptyMessage(1);
         }
     }
@@ -716,7 +707,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             userEntity = result;
             loadUserInfo();
         }
-        if(DataUtil.getInstance().isTaskListChange())//数据变化才刷新
+        if(DataUtil.getInstance().isTaskListChange(getClass()))//数据变化才刷新
             refreshTaskList();
         if(onResumeCount == 0)//第一次才调用
             Jump2View.getInstance().tryShowNewbieTask(activity, userEntity, newbie_task);
@@ -776,33 +767,6 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     }
 
 
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(UserNameChange done) {
-        UserEntity enity = userEntity;
-        enity.setNickname(done.getNikeName());
-        userEntity = enity;
-        loadUserInfo();
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(MoneyChange done) {
-        UserEntity enity = userEntity;
-        enity.setBalance(done.getBalance());
-        enity.setTotal_asset(done.getTotal_asset());
-        userEntity = enity;
-        loadUserInfo();
-    }
-
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onMessageEvent(ImageHeadChange done) {
-        UserEntity enity = userEntity;
-        enity.setAvatar(done.getAvatar());
-        userEntity = enity;
-        loadUserInfo();
-    }
-
-
     @Override
     public void onDestroy() {
         super.onDestroy();

+ 78 - 0
app/src/main/java/com/kfzs/duanduan/react/ConfigUtil.java

@@ -0,0 +1,78 @@
+package com.kfzs.duanduan.react;
+
+import android.os.Environment;
+import android.text.TextUtils;
+
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.TestUtil;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
+
+/**
+ * Created by realicing on 2018/1/7.
+ * realicing@sina.com
+ */
+
+public class ConfigUtil {
+    private static ConfigUtil instance = new ConfigUtil();
+    private ConfigUtil() {
+        if(TestUtil.isTest()) {
+            File file = new File(DIR, "smallSheep.config");
+            isFileExists = file.exists();
+            if (isFileExists) {
+                content = FileUtil.readLines(file);
+            }
+        }
+    }
+    public static ConfigUtil getInstance() {
+        if (instance == null) {
+            instance = new ConfigUtil();
+        }
+        return instance;
+    }
+    private boolean isFileExists;
+    private List<String> content;
+
+    public boolean isFileExists() {
+        return isFileExists;
+    }
+
+    /**
+     * 第一行  connectAddress的名字:sheep sheepfz sheeptest   developSheeptest
+     * 第二行  是否升级(1为要升级,2为不升级):1 2
+     * 第行
+     * @param position
+     * @return
+     */
+    public String getItem(int position){
+        return ListUtil.getItem(content, position);
+    }
+
+    /**
+     * 是否调用升级
+     * @return
+     */
+    public boolean isUpgrade() {
+        String item = getItem(1);
+        return TextUtils.equals(item, "1");
+    }
+    /**
+     * 是否进入rn调试模式
+     */
+    public static final boolean isSmallDebug() {
+        File sdDir = null;
+        boolean sdCardExist = Environment.getExternalStorageState()
+                .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
+        if (sdCardExist) {
+            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
+        }
+        return sdDir != null && new File(sdDir, "smallSheep.debug").exists();
+    }
+
+}

+ 10 - 1
app/src/main/java/com/kfzs/duanduan/react/FileUtil.java

@@ -74,8 +74,17 @@ public class FileUtil {
             return null;
         }
 
+        File f = new File(sFileName);
+        return readLines(f);
+    }
+    /**
+     * 读取文件
+     *
+     * @param f
+     * @return
+     */
+    public static List<String> readLines(File f) {
         final List<String> list = new ArrayList<>();
-        final File f = new File(sFileName);
         if (!f.exists()) {
             return null;
         }

+ 0 - 56
app/src/main/java/com/kfzs/duanduan/react/ReactUtil.java

@@ -1,56 +0,0 @@
-package com.kfzs.duanduan.react;
-
-import android.os.Environment;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by realicing on 2018/1/7.
- * realicing@sina.com
- */
-
-public class ReactUtil {
-    /**
-     * 是否进入调试模式
-     */
-    public static final boolean isHasConnectConfig() {
-        File sdDir = null;
-        boolean sdCardExist = Environment.getExternalStorageState()
-                .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
-        if (sdCardExist) {
-            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
-        }
-        return sdDir != null && new File(sdDir, "smallSheep.config").exists();
-    }
-    /**
-     * 是否进入rn调试模式
-     */
-    public static final String getConectConfig() {
-        File sdDir = null;
-        boolean sdCardExist = Environment.getExternalStorageState()
-                .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
-        if (sdCardExist) {
-            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
-        }
-        return FileUtil.readFile(new File(sdDir, "smallSheep.config").getAbsolutePath());
-    }
-    /**
-     * 是否进入rn调试模式
-     */
-    public static final boolean isSmallDebug() {
-        File sdDir = null;
-        boolean sdCardExist = Environment.getExternalStorageState()
-                .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
-        if (sdCardExist) {
-            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
-        }
-        return sdDir != null && new File(sdDir, "smallSheep.debug").exists();
-    }
-
-
-
-}

+ 2 - 2
app/src/main/java/com/kfzs/duanduan/utils/ListViewUtil.java

@@ -29,8 +29,8 @@ public class ListViewUtil {
 
     public ListViewUtil setEmptyView(Context context, ListView listView) {
         mViewEmpty = View.inflate(context, R.layout.empty_view, null);
-        mImgEmpty = ViewFindUtils.find(mViewEmpty, R.id.img_list_empty);
-        mTxtEmpty = ViewFindUtils.find(mViewEmpty, R.id.txt_list_empty);
+        mImgEmpty = ViewFindUtils.find(mViewEmpty, R.id.empty_view_img);
+        mTxtEmpty = ViewFindUtils.find(mViewEmpty, R.id.empty_view_msg);
         mViewEmpty.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams
                 .MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
         mViewEmpty.setVisibility(View.GONE);

+ 33 - 1
app/src/main/java/com/sheep/gamegroup/absBase/AbsChooseImageActivity.java

@@ -9,7 +9,9 @@ import com.kfzs.appstore.utils.string.HexUtils;
 import com.kfzs.duanduan.react.upfile.UpFileListener;
 import com.kfzs.duanduan.react.upfile.UpFileUtils;
 import com.sheep.gamegroup.model.entity.UploadResult;
+import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.view.dialog.DialogShowLoading;
+import com.sheep.jiuyan.samllsheep.utils.G;
 import com.yalantis.ucrop.UCrop;
 
 import java.io.File;
@@ -50,11 +52,41 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
         this.urls.clear();
         PhotoPicker.builder()
                 .setPhotoCount(photoCount)
-                .setShowCamera(true)
+                .setShowCamera(showCamera)
                 .setShowGif(false)
                 .setPreviewEnabled(true)
                 .start(this, PhotoPicker.REQUEST_CODE);
     }
+    public void showChooseDialog(boolean isCrop, boolean isUpload, int photoCount, File dir) {
+        if(dir.exists() && dir.listFiles().length > 0) {
+            photoCount = Math.max(1, photoCount);
+            this.isUpload = isUpload;
+            this.isCrop = isCrop && photoCount == 1;
+            this.photoCount = photoCount;
+            this.photos = null;
+            this.path = null;
+            this.urls.clear();
+            PhotoPicker.builder()
+                    .setPhotoCount(photoCount)
+                    .setShowCamera(showCamera)
+                    .setShowGif(false)
+                    .setPreviewEnabled(true)
+                    .setPicker(ListUtil.asList(new ListUtil.CallBack<File, String>() {
+                        @Override
+                        public String call(File file) {
+                            return file.getAbsolutePath();
+                        }
+                    }, dir.listFiles()))
+                    .start(this, PhotoPicker.REQUEST_CODE);
+        } else {
+            G.showToast("暂无截图");
+        }
+    }
+    private boolean showCamera = false;
+
+    public void setShowCamera(boolean showCamera) {
+        this.showCamera = showCamera;
+    }
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {

+ 0 - 17
app/src/main/java/com/sheep/gamegroup/event/ImageHeadChange.java

@@ -1,17 +0,0 @@
-package com.sheep.gamegroup.event;
-
-/**
- * Created by Administrator on 2018/3/27.
- */
-
-public class ImageHeadChange {
-    private  String avatar;
-
-    public String getAvatar() {
-        return avatar;
-    }
-
-    public void setAvatar(String avatar) {
-        this.avatar = avatar;
-    }
-}

+ 0 - 27
app/src/main/java/com/sheep/gamegroup/event/MoneyChange.java

@@ -1,27 +0,0 @@
-package com.sheep.gamegroup.event;
-
-/**
- * Created by Administrator on 2018/3/27.
- */
-
-public class MoneyChange {
-
-    private  String balance;
-    private  String  total_asset;
-
-    public String getBalance() {
-        return balance;
-    }
-
-    public void setBalance(String balance) {
-        this.balance = balance;
-    }
-
-    public String getTotal_asset() {
-        return total_asset;
-    }
-
-    public void setTotal_asset(String total_asset) {
-        this.total_asset = total_asset;
-    }
-}

+ 0 - 35
app/src/main/java/com/sheep/gamegroup/event/RealNameAutehrChange.java

@@ -1,35 +0,0 @@
-package com.sheep.gamegroup.event;
-
-/**
- * Created by Administrator on 2018/3/26.
- */
-
-public class RealNameAutehrChange {
-    private  String  realName;
-    private  String  idCard;
-    private  String  banck;
-
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    public String getIdCard() {
-        return idCard;
-    }
-
-    public void setIdCard(String idCard) {
-        this.idCard = idCard;
-    }
-
-    public String getBanck() {
-        return banck;
-    }
-
-    public void setBanck(String banck) {
-        this.banck = banck;
-    }
-}

+ 0 - 17
app/src/main/java/com/sheep/gamegroup/event/UserNameChange.java

@@ -1,17 +0,0 @@
-package com.sheep.gamegroup.event;
-
-/**
- * Created by Administrator on 2018/3/26.
- */
-
-public class UserNameChange {
-    String  nikeName;
-
-    public String getNikeName() {
-        return nikeName;
-    }
-
-    public void setNikeName(String nikeName) {
-        this.nikeName = nikeName;
-    }
-}

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/heler/TaskHelper.java

@@ -232,7 +232,8 @@ public class TaskHelper {
                                             .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                                                 @Override
                                                 public void onNext(BaseMessage baseMessage) {
-                                                    DataUtil.getInstance().setTaskListChange(true);//主页任务列表发生变化,回到主页后自动刷新
+                                                    CommonUtil.getInstance().setTAskEnty(null);
+                                                    DataUtil.getInstance().setTaskListChanged();//主页任务列表发生变化,回到主页后自动刷新
                                                     refreshTask();
                                                 }
 

+ 12 - 1
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -485,7 +485,7 @@ public interface ApiService {
     @GET("app/game_consumption/my_games")
     Observable<BaseMessage> getMyGames(@Query("page") int page, @Query("per_page") int per_page);
     /**
-     * 获取定向消费游戏列表
+     * 获取定向消费游戏
      */
     @GET("app/game_consumption/my_game/{id}")
     Observable<BaseMessage> getMyGame(@Path("id") String third_task_id);
@@ -712,4 +712,15 @@ public interface ApiService {
      */
     @POST("app/xiaomi/Receive")
     Observable<BaseMessage> receiveXiaomiAccount(@Body JSONObject id);
+
+    /**
+     * 获取邀请用户排名
+     */
+    @GET("app/user/invitation_top")
+    Observable<BaseMessage> getInvitationTop(@Query("top") int top);//top默认为5,可以不传
+    /**
+     * 获取邀请用户进两月礼物发放记录
+     */
+    @GET("app/user/invitation_top_record")
+    Observable<BaseMessage> getInvitationTopRecord();
 }

+ 41 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/AskAward.java

@@ -0,0 +1,41 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/8/7.
+ * realicing@sina.com
+ */
+public class AskAward {
+    private int UserId;
+
+    private String invitation_code;
+
+    private String prize;
+
+    private String nickname;
+
+    public void setUserId(int UserId){
+        this.UserId = UserId;
+    }
+    public int getUserId(){
+        return this.UserId;
+    }
+    public void setInvitation_code(String invitation_code){
+        this.invitation_code = invitation_code;
+    }
+    public String getInvitation_code(){
+        return this.invitation_code;
+    }
+    public void setPrize(String prize){
+        this.prize = prize;
+    }
+    public String getPrize(){
+        return this.prize;
+    }
+    public void setNickname(String nickname){
+        this.nickname = nickname;
+    }
+    public String getNickname(){
+        return this.nickname;
+    }
+
+}

+ 59 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/AskTop.java

@@ -0,0 +1,59 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/8/6.
+ * realicing@sina.com
+ */
+public class AskTop {
+
+    private float sum_amount;
+
+    private String user_id;
+
+    private String invitation_code;
+
+    private int sum_friend;
+
+    private String prize;
+
+    private String nickname;
+
+    public void setSum_amount(float sum_amount){
+        this.sum_amount = sum_amount;
+    }
+    public float getSum_amount(){
+        return this.sum_amount;
+    }
+    public void setUser_id(String user_id){
+        this.user_id = user_id;
+    }
+    public String getUser_id(){
+        return this.user_id;
+    }
+    public void setInvitation_code(String invitation_code){
+        this.invitation_code = invitation_code;
+    }
+    public String getInvitation_code(){
+        return this.invitation_code;
+    }
+    public void setSum_friend(int sum_friend){
+        this.sum_friend = sum_friend;
+    }
+    public int getSum_friend(){
+        return this.sum_friend;
+    }
+    public void setPrize(String prize){
+        this.prize = prize;
+    }
+    public String getPrize(){
+        return this.prize;
+    }
+
+    public String getNickname() {
+        return nickname;
+    }
+
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
+    }
+}

+ 9 - 2
app/src/main/java/com/sheep/gamegroup/model/entity/UserEntity.java

@@ -2,7 +2,10 @@ package com.sheep.gamegroup.model.entity;
 
 import android.text.TextUtils;
 
+import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.TestUtil;
+import com.sheep.gamegroup.view.dialog.DialogShare;
+
 import org.xutils.db.annotation.Column;
 import org.xutils.db.annotation.Table;
 
@@ -317,7 +320,11 @@ public class UserEntity implements Serializable {
         return must_bind_mobile == 0 && TextUtils.isEmpty(mobile);
     }
     //测试服用测试分享链接,正式服用正式的
-    public String getShareLink(){
-        return TestUtil.isTest() ? "http://10.8.210.230:8902/share.html?invitation_code="+getInvitation_code(): getShare_link();
+    public String getShareLink(@DialogShare.SHARE_TYPE String type){
+        return CommonUtil.getInstance().jointString(getShareLink(), type);
+    }
+    //测试服用测试分享链接,正式服用正式的
+    public String getShareLink(){//测试服对应的下载地址为http://10.8.230.17:7776/newsheep?id=32778005
+        return TestUtil.isSheep() ? getShare_link() : "http://10.8.210.230:8902/share.html?invitation_code="+getInvitation_code();
     }
 }

+ 4 - 2
app/src/main/java/com/sheep/gamegroup/model/util/AutoTaskListUtil.java

@@ -88,10 +88,12 @@ public class AutoTaskListUtil {
     }
 
     public void loadList(List<TaskAcceptedEty> list) {
+        DataUtil.getInstance().addTaskAcceptedEtyList(list);//添加正在运行的任务列表到内存中
+        clear();
         if(list != null) {
             for (TaskAcceptedEty item : list) {
-                if (item != null)
-                    AutoTaskListUtil.getInstance().addTask(item.getRelease_task());
+                if (item != null && item.isIs_running())
+                   addTask(item.getRelease_task());
             }
         }
     }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/usage/AppUsageManager.java

@@ -233,7 +233,7 @@ public class AppUsageManager {
                         appUsage.setPackageName(packageName);
                         long totalTime = usageStats.getTotalTimeInForeground();
                         long saveTotalTime = MyDbManager.getInstance().getAppUsageTime(packageName);
-                        if(saveTotalTime == 0 && totalTime > 0){
+                        if((saveTotalTime <= 0 || saveTotalTime > totalTime) && totalTime > 0){
                             appUsage.setTotalTimeInForeground(totalTime);
                             MyDbManager.getInstance().saveOrUpdate(appUsage);
                         }

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

@@ -10,6 +10,7 @@ import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.view.WindowManager;
 
+import java.net.URLEncoder;
 import java.util.Locale;
 
 /**
@@ -23,6 +24,7 @@ public class AppUtil {
     }
 
     public static String getQRLink(String share_link,int w) {
+        share_link = URLEncoder.encode(share_link);
 //        String link = BASE_QR + share_link +"&w="+w;
 //        LogUtil.println("link", link);
         return getQRLink(share_link, w, w);

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 302 - 201
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java


+ 4 - 4
app/src/main/java/com/sheep/gamegroup/util/ConnectAddress.java

@@ -1,7 +1,7 @@
 package com.sheep.gamegroup.util;
 
 
-import com.kfzs.duanduan.react.ReactUtil;
+import com.kfzs.duanduan.react.ConfigUtil;
 import com.kfzs.duanduan.react.SharedPreferences;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -36,7 +36,7 @@ public enum ConnectAddress {
 
         @Override
         public String getAppUrl() {
-            return "http://10.8.220.171:8080/";
+            return "http://10.8.220.171:8081/";
         }
         @Override
         public String getName() {
@@ -125,8 +125,8 @@ public enum ConnectAddress {
 
     public ConnectAddress getDefultConnectAddress() {
         if(TestUtil.isTest()){
-            if(ReactUtil.isHasConnectConfig()) {
-                String flavor = ReactUtil.getConectConfig();
+            if(ConfigUtil.getInstance().isFileExists()) {
+                String flavor = ConfigUtil.getInstance().getItem(0);//第一行填写connectAddress的名字
                 try {
                     return ConnectAddress.valueOf(flavor);
                 } catch (IllegalArgumentException e) {

+ 212 - 21
app/src/main/java/com/sheep/gamegroup/util/DataUtil.java

@@ -1,19 +1,39 @@
 package com.sheep.gamegroup.util;
 
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.usage.UsageStats;
+import android.app.usage.UsageStatsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.media.projection.MediaProjectionManager;
+import android.os.Build;
 import android.text.TextUtils;
 
 import com.alibaba.fastjson.JSON;
 import com.sheep.gamegroup.model.api.BaseMessageConverter;
 import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
+import com.sheep.gamegroup.model.util.AutoTaskListUtil;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.FileUtil;
+import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import org.afinal.simplecache.ACache;
 import org.afinal.simplecache.ApiKey;
 
+import java.io.File;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import rx.functions.Action1;
+
+import static android.app.Activity.RESULT_OK;
 
 /**
  * Created by realicing on 2018/7/27.
@@ -22,6 +42,7 @@ import java.util.List;
 public class DataUtil {
     private static DataUtil instance = new DataUtil();
     private ACache aCache;
+
     private DataUtil() {
         aCache = ACache.get(SheepApp.getInstance());
         userEntity = getCacheResult(ApiKey.get_info, UserEntity.class);//先从缓存中初始化用户信息
@@ -124,21 +145,14 @@ public class DataUtil {
         return "";
     }
 
-    /**
-     * 获取当前用户的微信昵称
-     *
-     * @return
-     */
-    public String getUserWxNicknName() {
-        UserEntity userEntity = DataUtil.getInstance().getUserEntity();
-        if (userEntity != null && userEntity.getWx_nickname() != null)
-            return userEntity.getWx_nickname();
-        return "";
-    }
+    public void setUserNickName(String nickname) {
+        if (userEntity != null)
+            userEntity.setNickname(nickname);
 
-    public void setUserWxNickName(String wx_nickname) {
+    }
+    public void setUserAvatar(String avatar) {
         if (userEntity != null)
-            userEntity.setWx_nickname(wx_nickname);
+            userEntity.setAvatar(avatar);
 
     }
 
@@ -158,6 +172,7 @@ public class DataUtil {
 
     /**
      * 重新设置api为key的数据的时间为saveTime,若本身没有数据,则保存空数据
+     *
      * @param key
      * @param saveTime 单位秒
      */
@@ -173,6 +188,7 @@ public class DataUtil {
 
     /**
      * 获取缓存的数据列表,为空代表没有获取过,为空字符串代表之前获取数据为空列表
+     *
      * @param key
      * @param classT
      * @param <T>
@@ -182,7 +198,7 @@ public class DataUtil {
         String cacheData = aCache.getAsString(SheepApp.getInstance().getConnectAddress().getAppUrl() + "v1/" + key);
         if (cacheData == null) {
             return null;
-        } else if(cacheData.isEmpty()){
+        } else if (cacheData.isEmpty()) {
             return ListUtil.emptyList();
         }
         if (BuildConfig.XXTEA_ENCRYPT) {
@@ -208,24 +224,199 @@ public class DataUtil {
 
     //-----------------------------------------缓存数据部分-----------------------------------------------------结束
     //-----------------------------------------进行任务部分-----------------------------------------------------开始
-    private boolean taskListChange = false;
+
     /**
      * 是否首页正在运行的任务与发布的任务列表发生变化
+     *
      * @return
      */
-    public void resetTaskListChange() {
-        taskListChange = false;
+    public boolean isTaskListChange(Class<?> tagClass) {
+        return isTaskListChange(tagClass.getName());
     }
+
     /**
      * 是否首页正在运行的任务与发布的任务列表发生变化
+     *
      * @return
      */
-    public boolean isTaskListChange() {
-        return taskListChange;
+    public boolean isTaskListChange(String tag) {
+        if (tagList.contains(tag)) {//包含tag,说明使用该tag的地方已经刷新数据
+            return false;
+        } else {
+            tagList.add(tag);
+            return true;
+        }
     }
 
-    public void setTaskListChange(boolean taskListChange) {
-        this.taskListChange = taskListChange;
+    private List<String> tagList = ListUtil.emptyList();
+
+    public void setTaskListChanged() {
+        tagList.clear();
     }
+
     //-----------------------------------------进行任务部分-----------------------------------------------------结束
+
+    //-----------------------------------------其它数据部分-----------------------------------------------------开始
+    private Map<String, Object> objectMap = new HashMap<>();
+
+    /**
+     * 存放共享数据
+     *
+     * @param key
+     * @param data
+     */
+    public void putData(String key, Object data) {
+        objectMap.put(key, data);
+    }
+
+    /**
+     * 获取共享数据并删除
+     *
+     * @param key
+     */
+    public Object getData(String key) {
+        if (objectMap.containsKey(key)) {
+            return objectMap.remove(key);
+        }
+        return null;
+    }
+    //是否使用小绵羊截图方案
+    public static final boolean IS_USE_SCREEN_SHOT = BuildConfig.DEBUG;
+    /**
+     * 截图路径
+     *
+     * @return
+     */
+    public File getScreenShotsFile(String packageName) {
+        File dir = getScreenShotsDir(packageName);
+        if(!dir.exists())
+            dir.mkdirs();
+        return new File(dir, TimeUtil.getDate("yyyy-MM-dd-hh-mm-ss")+".png");
+    }
+
+    /**
+     * 截图目录
+     *
+     * @return
+     */
+    public File getScreenShotsDir() {
+        return SheepApp.getInstance().getDir("ScreenShots", Context.MODE_PRIVATE);
+    }
+    /**
+     * 指定程序的截图目录
+     *
+     * @return
+     */
+    public File getScreenShotsDir(String packageName) {
+        return new File(SheepApp.getInstance().getDir("ScreenShots", Context.MODE_PRIVATE), packageName);
+    }
+
+    /**
+     * 删除所有截图
+     */
+    public void clearScreenShots() {
+        FileUtil.deleteFile(getScreenShotsDir(), false);
+    }
+
+    public static final int REQUEST_MEDIA_PROJECTION = 18;
+    public static final String REQUEST_CAPTURE_PERMISSION = "requestCapturePermission";//获取录屏权限
+
+    private Action1<Integer> action1;
+
+    public void requestCapturePermission(Activity activity, Action1<Integer> action1) {
+        if(IS_USE_SCREEN_SHOT) {//使用小绵羊截图方案
+            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
+                this.action1 = action1;
+                //5.0 之后才允许使用屏幕截图
+                MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) activity.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
+                if (mediaProjectionManager != null) {
+                    activity.startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION);
+                    return;
+                }
+            }
+            G.showToast("您的系统版本过低,暂不支持该功能");
+        } else {
+            action1.call(0);
+        }
+    }
+
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        switch (requestCode) {
+            case REQUEST_MEDIA_PROJECTION:
+                if (resultCode == RESULT_OK && data != null) {
+                    DataUtil.getInstance().putData(REQUEST_CAPTURE_PERMISSION, data);
+                    if (action1 != null)
+                        action1.call(0);
+                }
+                break;
+        }
+
+    }
+
+    /**
+     * 获取前台运行的程序的包名
+     * @return
+     */
+    @SuppressLint("NewApi")
+    public String getPackageNameInForeground() {
+        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
+            UsageStatsManager mUsageStatsManager = (UsageStatsManager) SheepApp.getInstance().getSystemService(Context.USAGE_STATS_SERVICE);//usagestats
+            long time = System.currentTimeMillis();
+            if (mUsageStatsManager != null) {
+                List<UsageStats> usageStatsList = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, AutoTaskListUtil.getInstance().getReceiveTaskTime(), time);
+
+                if (!ListUtil.isEmpty(usageStatsList)) {
+                    TreeMap<Long, UsageStats> mySortedMap = new TreeMap<>();
+                    for (UsageStats item : usageStatsList) {
+                        mySortedMap.put(item.getLastTimeUsed(), item);
+                    }
+
+                    UsageStats usageStats = mySortedMap.get(mySortedMap.lastKey());
+
+                    return usageStats.getPackageName();
+                }
+            }
+        }
+        android.app.ActivityManager.RunningAppProcessInfo process = getAppProcessInfoInForeground();
+        if (process != null) {
+            return process.processName;
+        }
+        return null;
+    }
+
+    private android.app.ActivityManager.RunningAppProcessInfo getAppProcessInfoInForeground() {
+        android.app.ActivityManager manager = (android.app.ActivityManager) SheepApp.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
+        List<android.app.ActivityManager.RunningAppProcessInfo> processList = manager == null ? null : manager.getRunningAppProcesses();
+        if (!ListUtil.isEmpty(processList)) {
+            for (android.app.ActivityManager.RunningAppProcessInfo item : processList) {
+                if (item != null && item.importance == android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
+                    return item;
+                }
+            }
+        }
+        return null;
+    }
+    //正在运行的任务
+    List<TaskAcceptedEty> taskAcceptedEtyList = ListUtil.emptyList();
+    public void addTaskAcceptedEtyList(List<TaskAcceptedEty> list) {
+        taskAcceptedEtyList.clear();
+        taskAcceptedEtyList.addAll(list);
+    }
+
+    /**
+     * 通过包名从内存中正在运行的任务列表中获取正在运行的任务
+     * @param pacageName
+     * @return
+     */
+    public TaskAcceptedEty getTaskAcceptedEtyFromPackageName(String pacageName) {
+        if(!TextUtils.isEmpty(pacageName))
+            for (TaskAcceptedEty taskAcceptedEty : taskAcceptedEtyList) {
+                if(taskAcceptedEty != null && taskAcceptedEty.getRelease_task() != null && taskAcceptedEty.getRelease_task().getTask() != null
+                        && TextUtils.equals(taskAcceptedEty.getRelease_task().getTask().getPackage_names(), pacageName)){
+                    return taskAcceptedEty;
+                }
+            }
+        return null;
+    }
+    //-----------------------------------------其它数据部分-----------------------------------------------------结束
 }

+ 362 - 0
app/src/main/java/com/sheep/gamegroup/util/GlobalScreenShot.java

@@ -0,0 +1,362 @@
+package com.sheep.gamegroup.util;
+
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.PixelFormat;
+import android.graphics.PointF;
+import android.media.MediaActionSound;
+import android.util.DisplayMetrics;
+import android.view.Display;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.animation.Interpolator;
+import android.widget.ImageView;
+
+import com.sheep.jiuyan.samllsheep.R;
+
+
+/**
+ * TODO: - Performance when over gl surfaces? Ie. Gallery - what do we say in the Toast? Which icon
+ * do we get if the user uses another type of gallery?
+ */
+public class GlobalScreenShot {
+  private static final String TAG = "GlobalScreenshot";
+
+  private static final int SCREENSHOT_FLASH_TO_PEAK_DURATION = 130;
+  private static final int SCREENSHOT_DROP_IN_DURATION = 430;
+  private static final int SCREENSHOT_DROP_OUT_DELAY = 500;
+  private static final int SCREENSHOT_DROP_OUT_DURATION = 430;
+  private static final int SCREENSHOT_DROP_OUT_SCALE_DURATION = 370;
+  private static final int SCREENSHOT_FAST_DROP_OUT_DURATION = 320;
+  private static final float BACKGROUND_ALPHA = 0.5f;
+  private static final float SCREENSHOT_SCALE = 1f;
+  private static final float SCREENSHOT_DROP_IN_MIN_SCALE = SCREENSHOT_SCALE * 0.725f;
+  private static final float SCREENSHOT_DROP_OUT_MIN_SCALE = SCREENSHOT_SCALE * 0.45f;
+  private static final float SCREENSHOT_FAST_DROP_OUT_MIN_SCALE = SCREENSHOT_SCALE * 0.6f;
+  private static final float SCREENSHOT_DROP_OUT_MIN_SCALE_OFFSET = 0f;
+
+  private Context mContext;
+  private WindowManager mWindowManager;
+  private WindowManager.LayoutParams mWindowLayoutParams;
+  private Display mDisplay;
+  private DisplayMetrics mDisplayMetrics;
+
+  private Bitmap mScreenBitmap;
+  private View mScreenshotLayout;
+  private ImageView mBackgroundView;
+  private ImageView mScreenshotView;
+  private ImageView mScreenshotFlash;
+
+  private AnimatorSet mScreenshotAnimation;
+
+  private float mBgPadding;
+  private float mBgPaddingScale;
+
+  private MediaActionSound mCameraSound;
+
+
+  private onScreenShotListener mOnScreenShotListener;
+
+  /**
+   * @param context everything needs a context :(
+   */
+  public GlobalScreenShot(Context context) {
+    Resources r = context.getResources();
+    mContext = context;
+    LayoutInflater layoutInflater = (LayoutInflater)
+        context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+    // Inflate the screenshot layout
+    mScreenshotLayout = layoutInflater.inflate(R.layout.global_screenshot, null);
+    mBackgroundView = (ImageView) mScreenshotLayout.findViewById(R.id.global_screenshot_background);
+    mScreenshotView = (ImageView) mScreenshotLayout.findViewById(R.id.global_screenshot);
+    mScreenshotFlash = (ImageView) mScreenshotLayout.findViewById(R.id.global_screenshot_flash);
+    mScreenshotLayout.setFocusable(true);
+    mScreenshotLayout.setOnTouchListener(new View.OnTouchListener() {
+      @Override
+      public boolean onTouch(View v, MotionEvent event) {
+        // Intercept and ignore all touch events
+        return true;
+      }
+    });
+
+    // Setup the window that we are going to use
+    mWindowLayoutParams = new WindowManager.LayoutParams(
+        ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 0, 0,
+        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
+        WindowManager.LayoutParams.FLAG_FULLSCREEN
+            | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
+            | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
+            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
+        PixelFormat.TRANSLUCENT);
+    mWindowLayoutParams.setTitle("ScreenshotAnimation");
+    mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+
+    mDisplay = mWindowManager.getDefaultDisplay();
+    mDisplayMetrics = new DisplayMetrics();
+    mDisplay.getRealMetrics(mDisplayMetrics);
+
+    // Scale has to account for both sides of the bg
+    mBgPadding = (float) r.getDimensionPixelSize(R.dimen.content_padding_1);
+    mBgPaddingScale = mBgPadding / mDisplayMetrics.widthPixels;
+
+    // Setup the Camera shutter sound
+    mCameraSound = new MediaActionSound();
+    mCameraSound.load(MediaActionSound.SHUTTER_CLICK);
+  }
+
+
+  /**
+   * Takes a screenshot of the current display and shows an animation.
+   */
+  public void takeScreenshot(Bitmap bitmap, onScreenShotListener onScreenShotListener, boolean statusBarVisible, boolean navBarVisible) {
+    // Take the screenshot
+    mScreenBitmap = bitmap;
+    this.mOnScreenShotListener = onScreenShotListener;
+
+    if (mOnScreenShotListener != null) {
+      mOnScreenShotListener.onStartShot();
+    }
+
+    if (mScreenBitmap == null) {
+      notifyScreenshotError(mContext);
+      return;
+    }
+
+    // Optimizations
+    mScreenBitmap.setHasAlpha(false);
+    mScreenBitmap.prepareToDraw();
+
+    // Start the post-screenshot animation
+    startAnimation(mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels,
+        statusBarVisible, navBarVisible);
+  }
+
+
+  /**
+   * Starts the animation after taking the screenshot
+   */
+  private void startAnimation(int w, int h, boolean statusBarVisible,
+                              boolean navBarVisible) {
+    // Add the view for the animation
+    mScreenshotView.setImageBitmap(mScreenBitmap);
+    mScreenshotLayout.requestFocus();
+
+    // Setup the animation with the screenshot just taken
+    if (mScreenshotAnimation != null) {
+      mScreenshotAnimation.end();
+      mScreenshotAnimation.removeAllListeners();
+    }
+
+    mWindowManager.addView(mScreenshotLayout, mWindowLayoutParams);
+    ValueAnimator screenshotDropInAnim = createScreenshotDropInAnimation();
+    ValueAnimator screenshotFadeOutAnim = createScreenshotDropOutAnimation(w, h,
+        statusBarVisible, navBarVisible);
+    mScreenshotAnimation = new AnimatorSet();
+    mScreenshotAnimation.playSequentially(screenshotDropInAnim, screenshotFadeOutAnim);
+    mScreenshotAnimation.addListener(new AnimatorListenerAdapter() {
+      @Override
+      public void onAnimationEnd(Animator animation) {
+        // Save the screenshot once we have a bit of time now
+        saveScreenshotInWorkerThread();
+        mWindowManager.removeView(mScreenshotLayout);
+
+        // Clear any references to the bitmap
+        mScreenBitmap = null;
+        mScreenshotView.setImageBitmap(null);
+
+      }
+    });
+    mScreenshotLayout.post(new Runnable() {
+      @Override
+      public void run() {
+        // Play the shutter sound to notify that we've taken a screenshot
+        mCameraSound.play(MediaActionSound.SHUTTER_CLICK);
+
+        mScreenshotView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+        mScreenshotView.buildLayer();
+        mScreenshotAnimation.start();
+      }
+    });
+  }
+
+  private ValueAnimator createScreenshotDropInAnimation() {
+    final float flashPeakDurationPct = ((float) (SCREENSHOT_FLASH_TO_PEAK_DURATION)
+        / SCREENSHOT_DROP_IN_DURATION);
+    final float flashDurationPct = 2f * flashPeakDurationPct;
+    final Interpolator flashAlphaInterpolator = new Interpolator() {
+      @Override
+      public float getInterpolation(float x) {
+        // Flash the flash view in and out quickly
+        if (x <= flashDurationPct) {
+          return (float) Math.sin(Math.PI * (x / flashDurationPct));
+        }
+        return 0;
+      }
+    };
+    final Interpolator scaleInterpolator = new Interpolator() {
+      @Override
+      public float getInterpolation(float x) {
+        // We start scaling when the flash is at it's peak
+        if (x < flashPeakDurationPct) {
+          return 0;
+        }
+        return (x - flashDurationPct) / (1f - flashDurationPct);
+      }
+    };
+    ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f);
+    anim.setDuration(SCREENSHOT_DROP_IN_DURATION);
+    anim.addListener(new AnimatorListenerAdapter() {
+      @Override
+      public void onAnimationStart(Animator animation) {
+        mBackgroundView.setAlpha(0f);
+        mBackgroundView.setVisibility(View.VISIBLE);
+        mScreenshotView.setAlpha(0f);
+        mScreenshotView.setTranslationX(0f);
+        mScreenshotView.setTranslationY(0f);
+        mScreenshotView.setScaleX(SCREENSHOT_SCALE + mBgPaddingScale);
+        mScreenshotView.setScaleY(SCREENSHOT_SCALE + mBgPaddingScale);
+        mScreenshotView.setVisibility(View.VISIBLE);
+        mScreenshotFlash.setAlpha(0f);
+        mScreenshotFlash.setVisibility(View.VISIBLE);
+      }
+
+      @Override
+      public void onAnimationEnd(Animator animation) {
+        mScreenshotFlash.setVisibility(View.GONE);
+      }
+    });
+    anim.addUpdateListener(new AnimatorUpdateListener() {
+      @Override
+      public void onAnimationUpdate(ValueAnimator animation) {
+        float t = (Float) animation.getAnimatedValue();
+        float scaleT = (SCREENSHOT_SCALE + mBgPaddingScale)
+            - scaleInterpolator.getInterpolation(t)
+            * (SCREENSHOT_SCALE - SCREENSHOT_DROP_IN_MIN_SCALE);
+        mBackgroundView.setAlpha(scaleInterpolator.getInterpolation(t) * BACKGROUND_ALPHA);
+        mScreenshotView.setAlpha(t);
+        mScreenshotView.setScaleX(scaleT);
+        mScreenshotView.setScaleY(scaleT);
+        mScreenshotFlash.setAlpha(flashAlphaInterpolator.getInterpolation(t));
+      }
+    });
+    return anim;
+  }
+
+  private ValueAnimator createScreenshotDropOutAnimation(int w, int h, boolean statusBarVisible,
+                                                         boolean navBarVisible) {
+    ValueAnimator anim = ValueAnimator.ofFloat(0f, 1f);
+    anim.setStartDelay(SCREENSHOT_DROP_OUT_DELAY);
+    anim.addListener(new AnimatorListenerAdapter() {
+      @Override
+      public void onAnimationEnd(Animator animation) {
+        mBackgroundView.setVisibility(View.GONE);
+        mScreenshotView.setVisibility(View.GONE);
+        mScreenshotView.setLayerType(View.LAYER_TYPE_NONE, null);
+      }
+    });
+
+    if (!statusBarVisible || !navBarVisible) {
+      // There is no status bar/nav bar, so just fade the screenshot away in place
+      anim.setDuration(SCREENSHOT_FAST_DROP_OUT_DURATION);
+      anim.addUpdateListener(new AnimatorUpdateListener() {
+        @Override
+        public void onAnimationUpdate(ValueAnimator animation) {
+          float t = (Float) animation.getAnimatedValue();
+          float scaleT = (SCREENSHOT_DROP_IN_MIN_SCALE + mBgPaddingScale)
+              - t * (SCREENSHOT_DROP_IN_MIN_SCALE - SCREENSHOT_FAST_DROP_OUT_MIN_SCALE);
+          mBackgroundView.setAlpha((1f - t) * BACKGROUND_ALPHA);
+          mScreenshotView.setAlpha(1f - t);
+          mScreenshotView.setScaleX(scaleT);
+          mScreenshotView.setScaleY(scaleT);
+        }
+      });
+    } else {
+      // In the case where there is a status bar, animate to the origin of the bar (top-left)
+      final float scaleDurationPct = (float) SCREENSHOT_DROP_OUT_SCALE_DURATION
+          / SCREENSHOT_DROP_OUT_DURATION;
+      final Interpolator scaleInterpolator = new Interpolator() {
+        @Override
+        public float getInterpolation(float x) {
+          if (x < scaleDurationPct) {
+            // Decelerate, and scale the input accordingly
+            return (float) (1f - Math.pow(1f - (x / scaleDurationPct), 2f));
+          }
+          return 1f;
+        }
+      };
+
+      // Determine the bounds of how to scale
+      float halfScreenWidth = (w - 2f * mBgPadding) / 2f;
+      float halfScreenHeight = (h - 2f * mBgPadding) / 2f;
+      final float offsetPct = SCREENSHOT_DROP_OUT_MIN_SCALE_OFFSET;
+      final PointF finalPos = new PointF(
+          -halfScreenWidth + (SCREENSHOT_DROP_OUT_MIN_SCALE + offsetPct) * halfScreenWidth,
+          -halfScreenHeight + (SCREENSHOT_DROP_OUT_MIN_SCALE + offsetPct) * halfScreenHeight);
+
+      // Animate the screenshot to the status bar
+      anim.setDuration(SCREENSHOT_DROP_OUT_DURATION);
+      anim.addUpdateListener(new AnimatorUpdateListener() {
+        @Override
+        public void onAnimationUpdate(ValueAnimator animation) {
+          float t = (Float) animation.getAnimatedValue();
+          float scaleT = (SCREENSHOT_DROP_IN_MIN_SCALE + mBgPaddingScale)
+              - scaleInterpolator.getInterpolation(t)
+              * (SCREENSHOT_DROP_IN_MIN_SCALE - SCREENSHOT_DROP_OUT_MIN_SCALE);
+          mBackgroundView.setAlpha((1f - t) * BACKGROUND_ALPHA);
+          mScreenshotView.setAlpha(1f - scaleInterpolator.getInterpolation(t));
+          mScreenshotView.setScaleX(scaleT);
+          mScreenshotView.setScaleY(scaleT);
+          mScreenshotView.setTranslationX(t * finalPos.x);
+          mScreenshotView.setTranslationY(t * finalPos.y);
+        }
+      });
+    }
+    return anim;
+  }
+
+  private void notifyScreenshotError(Context context) {
+    if (mOnScreenShotListener != null) {
+      mOnScreenShotListener.onFinishShot(false);
+    }
+  }
+
+  private void saveScreenshotInWorkerThread() {
+    if (mOnScreenShotListener != null) {
+      mOnScreenShotListener.onFinishShot(true);
+    }
+  }
+
+
+  public interface onScreenShotListener {
+
+    void onStartShot();
+
+    void onFinishShot(boolean success);
+  }
+}

+ 62 - 9
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -95,20 +95,24 @@ import com.sheep.gamegroup.view.activity.WithdrawalListAct;
 import com.sheep.gamegroup.view.activity.WithdrawalResultAct;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTask1;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskRegistSuccess;
+import com.sheep.gamegroup.view.dialog.DialogShare;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.service.FloatService;
+import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import org.afinal.simplecache.ACache;
 import org.xutils.ex.DbException;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
+import me.iwf.photopicker.PhotoPicker;
 import me.iwf.photopicker.PhotoPreview;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
@@ -251,11 +255,11 @@ public class Jump2View {
         CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
             @Override
             public void call(UserEntity userEntity) {
-                if(userEntity != null && !TextUtils.isEmpty(userEntity.getShareLink())) {
+                if(userEntity != null && !TextUtils.isEmpty(userEntity.getShareLink("other"))) {
 //                                GlideImageLoader.downLoadImage(userEntity.getShare_link().hashCode(), AppUtil.getQRLink(userEntity.getShare_link(), 800), null);
 //                                //PersionInfoAct.java与AskGetMoneyAct.java中分享二维码时的图片预下载
                     Glide.with(activity)
-                            .load(AppUtil.getQRLink(userEntity.getShareLink(), 800))
+                            .load(AppUtil.getQRLink(userEntity.getShareLink("other"), 800))
                             .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE))
                             .preload(800, 800);
                 }
@@ -285,11 +289,11 @@ public class Jump2View {
                     CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
                         @Override
                         public void call(UserEntity userEntity) {
-                            if(userEntity != null && !TextUtils.isEmpty(userEntity.getShareLink())) {
+                            if(userEntity != null && !TextUtils.isEmpty(userEntity.getShareLink("other"))) {
 //                                GlideImageLoader.downLoadImage(userEntity.getShare_link().hashCode(), AppUtil.getQRLink(userEntity.getShare_link(), 800), null);
 //                                //PersionInfoAct.java与AskGetMoneyAct.java中分享二维码时的图片预下载
                                 Glide.with(activity)
-                                        .load(AppUtil.getQRLink(userEntity.getShareLink(), 800))
+                                        .load(AppUtil.getQRLink(userEntity.getShareLink("other"), 800))
                                         .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE))
                                         .preload(800, 800);
                             }
@@ -955,6 +959,40 @@ public class Jump2View {
                     .start(activity);
         }
     }
+    /**
+     * 显示多张图片
+     * @param context
+     * @param position
+     * @param files
+     */
+    public void showImgFiles(Context context, int position, File...files) {
+        showImgList(context, position, ListUtil.asList(new ListUtil.CallBack<File, String>() {
+            @Override
+            public String call(File file) {
+                return file.getAbsolutePath();
+            }
+        }, files));
+    }
+    /**
+     * 提供多张图片给用户选择
+     * @param activity
+     * @param photoCount
+     * @param files
+     */
+    public void selectImgFiles(Activity activity, int photoCount, File...files) {
+        PhotoPicker.builder()
+                .setPhotoCount(photoCount)
+                .setShowCamera(false)
+                .setShowGif(false)
+                .setPreviewEnabled(true)
+                .setPicker(ListUtil.asList(new ListUtil.CallBack<File, String>() {
+                    @Override
+                    public String call(File file) {
+                        return file.getAbsolutePath();
+                    }
+                }, files))
+                .start(activity, PhotoPicker.REQUEST_CODE);
+    }
 
 
 
@@ -968,6 +1006,17 @@ public class Jump2View {
         intent.putExtra("isShow", isShow);
         context.startService(intent);
     }
+    /**
+     * 启动小绵羊悬浮窗
+     * @param context
+     */
+    public void startShotScreenFloat(Context context, boolean isShow) {
+        if(DataUtil.IS_USE_SCREEN_SHOT) {
+            Intent intent = new Intent(context, FloatShotScreenService.class);
+            intent.putExtra("isShow", isShow);
+            context.startService(intent);
+        }
+    }
 
 
     /**
@@ -1029,7 +1078,8 @@ public class Jump2View {
             return;
         }
         if (userEntity.getIs_new() == 2){ //1新用户 2老用户
-            newbie_task.setVisibility(View.GONE);
+            if(newbie_task != null)
+                newbie_task.setVisibility(View.GONE);
         } else {
             NewbieTaskRecord newbie_task_record = null;
             try {
@@ -1041,7 +1091,8 @@ public class Jump2View {
             if (
 //                !BuildConfig.DEBUG &&
                     !userEntity.isNewRegistUser() || dontShowNewbieTaskDialog) {
-                newbie_task.setVisibility(View.VISIBLE);
+                if(newbie_task != null)
+                    newbie_task.setVisibility(View.VISIBLE);
                 return;
             }
             final NewbieTaskRecord finalNewbie_task_record = newbie_task_record;
@@ -1051,7 +1102,8 @@ public class Jump2View {
                     .subscribe(new SheepSubscriber<BaseMessage>(activity) {
                         @Override
                         public void onNext(BaseMessage baseMessage) {
-                            newbie_task.setVisibility(View.VISIBLE);
+                            if(newbie_task != null)
+                                newbie_task.setVisibility(View.VISIBLE);
                             List<NewbieTask> newbieTaskList = baseMessage.getDatas(NewbieTask.class);
                             if (newbieTaskList != null && !newbieTaskList.isEmpty() && newbieTaskList.size() > 1 && !newbieTaskList.get(1).getFinished()) {//了解小绵羊任务未完成时
                                 DialogNewbieTaskRegistSuccess.showDialog(activity, finalNewbie_task_record, newbieTaskList.get(0));
@@ -1076,7 +1128,8 @@ public class Jump2View {
 
                         @Override
                         public void onError(BaseMessage baseMessage) {
-                            newbie_task.setVisibility(View.GONE);
+                            if(newbie_task != null)
+                                newbie_task.setVisibility(View.GONE);
                         }
                     });
         }
@@ -1368,7 +1421,7 @@ public class Jump2View {
                 @Override
                 public void call(String find_share_url) {
                     String url = String.format(Locale.CHINA, "%s?authorization=%s&%s=%d&invitation_code=%s", find_share_url, SpUtils.getToken(activity), idName, id, DataUtil.getInstance().getInvitationCode());
-                    CommonUtil.getInstance().popShare(activity, url, "all");
+                    CommonUtil.getInstance().popShare(activity, url, DialogShare.ALL);
                 }
             });
         }catch (Exception e){

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

@@ -86,6 +86,15 @@ public class ListUtil {
         Collections.addAll(list, items);
         return list;
     }
+    @SafeVarargs
+    public static <T,R> ArrayList<R> asList(CallBack<T, R> callBack, T...items) {
+        ArrayList<R> list = emptyList();
+        for (T t : items) {
+            R r = callBack.call(t);
+            list.add(r);
+        }
+        return list;
+    }
 
     public static <T> List<T> removeItem(List<T> list, CallBack<T, Boolean> callBack) {
         if(isEmpty(list)){

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

@@ -262,6 +262,12 @@ public class StringUtils {
         Matcher matcher = pattern.matcher(number);
         return matcher.matches();
     }
+    // 校验中文
+    public static boolean isChinese(String name) {
+        Pattern p = Pattern.compile("^[\u4E00-\u9FA50]+$");
+        Matcher m = p.matcher(name);
+        return m.matches();
+    }
 
     /**
      * 格式化json

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

@@ -25,6 +25,7 @@ import android.widget.TextView;
 import com.alibaba.fastjson.JSON;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
+import com.kfzs.duanduan.react.ConfigUtil;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.model.entity.AppInfo;
 import com.sheep.gamegroup.model.entity.BaseMessage;
@@ -131,6 +132,7 @@ public class SysAppUtil {
                     public Integer call(Integer integer) {
                         Glide.get(SheepApp.getInstance()).clearDiskCache();//清理图片
                         ClassFileHelper.getInstance().clearDir();//清理下载文件
+                        DataUtil.getInstance().clearScreenShots();//清除所有截图
                         return integer;
                     }
                 })
@@ -154,11 +156,12 @@ public class SysAppUtil {
 //            File cacheDir = SheepApp.getInstance().getExternalCacheDir();
 //            long filesDirSize = getFolderSize(filesDir);
 //            long cacheSize = getFolderSize(cacheDir);
+            long screenShotsSize = getFolderSize(DataUtil.getInstance().getScreenShotsDir());
             long apkSize = getFolderSize(new File(ClassFileHelper.DIR));
             File cacheDirPath = SheepApp.getInstance().getCacheDir();
             long glideSize = getFolderSize(new File( cacheDirPath, InternalCacheDiskCacheFactory.DEFAULT_DISK_CACHE_DIR));
             return getFormatSize(//filesDirSize+cacheSize+
-                     apkSize+glideSize);
+                    screenShotsSize+apkSize+glideSize);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -409,6 +412,11 @@ public class SysAppUtil {
      * @param action1 动作完成后的回调
      */
     public static void showVersionInfo(final Activity activity, final String ignoreMd5, final Action1<Integer> action1) {
+        if(!ConfigUtil.getInstance().isUpgrade()) {
+            if(action1 != null)
+                action1.call(0);
+            return;
+        }
         if(dialog != null){
             try {
                 if(dialog.isShowing()) {

+ 23 - 8
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -14,10 +14,9 @@ import android.view.View;
 import android.widget.ArrayAdapter;
 import android.widget.TextView;
 
-import com.alibaba.fastjson.JSONObject;
 import com.bumptech.glide.Glide;
 import com.kfzs.duanduan.ActMain;
-import com.kfzs.duanduan.react.ReactUtil;
+import com.kfzs.duanduan.react.ConfigUtil;
 import com.kfzs.duanduan.view.DialogStorageLow;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.CreditCard;
@@ -32,6 +31,7 @@ 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.gamegroup.view.dialog.DialogShare;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -43,8 +43,6 @@ import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
 
-import org.afinal.simplecache.ACache;
-
 import java.io.File;
 import java.util.List;
 import java.util.Locale;
@@ -167,7 +165,7 @@ public class TestUtil {
     }
 
     public static void testChange(final Activity activity, TextView test_change) {
-        if (isTest() && !ReactUtil.isHasConnectConfig()) {
+        if (isTest() && !ConfigUtil.getInstance().isFileExists()) {
             test_change.setVisibility(View.VISIBLE);
             test_change.setText(SheepApp.getInstance().getConnectAddress().getName());
             test_change.setOnClickListener(new View.OnClickListener() {
@@ -189,7 +187,7 @@ public class TestUtil {
         }
     }
     public static void testChangeUser(final Activity activity, TextView test_change) {
-        if (isTest() && !ReactUtil.isHasConnectConfig()) {
+        if (isTest() && !ConfigUtil.getInstance().isFileExists()) {
 
             test_change.setVisibility(View.VISIBLE);
             test_change.setText("切换账号");
@@ -285,7 +283,8 @@ public class TestUtil {
      * @param activity
      */
     public static void test(final Activity activity) {
-        final String[] items = {"小米游戏","复制token","复制imsi","复制打点数据","测试可用金额","测试定位信息","测试apk的渠道","幂动科技","游戏搜索","游戏帐号","游戏代充","尝试开启第三方应用使用情况","测试代理页面","第三方应用使用情况",
+        final String[] items = {"复制token","复制打点数据","查看截图","复制imsi","小米游戏","测试可用金额","测试定位信息","测试apk的渠道","幂动科技","游戏搜索",
+                "游戏帐号","游戏代充","尝试开启第三方应用使用情况","测试代理页面","第三方应用使用情况",
                 "开启第三方应用使用情况","h5跳转","新手对话框","md5","空间不足提示框",
                 "显示已经安装应用列表","复制faq地址","复制代理地址","复制世界杯地址","任务游戏列表","世界杯活动","交通银行信用卡测试",
                 "浦发银行信用卡测试", "测试游戏模块","打卡成功提示","定向货币详情","进入绑定身份认证界面时的提示","提交身份认证时的提示", "检查标签",
@@ -296,6 +295,22 @@ public class TestUtil {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
+                            case "查看截图":
+                                File root = DataUtil.getInstance().getScreenShotsDir();
+                                if(!root.exists() || root.listFiles().length <= 0){
+                                    G.showToast("暂无截图");
+                                } else {
+                                    File dir = DataUtil.getInstance().getScreenShotsDir().listFiles()[0];
+                                    if (dir.exists()) {
+                                        G.showToast("截图个数为:" + dir.list().length);
+                                    } else {
+                                        G.showToast("截图目录不存在");
+                                    }
+                                    if (dir.list().length > 0) {
+                                        Jump2View.getInstance().selectImgFiles(activity, 7, dir.listFiles());
+                                    }
+                                }
+                                break;
                             case "小米游戏":
                                 Jump2View.getInstance().goXiaomiGameList(activity, null);
                                 break;
@@ -477,7 +492,7 @@ public class TestUtil {
      * umen 分享
      */
     private void testUmen(Activity context){
-        CommonUtil.getInstance().popShare(context, "http://www.baidu.com", "all");
+        CommonUtil.getInstance().popShare(context, "http://www.baidu.com", DialogShare.ALL);
         UMImage umImage = new UMImage(context, R.mipmap.icon);
         new ShareAction(context)
                 .withText("hehe")

+ 4 - 5
app/src/main/java/com/sheep/gamegroup/util/TimeUtil.java

@@ -36,7 +36,7 @@ public class TimeUtil {
     public static String[] getCalendarShowTime(long paramLong)
     {
         String[] localObject;
-        String str = new SimpleDateFormat("yyyy:MM:dd", Locale.ENGLISH).format(new Date(paramLong));
+        String str = new SimpleDateFormat("yyyy:MM:dd", Locale.CHINA).format(new Date(paramLong));
         try
         {
             String[] arrayOfString = str.split(":");
@@ -63,15 +63,14 @@ public class TimeUtil {
         }
         return null;
     }
-    public static String getDate(String formate){
-        String str = new SimpleDateFormat(formate, Locale.ENGLISH).format(new Date());
-        return str;
+    public static String getDate(String format){
+        return new SimpleDateFormat(format, Locale.CHINA).format(new Date());
     }
     public static String getDate(String formate, long paramLong){
         Calendar c = Calendar.getInstance();
         c.setTimeInMillis(paramLong*1000);
         Date date = c.getTime();
-        String str = new SimpleDateFormat(formate, Locale.ENGLISH).format(date);
+        String str = new SimpleDateFormat(formate, Locale.CHINA).format(date);
         return str;
     }
 

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

@@ -68,10 +68,10 @@ public class UMConfigUtils {
         SHEEP_CREDIT_CARD_PROGRESS_QUERY("信用卡任务列表界面 ->信用卡任务进度查询列表 -> 信用卡任务进度查询"),//5035
         TASK_START_APP("打开任务应用或游戏"),//5036
         TASK_INSTALL_APP("安装应用"),//5037
-        SHEEP_START("启动小绵羊"),//5038
-        SHEEP_RESUME("小绵羊进入前台"),//5039
-        SHEEP_PAUSE("小绵羊进入后台"),//5040
-        SHEEP_STOP("退出小绵羊"),//5041
+        SHEEP_CREATED("启动小绵羊"),//5038
+        SHEEP_STARTED("小绵羊进入前台"),//5039
+        SHEEP_STOPPED("小绵羊进入后台"),//5040
+        SHEEP_DESTROYED("退出小绵羊"),//5041
         PUNCH("点击打卡赚钱"),//5042
         PUNCH_SIGN_UP("点击报名"),//5043
         PUNCH_PUNCH("点击打卡"),//5044

+ 80 - 2
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -11,12 +11,16 @@ import android.net.Uri;
 import android.os.Build;
 import android.provider.MediaStore;
 import android.support.v7.app.AlertDialog;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.TextUtils;
 import android.text.method.ScrollingMovementMethod;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.Window;
 import android.view.WindowManager;
 import android.webkit.WebView;
 import android.widget.ImageView;
@@ -32,6 +36,7 @@ import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.GameAccountEntity;
 import com.sheep.gamegroup.model.entity.PayEntity;
 import com.sheep.gamegroup.view.activity.SplashAct;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 import com.sheep.gamegroup.view.dialog.DialogAddAccount;
 import com.sheep.gamegroup.view.dialog.DialogModifyAccount;
 import com.sheep.gamegroup.view.dialog.DialogOrienteeringDetails;
@@ -47,6 +52,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
@@ -703,8 +709,8 @@ public class ViewUtil {
      * @param activity
      * @param url
      */
-    public void showShare(Activity activity, String url){
-        new DialogShare(activity, url).showShare();
+    public void showShare(Activity activity, String url, String description){
+        new DialogShare(activity, url, description).showShare();
     }
 
     public static void centerImage(ImageView imageView, String pictures) {
@@ -827,4 +833,76 @@ public class ViewUtil {
         new DialogAddAccount(activity).showAddAccount(action1);
     }
 
+    public static void showShareDialog(final Activity activity, final String url, final String description){
+        View dialog_parent = View.inflate(activity, R.layout.ask_to_share, null);
+        final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.AppTheme_Dialog_Alert)
+                .setView(dialog_parent)
+                .create();
+//        TextView ask_share_title = dialog_parent.findViewById(R.id.ask_share_title);
+        RecyclerView ask_share_list = dialog_parent.findViewById(R.id.ask_share_list);
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(activity, 5);
+        ask_share_list.setLayoutManager(gridLayoutManager);
+//        ask_share_list.setHasFixedSize(true);
+//        ask_share_list.setNestedScrollingEnabled(false);
+        List<String> list = ListUtil.emptyList();
+        list.add(DialogShare.FACE_TO_FACE);
+        list.add(DialogShare.WX);
+        list.add(DialogShare.QQ);
+        list.add(DialogShare.WEIXIN_CIRCLE);
+        list.add(DialogShare.COPY_SHARE_LINK);
+        final List<String> imgList = ListUtil.emptyList();
+        imgList.add("share_face_to_face");
+        imgList.add("share_wx");
+        imgList.add("share_qq");
+        imgList.add("share_weixin_circle");
+        imgList.add("share_copy_share_link");
+        final List<String> nameList = ListUtil.emptyList();
+        nameList.add("面对面");
+        nameList.add("微信");
+        nameList.add("QQ好友");
+        nameList.add("朋友圈");
+        nameList.add("复制链接");
+        AdbCommonRecycler<String> adapter = new AdbCommonRecycler<String>(activity, list) {
+
+            @Override
+            public int getViewIdByType(int type) {
+                return R.layout.ask_to_share_item;
+            }
+
+            @Override
+            public void convert(ViewHolder holder, final String item) {
+                View itemView = holder.itemView;
+                if (item == null)
+                    return;
+                ImageView ask_to_share_item_img = itemView.findViewById(R.id.ask_to_share_item_img);
+                TextView ask_to_share_item_name = itemView.findViewById(R.id.ask_to_share_item_name);
+                int position = holder.getAdapterPosition();
+                GlideImageLoader.setImage(ask_to_share_item_img, getNetImgByName(imgList.get(position)));
+                ask_to_share_item_name.setText(nameList.get(position));
+                itemView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        CommonUtil.getInstance().popShare(activity, url, item, description);
+                    }
+                });
+
+            }
+        };
+        ask_share_list.setAdapter(adapter);
+        try {
+            dialog.show();
+            Window window = dialog.getWindow();
+            if(window != null) {
+                window.setGravity(Gravity.BOTTOM);
+                WindowManager.LayoutParams params = window.getAttributes();
+                params.width = G.WIDTH > G.HEIGHT ? G.HEIGHT : G.WIDTH;
+                window.setAttributes(params);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    public static String getNetImgByName(String name){
+        return String.format(Locale.CHINA, "http://cdngame.kuaifazs.com/%s.png", name);
+    }
 }

+ 5 - 2
app/src/main/java/com/sheep/gamegroup/util/ZipChannelUtil.java

@@ -127,11 +127,14 @@ public class ZipChannelUtil {
             }
         }
     }
-
+    private static final boolean GET_TWO = false;
     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
+        if(GET_TWO)
+            return buffer[0] + buffer[1]*16*16;//0a00中 0a 10 ,00 0 -> 10+0*256 = 10
+        else
+            return buffer[0];
     }
 
     //判断是否存在渠道号

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

@@ -70,8 +70,8 @@ public class ActSearchGame extends BaseActivity {
     RecyclerView search_game_list;
     @BindView(R.id.search_game_hot)
     View search_game_hot;
-    @BindView(R.id.download_mgr_empty_view)
-    View download_mgr_empty_view;
+    @BindView(R.id.empty_view)
+    View empty_view;
 
     private int type;//1:小米游戏过来
 
@@ -90,7 +90,7 @@ public class ActSearchGame extends BaseActivity {
         TitleBarUtils.getInstance()
                 .setTitle(this, "搜索游戏")
                 .setTitleFinish(this);
-        download_mgr_empty_view.setVisibility(View.GONE);
+        empty_view.setVisibility(View.GONE);
         initHotList();
         initList();
         initInput();
@@ -271,7 +271,7 @@ public class ActSearchGame extends BaseActivity {
                     .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
                         @Override
                         public void onError(BaseMessage baseMessage) {
-                            CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
+                            CommonUtil.getInstance().updateEmptyView(empty_view, true);
                             search_game_hot.setVisibility(View.GONE);
                             search_game_list.setVisibility(View.GONE);
                         }
@@ -370,7 +370,7 @@ public class ActSearchGame extends BaseActivity {
         adapter.notifyDataSetChanged();
         if (list.isEmpty()) {
             if(hotList.isEmpty()) {
-                CommonUtil.getInstance().updateEmptyView(download_mgr_empty_view, true);
+                CommonUtil.getInstance().updateEmptyView(empty_view, true);
             } else {
                 search_game_hot.setVisibility(View.VISIBLE);
             }
@@ -378,7 +378,7 @@ public class ActSearchGame extends BaseActivity {
         } else {
             search_game_list.setVisibility(View.VISIBLE);
             if(hotList.isEmpty()) {
-                download_mgr_empty_view.setVisibility(View.GONE);
+                empty_view.setVisibility(View.GONE);
             } else {
                 search_game_hot.setVisibility(View.GONE);
             }

+ 25 - 21
app/src/main/java/com/sheep/gamegroup/view/activity/ActSheepApkList.java

@@ -87,35 +87,38 @@ public class ActSheepApkList extends BaseActivity {
             }
         return apkInfoList;
     }
+    public static boolean onlyZip = true;
     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);
+        if(!onlyZip){
+            PackageInfo pkgInfo = getPackageInfo(context, absolutePath);
+            if (pkgInfo == null) {
+                return apkInfo;
+            }
+            pkgInfo.applicationInfo.sourceDir = absolutePath;
+            pkgInfo.applicationInfo.publicSourceDir = absolutePath;
+
+            //程序包名
+            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.setSha1(SysAppUtil.getSHA1(pkgInfo));
+
+        }
         //获取到安装包的路径
         appInfo.setSourceDir(absolutePath);
         //获取到安装apk的大小
         long apkSize = file.length();
         //格式化apk的大小
-        appInfo.setApkSize(Formatter.formatFileSize(SheepApp.getInstance(),apkSize));
-        appInfo.setSha1(SysAppUtil.getSHA1(pkgInfo));
-
+        appInfo.setApkSize(Formatter.formatFileSize(SheepApp.getInstance(), apkSize));
         apkInfo.setAppInfo(appInfo);
         apkInfo.setFile(file);
         try {
@@ -159,9 +162,10 @@ public class ActSheepApkList extends BaseActivity {
                 if(appInfo == null){
                     return;
                 }
-                app_info_iv.setImageDrawable(appInfo.getIcon());
+                if(appInfo.getIcon() != null)
+                    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());
+                app_info_name_tv.append(item.getComment());//CommonUtil.getFileMD5(item.getFile())
                 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());

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

@@ -285,8 +285,20 @@ public class ActWeb extends BaseCompatActivity {
             });
         }
 
+        /**
+         * 是否响应返回键
+         */
         @JavascriptInterface
-        public void setCanGoBack() {
+        public boolean isResponseBack() {
+            return responseBack;
+        }
+
+        /**
+         * 设置是否响应返回键
+         */
+        @JavascriptInterface
+        public void setResponseBack(boolean responseBack) {
+            ActWeb.this.responseBack = responseBack;
         }
 
         @JavascriptInterface
@@ -377,7 +389,42 @@ public class ActWeb extends BaseCompatActivity {
                 }
             });
         }
+        @JavascriptInterface
+        public void finishAct() {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    ActWeb.super.finish();
+                }
+            });
+        }
+
+    }
 
+    /**
+     * 是否响应返回键
+     */
+    private boolean responseBack = true;
+    @Override
+    public void onBackPressed() {
+        if(responseBack)
+            super.onBackPressed();
+        else {
+            loadJs("onBackPressed()");
+        }
+    }
+
+    private void loadJs(String js) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            mWebView.evaluateJavascript("javascript:"+js, new ValueCallback<String>() {
+                @Override
+                public void onReceiveValue(String value) {
+                    //此处为 js 返回的结果
+                }
+            });
+        } else {
+            mWebView.loadUrl("javascript:"+js);
+        }
     }
 
     @Override

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

@@ -1,8 +1,18 @@
 package com.sheep.gamegroup.view.activity;
 
+import android.app.Activity;
 import android.support.v4.view.ViewPager;
+import android.support.v4.widget.NestedScrollView;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
@@ -11,41 +21,44 @@ import com.kfzs.duanduan.fragment.PagerAdapter;
 import com.sheep.gamegroup.absBase.BaseUMActivity;
 import com.sheep.gamegroup.di.components.DaggerAskGetMoneyComponent;
 import com.sheep.gamegroup.di.modules.AskGetMoneyModule;
-import com.sheep.gamegroup.model.entity.DialogConfig;
+import com.sheep.gamegroup.model.entity.AskAward;
+import com.sheep.gamegroup.model.entity.AskTop;
+import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FriendAndAwardEntity;
 import com.sheep.gamegroup.model.entity.UserEntity;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.presenter.AskGetMoneyContract;
 import com.sheep.gamegroup.presenter.AskGetMoneyPresenter;
 import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.StringUtils;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
 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.TitleBarUtils;
-import com.umeng.socialize.ShareAction;
+import com.sunfusheng.marqueeview.MarqueeView;
 import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
-import com.umeng.socialize.media.UMImage;
-import com.umeng.socialize.media.UMWeb;
+
+import java.util.List;
+import java.util.Locale;
 
 import javax.inject.Inject;
 
 import butterknife.BindView;
-import butterknife.OnClick;
+import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.LINK_SHARE;
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.QR_COPY;
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.SHARE_TO_QQ;
-import static com.sheep.gamegroup.util.UMConfigUtils.Event.SHARE_TO_WX;
+import rx.schedulers.Schedulers;
 
 /**
  * Created by Administrator on 2018/3/19.
  */
 
-public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, AskGetMoneyContract.View {
+public class AskGetMoneyAct extends BaseUMActivity implements AskGetMoneyContract.View {
 
 
     @Inject
@@ -54,14 +67,6 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
     TextView tvSize;
     @BindView(R.id.tv_money)
     TextView tvMoney;
-    @BindView(R.id.rl_wx)
-    RelativeLayout rlWx;
-    @BindView(R.id.rl_qq)
-    RelativeLayout rlQq;
-    @BindView(R.id.rl_qr)
-    RelativeLayout rlQr;
-    @BindView(R.id.rl_link)
-    RelativeLayout rlLink;
     @BindView(R.id.friend_extract_vp)
     ViewPager friend_extract_vp;
     @BindView(R.id.friend_extract_count_tv)
@@ -72,6 +77,20 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
     TextView friend_extract_last_page_tv;
     @BindView(R.id.friend_extract_next_page_tv)
     TextView friend_extract_next_page_tv;
+    @BindView(R.id.ask_bg)
+    WebView ask_bg;
+    @BindView(R.id.ask_top_1)
+    View ask_top_1;
+    @BindView(R.id.ask_top_2)
+    View ask_top_2;
+    @BindView(R.id.ask_top5_not_you)
+    TextView ask_top5_not_you;
+    @BindView(R.id.ask_top5_list)
+    RecyclerView ask_top5_list;
+    @BindView(R.id.ask_award_info)
+    MarqueeView ask_award_info;
+    @BindView(R.id.ask_scroll_view)
+    NestedScrollView scrollView;
 
     private FriendAndAwardEntity mEntity;
 
@@ -80,23 +99,136 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
         return R.layout.x_ask_getmoney_act_layout;
     }
 
+    private Activity activity;
+
     @Override
     public void initView() {
+        activity = this;
         TitleBarUtils.getInstance()
-                .setTitle(this,"邀请赚钱")
+                .setTitle(this, "邀请赚钱")
                 .setTitleFinish(this);
         DaggerAskGetMoneyComponent.builder().askGetMoneyModule(new AskGetMoneyModule(this))
                 .netComponent(SheepApp.get(this).getNetComponent())
                 .build()
                 .inject(this);
         initFriendExtractList();
+        initAskTop5View();
+        String content = "<!DOCTYPEhtml>\n" +
+                "<html>\n" +
+                "  <head>\n" +
+                "    <title>HTML字符串</title>\n" +
+                "    <metahttp-equivmetahttp-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n" +
+                "    <meta name=\"viewport\" content=\"width="+G.WIDTH+", user-scalable=no\">\n" +
+                "    <style type=\"text/css\">\n" +
+                "      body {\n" +
+                "        margin: 0;\n" +
+                "        padding: 0;\n" +
+                "      }\n" +
+                "      img {\n" +
+                "        padding: 0;\n" +
+                "        margin: 0;\n" +
+                "      }\n" +
+                "    </style>\n" +
+                "  </head>\n" +
+                "  <body>\n" +
+                "    <img src=\"http://cdngame.kuaifazs.com/ask_bg.png\" width=\"100%\">\n" +
+                "  </body>\n" +
+                "</html>";
+        ask_bg.getSettings().setDefaultTextEncodingName("UTF-8") ;
+        ask_bg.loadData(content, "text/html", "UTF-8") ;
+//                16,18,19
+        LinearLayout.LayoutParams layoutParams1 = (LinearLayout.LayoutParams) ask_top_1.getLayoutParams();
+        layoutParams1.height = G.WIDTH * 16 / 18;
+        ask_top_1.setLayoutParams(layoutParams1);
+        LinearLayout.LayoutParams layoutParams2 = (LinearLayout.LayoutParams) ask_top_2.getLayoutParams();
+        layoutParams2.height = G.WIDTH * 3 / 18;
+        ask_top_2.setLayoutParams(layoutParams2);
+        ask_top5_not_you.setVisibility(View.INVISIBLE);
+    }
+
+    private List<AskTop> list = ListUtil.emptyList();
+    private AdbCommonRecycler<AskTop> adapter;
+
+    private void initAskTop5View() {
+        list.add(null);
+        ask_top5_list.setLayoutManager(new LinearLayoutManager(activity));
+        //ask_top5_list 解决滑动不流畅问题
+        ask_top5_list.setHasFixedSize(true);
+        ask_top5_list.setNestedScrollingEnabled(false);
+        adapter = new AdbCommonRecycler<AskTop>(activity, list) {
+
+            @Override
+            public int getItemViewType(int position) {
+                return position;
+            }
+
+            @Override
+            public int getViewIdByType(int type) {
+                switch (type) {
+                    case 0:
+                        return R.layout.x_ask_top5_title;
+                    default:
+                        return R.layout.x_ask_top5_item;
+                }
+            }
+
+            @Override
+            public void convert(ViewHolder holder, final AskTop item) {
+                View itemView = holder.itemView;
+                if (item == null)
+                    return;
+                TextView x_ask_top5_item_user = itemView.findViewById(R.id.x_ask_top5_item_user);
+                TextView x_ask_top5_item_money = itemView.findViewById(R.id.x_ask_top5_item_money);
+                TextView x_ask_top5_item_award = itemView.findViewById(R.id.x_ask_top5_item_award);
+                ViewUtil.setText(x_ask_top5_item_user, String.format(Locale.CHINA, "昵称\n%s\n邀请人数:%d", item.getNickname(), item.getSum_friend()));
+                ViewUtil.setText(x_ask_top5_item_money, String.format(Locale.CHINA, "%.0f", item.getSum_amount()));
+                ViewUtil.setText(x_ask_top5_item_award, item.getPrize());
+                ImageView ask_top5_item_iv = itemView.findViewById(R.id.ask_top5_item_iv);
+                switch (holder.getAdapterPosition()){
+                    case 1:
+                        ask_top5_item_iv.setImageResource(R.mipmap.ask_top_1);
+                        break;
+                    case 2:
+                        ask_top5_item_iv.setImageResource(R.mipmap.ask_top_2);
+                        break;
+                    case 3:
+                        ask_top5_item_iv.setImageResource(R.mipmap.ask_top_3);
+                        break;
+                }
+
+
+            }
+        };
+        ask_top5_list.setAdapter(adapter);
     }
 
     @Override
     public void initListener() {
-
+        scrollView.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        if (ask_award_info != null) {
+                            //开始滚动
+                            ask_award_info.stopFlipping();
+                        }
+                        break;
+                    case MotionEvent.ACTION_UP:
+                    default:
+                        if (ask_award_info != null) {
+                            //开始滚动
+                            ask_award_info.startFlipping();
+                        }
+                        break;
+                }
+                return false;
+            }
+        });
     }
+
     private UserEntity userEntity;
+
     @Override
     public void initData() {
         showProgress();
@@ -104,80 +236,68 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
         CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
             @Override
             public void call(UserEntity result) {
-                if(result != null)
+                if (result != null)
                     userEntity = result;
             }
         });
+        initAskTop5();
     }
 
-    private void shareToWX() {
-        shareToOther(1);
-    }
-
-    private void shareToQQ() {
-        shareToOther(2);
-    }
-
-    private void shareToOther(int code) {
-        if(userEntity == null){
-            G.showToast("数据正在加载中");
-            return;
-        }
-        UMImage thumb = new UMImage(this, R.drawable.icon);
-        UMWeb web = new UMWeb(userEntity.getShareLink());
-        web.setTitle(mEntity.getShare_title());//标题
-        web.setThumb(thumb);  //缩略图
-        web.setDescription(mEntity.getShare_desc());//描述
-        ShareAction shareAction = new ShareAction(AskGetMoneyAct.this);
-        if (code == 1) {
-            shareAction.setPlatform(SHARE_MEDIA.WEIXIN);
-        } else {
-            shareAction.setPlatform(SHARE_MEDIA.QQ);
-        }
-        shareAction.setCallback(this).withMedia(web).share();
-    }
-
-
-    private void shareToLink() {
-        if(userEntity == null){
-            G.showToast("数据正在加载中");
-            return;
-        }
-        LINK_SHARE.onEvent();
-        ViewUtil.showMsgDialog(this, new DialogConfig().setTitle("分享链接").setMsg(userEntity.getShareLink())
-            .setMsgMore("通过连接加入小绵羊即可成为你的好友").setMsgMoreColor(R.color.txt_black_9e9c9c)
-            .setBtnLeftText("复制链接").setBtnLeftOnClickListener(new View.OnClickListener() {
-                        @Override
-                        public void onClick(View view) {
-                            QR_COPY.onEvent();
-                            StringUtils.CopyText(userEntity.getShareLink());
-                            G.showToast("复制链接成功");
+    private void initAskTop5() {
+        SheepApp.getInstance().getNetComponent().getApiService().getInvitationTop(5)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        List<AskTop> newList = baseMessage.getDataList(AskTop.class);
+                        if(ListUtil.isEmpty(newList)){
+                            return;
                         }
-                    }));
-    }
-
-
-
-
-    @Override
-    public void onStart(SHARE_MEDIA share_media) {
-
-    }
+                        if(BuildConfig.DEBUG) {
+                            while (newList.size() < 5){
+                                newList.add(newList.get(0));
+                            }
+                        }
+                        list.addAll(newList);
+                        adapter.notifyDataSetChanged();
+                        String userId = DataUtil.getInstance().getUserId();
+                        boolean hasMe = false;
+                        for (AskTop item : newList) {
+                            if(TextUtils.equals(userId, item.getUser_id())){
+                                hasMe = true;
+                                break;
+                            }
+                        }
+                        ask_top5_not_you.setVisibility(hasMe ? View.INVISIBLE : View.VISIBLE);
+                    }
 
-    @Override
-    public void onResult(SHARE_MEDIA share_media) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
 
-    }
+                    }
+                });
+        SheepApp.getInstance().getNetComponent().getApiService().getInvitationTopRecord()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        List<AskAward> newList = baseMessage.getDataList(AskAward.class);
+                        for (AskAward item : newList) {
+                            TextView moreView = (TextView) LayoutInflater.from(activity).inflate(R.layout.x_ask_award_item, null);
+                            moreView.setText(String.format(Locale.CHINA, "%s领取了%s", item.getNickname(), item.getPrize()));
+                            ask_award_info.addView(moreView);
+                        }
+                    }
 
-    @Override
-    public void onError(SHARE_MEDIA share_media, Throwable throwable) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
 
+                    }
+                });
     }
 
-    @Override
-    public void onCancel(SHARE_MEDIA share_media) {
-
-    }
 
     @Override
     public void NetSuccess(int code, String msg, String s) {
@@ -194,11 +314,11 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
     @Override
     public void showTask(FriendAndAwardEntity entity) {
         hideProgress();
-        mEntity=entity;
+        mEntity = entity;
         this.runOnUiThread(new Runnable() {
             @Override
             public void run() {
-                tvSize.setText(mEntity.getFriend_count()+"");
+                tvSize.setText(mEntity.getFriend_count() + "");
                 tvMoney.setText(mEntity.getAward());
             }
         });
@@ -206,42 +326,18 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
     }
 
 
-    @OnClick({R.id.rl_wx, R.id.rl_qq, R.id.rl_qr, R.id.rl_link})
-    public void onViewClicked(View view) {
-        try {
-            switch (view.getId()) {
-                case R.id.rl_wx:
-                    shareToWX();
-                    SHARE_TO_WX.onEvent();
-                    break;
-                case R.id.rl_qq:
-                    shareToQQ();
-                    SHARE_TO_QQ.onEvent();
-                    break;
-                case R.id.rl_qr:
-                    if(userEntity == null){
-                        G.showToast("数据正在加载中");
-                        break;
-                    }
-                    ViewUtil.showQR(AskGetMoneyAct.this, userEntity.getShareLink());
-                    break;
-                case R.id.rl_link:
-                    shareToLink();
-                    break;
-            }
-        } catch (Exception e) {
-            G.showToast(R.string.loading_data);
-        }
-    }
+
     private SparseArray<FgtFriendExtractPage> mTestFragments;
-    public void setFriendExtractCount(int count, int page, int size){
+
+    public void setFriendExtractCount(int count, int page, int size) {
         friend_extract_count_tv.setText(getString(R.string.friend_extract_count, count));
         checkAddPage(page, size);
     }
+
     private void checkAddPage(int page, int size) {
-        if(curPage+2 > page && size == FgtFriendExtractPage.per_page){//已经到最后一页面,且数据是满的,可以添加一页面
+        if (curPage + 2 > page && size == FgtFriendExtractPage.per_page) {//已经到最后一页面,且数据是满的,可以添加一页面
             int nextPage = page + 1;
-            if(mTestFragments.get(nextPage) == null) {
+            if (mTestFragments.get(nextPage) == null) {
 //                if(BuildConfig.DEBUG) G.showToast("添加新的一页:" + nextPage);
                 mTestFragments.put(nextPage, FgtFriendExtractPage.newInstance(nextPage));
                 mPagerAdapter.notifyDataSetChanged();
@@ -249,14 +345,15 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
 //                if(BuildConfig.DEBUG) G.showToast("不用添加新的一页:" + nextPage);
             }
         }
-        if(size > FgtFriendExtractPage.per_page){
-            if(BuildConfig.DEBUG) G.showToast("页面" + page+"的数据为:"+size);
+        if (size > FgtFriendExtractPage.per_page) {
+            if (BuildConfig.DEBUG) G.showToast("页面" + page + "的数据为:" + size);
         }
     }
 
     private int curPage = 1;
     private PagerAdapter mPagerAdapter;
-    private void initFriendExtractList(){
+
+    private void initFriendExtractList() {
         mTestFragments = new SparseArray<>();
         mTestFragments.put(1, FgtFriendExtractPage.newInstance(1));
         mPagerAdapter = new PagerAdapter(getSupportFragmentManager(), mTestFragments);
@@ -269,9 +366,9 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
 
             @Override
             public void onPageSelected(int i) {
-                curPage = i+1;
-                friend_extract_page_tv.setText(""+curPage);
-                checkAddPage(curPage,mTestFragments.get(curPage).getList().size());
+                curPage = i + 1;
+                friend_extract_page_tv.setText(String.format(Locale.CHINA,"%d", curPage));
+                checkAddPage(curPage, mTestFragments.get(curPage).getList().size());
             }
 
             @Override
@@ -292,4 +389,20 @@ public class AskGetMoneyAct extends BaseUMActivity implements UMShareListener, A
             }
         });
     }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+
+        if (ask_award_info != null) {
+            //停止滚动
+            ask_award_info.stopFlipping();
+        }
+    }
+    //显示分享对话框
+    public void showShareView(View view) {
+        String url = userEntity.getShareLink();
+        String description = mEntity.getShare_desc();
+        ViewUtil.showShareDialog(activity, url, description);
+    }
 }

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

@@ -54,114 +54,123 @@ public class MiddleAct extends Activity {
             for (String key : bundle.keySet()) {
                 if (BuildConfig.DEBUG)
                     System.out.println(String.format(Locale.CHINA, "key = %s,value = %s", key, bundle.get(key)));
-                if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
+                switch (key) {
+                    case JPushInterface.EXTRA_NOTIFICATION_ID:
 //                    sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));
-                } else if (key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)) {
+                        break;
+                    case JPushInterface.EXTRA_CONNECTION_CHANGE:
 //                    sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
-                } else if (key.equals(JPushInterface.EXTRA_EXTRA)) {
-                    String data;
-                    if (TextUtils.isEmpty((data = bundle.getString(JPushInterface.EXTRA_EXTRA)))) {
-                        continue;
+                        break;
+                    case JPushInterface.EXTRA_EXTRA:
+                        String data;
+                        if (TextUtils.isEmpty((data = bundle.getString(JPushInterface.EXTRA_EXTRA)))) {
+                            continue;
+                        }
+                        JPushMessage msg = JSONObject.parseObject(data, JPushMessage.class);
+                        Activity activity = this;
+                        gotoNext(activity, bundle, msg);
+                        break;
+                    default:
+//                    sb.append("\nkey:" + key + ", value:" + bundle.getString(key));
+                        break;
+                }
+            }
+        }
+    }
+
+    private void gotoNext(Activity activity, Bundle bundle, JPushMessage msg) {
+        switch (msg.getType()) {
+            case 11://试玩赚钱
+                Jump2View.getInstance().goTryplayView(activity, null);
+                break;
+            case 12://任务详情: 任务的id
+                Jump2View.getInstance().goTaskDetailView(activity, msg.getId());
+                break;
+            case 13://任务记录
+                Jump2View.getInstance().goTaskList2View(activity, null);
+                break;
+            case 21://邀请赚钱
+                Jump2View.getInstance().goAskGetMoney(activity, null);
+                break;
+            case 31://办卡赚钱
+                Jump2View.getInstance().goCreditCardTaskList(activity, null);
+                break;
+            case 32://跳转到信用卡详情界面: id 信用卡任务的id
+                Jump2View.getInstance().goCreditCardTaskDetail(activity, msg.getId());
+                break;
+            case 33://跳转到信用卡web申请界面; id 信用卡信息的id
+                Jump2View.getInstance().tryGoCreditCardWeb(activity, 0, msg.getId(), new Action1<String>() {
+                    @Override
+                    public void call(String msg) {
+                        if (msg != null) {
+                            G.showToast(msg);
+                        }
                     }
-                    JPushMessage msg = JSONObject.parseObject(data, JPushMessage.class);
-                    Activity activity = this;
-                    switch (msg.getType()) {
-                        case 11://试玩赚钱
-                            Jump2View.getInstance().goTryplayView(activity, null);
-                            break;
-                        case 12://任务详情: 任务的id
-                            Jump2View.getInstance().goTaskDetailView(activity, msg.getId());
-                            break;
-                        case 13://任务记录
-                            Jump2View.getInstance().goTaskList2View(activity, null);
-                            break;
-                        case 21://邀请赚钱
-                            Jump2View.getInstance().goAskGetMoney(activity, null);
-                            break;
-                        case 31://办卡赚钱
-                            Jump2View.getInstance().goCreditCardTaskList(activity, null);
-                            break;
-                        case 32://跳转到信用卡详情界面: id 信用卡任务的id
-                            Jump2View.getInstance().goCreditCardTaskDetail(activity, msg.getId());
-                            break;
-                        case 33://跳转到信用卡web申请界面; id 信用卡信息的id
-                            Jump2View.getInstance().tryGoCreditCardWeb(activity, 0, msg.getId(), new Action1<String>() {
-                                @Override
-                                public void call(String msg) {
-                                    if(msg != null){
-                                        G.showToast(msg);
-                                    }
-                                }
-                            });
-                            break;
-                        case 41://躺着赚钱
-                            Jump2View.getInstance().tryGoLyingView(activity, null);
-                            break;
-                        case 42://跳转到修改 挂机微信账号密码 到服务器 界面
-                            Jump2View.getInstance().goCommitWxCodeOnHookView(activity, msg.getId(), msg.getMsg(), ALTER_INFO);
-                            break;
-                        case 43://跳转到提交 挂机微信验证码 到服务器 界面
-                            Jump2View.getInstance().goCommitWxCodeOnHookView(activity, msg.getId(), msg.getMsg(), ALTER_CODE);
-                            break;
-                        case 44://跳转到提交 挂机微信账号已经解封 到服务器 界面
-                            Jump2View.getInstance().goCommitWxCodeOnHookView(activity, msg.getId(), msg.getMsg(), HAS_DEBLOCKED);
-                            break;
-                        case 51://微信辅助任务
-                            Jump2View.getInstance().tryGoWxfz(activity, null);
-                            break;
-                        case 61://个人中心
-                            Jump2View.getInstance().goPersonnalCenterView(activity, null);
-                            break;
-                        case 62://提现
-                            Jump2View.getInstance().tryGoWithdrawal(activity, null);
-                            break;
-                        case 621://提现结果页面
-                            Jump2View.getInstance().goWithdrawalResultview(activity, NumberFormatUtils.parseFloat(msg.getMsg()));
-                            break;
-                        case 63://充值Q币
-                            Jump2View.getInstance().goRechargeQAct(activity,"推送");
-                            break;
-                        case 64://充值绵羊币
-                            Jump2View.getInstance().goRechargeAct(activity,"推送");
-                            break;
-                        case 65://我的资产
-                            Jump2View.getInstance().goMyMoney(activity,null);
-                            break;
+                });
+                break;
+            case 41://躺着赚钱
+                Jump2View.getInstance().tryGoLyingView(activity, null);
+                break;
+            case 42://跳转到修改 挂机微信账号密码 到服务器 界面
+                Jump2View.getInstance().goCommitWxCodeOnHookView(activity, msg.getId(), msg.getMsg(), ALTER_INFO);
+                break;
+            case 43://跳转到提交 挂机微信验证码 到服务器 界面
+                Jump2View.getInstance().goCommitWxCodeOnHookView(activity, msg.getId(), msg.getMsg(), ALTER_CODE);
+                break;
+            case 44://跳转到提交 挂机微信账号已经解封 到服务器 界面
+                Jump2View.getInstance().goCommitWxCodeOnHookView(activity, msg.getId(), msg.getMsg(), HAS_DEBLOCKED);
+                break;
+            case 51://微信辅助任务
+                Jump2View.getInstance().tryGoWxfz(activity, null);
+                break;
+            case 61://个人中心
+                Jump2View.getInstance().goPersonnalCenterView(activity, null);
+                break;
+            case 62://提现
+                Jump2View.getInstance().tryGoWithdrawal(activity, null);
+                break;
+            case 621://提现结果页面
+                Jump2View.getInstance().goWithdrawalResultview(activity, NumberFormatUtils.parseFloat(msg.getMsg()));
+                break;
+            case 63://充值Q币
+                Jump2View.getInstance().goRechargeQAct(activity, "推送");
+                break;
+            case 64://充值绵羊币
+                Jump2View.getInstance().goRechargeAct(activity, "推送");
+                break;
+            case 65://我的资产
+                Jump2View.getInstance().goMyMoney(activity, null);
+                break;
 //                        case 66://安全中心
 //                            Jump2View.getInstance().goAccountAndSecurit(activity,null);
 //                            break;
-                        case 71://浏览器打开web界面: url h5链接
-                            Jump2View.getInstance().goWeb(activity, msg.getUrl());
-                            break;
-                        case 72://App web界面: url h5链接  title 标题
-                            Jump2View.getInstance().goWeb(activity, msg.getUrl(), TextUtils.isEmpty(msg.getTitle()) ? bundle.getString(JPushInterface.EXTRA_ALERT) : msg.getTitle());
-                            break;
+            case 71://浏览器打开web界面: url h5链接
+                Jump2View.getInstance().goWeb(activity, msg.getUrl());
+                break;
+            case 72://App web界面: url h5链接  title 标题
+                Jump2View.getInstance().goWeb(activity, msg.getUrl(), TextUtils.isEmpty(msg.getTitle()) ? bundle.getString(JPushInterface.EXTRA_ALERT) : msg.getTitle());
+                break;
 
-                        case 1://跳转到首页: id 0,小绵羊 1,游戏
-                            if(msg.getId() == 0)
-                                Jump2View.getInstance().goHomePageView(activity, msg.getId() % MainTab.values().length);
-                            else if(msg.getId() == 1)
-                                Jump2View.getInstance().goMainGame(activity);
-                            break;
-                        case 2://公告: title 标题   msg 内容
-                            Jump2View.getInstance().goNotice(activity, TextUtils.isEmpty(msg.getTitle()) ? bundle.getString(JPushInterface.EXTRA_ALERT) : msg.getTitle(), msg.getMsg(), msg.getTime() == 0 ? System.currentTimeMillis() : msg.getTime());
-                            break;
-                        case 3://下载: url 下载链接
-                            if(msg.getUrl().startsWith("http"))
-                                TestUtil.webDownload(activity, msg.getUrl());
-                            break;
-                        case 9://打卡赚钱
-                            Jump2View.getInstance().goSignCardAct(activity, null);
-                            break;
-                        case 0://直接启动或者重启app
-                        default:
-                            Jump2View.getInstance().newTaskTopStartAct(activity, SplashAct.class, bundle);
-                            break;
-                    }
-                } else {
-//                    sb.append("\nkey:" + key + ", value:" + bundle.getString(key));
-                }
-            }
+            case 1://跳转到首页: id 0,小绵羊 1,游戏
+                if (msg.getId() == 0)
+                    Jump2View.getInstance().goHomePageView(activity, msg.getId() % MainTab.values().length);
+                else if (msg.getId() == 1)
+                    Jump2View.getInstance().goMainGame(activity);
+                break;
+            case 2://公告: title 标题   msg 内容
+                Jump2View.getInstance().goNotice(activity, TextUtils.isEmpty(msg.getTitle()) ? bundle.getString(JPushInterface.EXTRA_ALERT) : msg.getTitle(), msg.getMsg(), msg.getTime() == 0 ? System.currentTimeMillis() : msg.getTime());
+                break;
+            case 3://下载: url 下载链接
+                if (msg.getUrl().startsWith("http"))
+                    TestUtil.webDownload(activity, msg.getUrl());
+                break;
+            case 9://打卡赚钱
+                Jump2View.getInstance().goSignCardAct(activity, null);
+                break;
+            case 0://直接启动或者重启app
+            default:
+                Jump2View.getInstance().newTaskTopStartAct(activity, SplashAct.class, bundle);
+                break;
         }
     }
 }

+ 63 - 73
app/src/main/java/com/sheep/gamegroup/view/activity/PersonalInfoAct.java

@@ -10,24 +10,20 @@ import android.widget.TextView;
 import com.alibaba.fastjson.JSONObject;
 import com.bumptech.glide.Glide;
 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.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.dialog.DialogShare;
 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.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
@@ -70,6 +66,7 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
     @Override
     public void initView() {
         activity = this;
+        setShowCamera(false);
         ButterKnife.bind(this);
         TitleBarUtils
                 .getInstance()
@@ -95,65 +92,8 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
             userEntity = DataUtil.getInstance().getUserEntity();
         }
         if (userEntity != null) {
-            personal_info_name.setText(userEntity.getNickname());
-            personal_info_code.setText(userEntity.getInvitation_code());
-
-            Glide.with(PersonalInfoAct.this)
-                    .load(AppUtil.getQRLink(userEntity.getShareLink(), 90))
-                    .into(personal_info_qr);
-            GlideImageLoader.setAvatar(personal_info_avatar, userEntity.getAvatar());
-            //账号与安全
-
-            if (TextUtils.isEmpty(userEntity.getMobile())) {
-                personal_info_phone.setText("未绑定");
-            } else {
-                personal_info_phone.setText(userEntity.getMobile());
-                DataUtil.getInstance().setUserMobile(userEntity.getMobile());
-            }
-
-            if (TextUtils.isEmpty(userEntity.getWx_nickname())) {
-                if (TextUtils.isEmpty(userEntity.getWx_openid())) {
-                    personal_info_wx.setText("未绑定");
-                } else {
-                    personal_info_wx.setText("");
-                }
-            } else {
-                personal_info_wx.setText(userEntity.getWx_nickname());
-            }
-
-            refalshAuther(userEntity);
-            MoneyChange change = new MoneyChange();
-            change.setBalance(userEntity.getBalance() + "");
-            change.setTotal_asset(userEntity.getTotal_asset() + "");
+            loadUserInfo();
         }
-
-
-        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)
-    public void onMessageEvent(UserNameChange done) {
-        UserEntity user = userEntity;
-        user.setNickname(done.getNikeName());
-        userEntity = user;
-        personal_info_name.setText(userEntity.getNickname());
-
     }
 
 
@@ -175,7 +115,7 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
                 USER_INFO_NAME.onEvent();
                 break;
             case R.id.personal_info_qr_container:
-                ViewUtil.showQR(PersonalInfoAct.this, userEntity.getShareLink());
+                ViewUtil.showQR(PersonalInfoAct.this, userEntity.getShareLink(DialogShare.OTHER));
                 break;
             case R.id.personal_info_phone_container:   //跳转到绑定手机号
                 Jump2View.getInstance().goBindPhone(activity, null);
@@ -204,7 +144,7 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
 
     @Override
     protected void onGetImage(String path) {
-        GlideImageLoader.circleImage(personal_info_avatar, path, R.drawable.icon);
+//        GlideImageLoader.setAvatar(personal_info_avatar, path);
     }
 
     @Override
@@ -232,16 +172,66 @@ public class PersonalInfoAct extends AbsChooseImageActivity {
 
     @Override
     protected void onGetNetImageUrl(String url) {
-        ImageHeadChange imageHeadChange = new ImageHeadChange();
-        imageHeadChange.setAvatar(url);
-        EventBus.getDefault().post(imageHeadChange);
-
+        DataUtil.getInstance().setUserAvatar(url);
+        GlideImageLoader.setAvatar(personal_info_avatar, url);
     }
 
     @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        EventBus.getDefault().unregister(this);
+    protected void onResume() {
+        super.onResume();
+        UserEntity result = DataUtil.getInstance().getUserEntity();
+        if(result == null) {
+            CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
+                @Override
+                public void call(UserEntity item) {
+                    if(item != null) {
+                        userEntity = item;
+                        loadUserInfo();
+                    }
+                }
+            });
+        } else {
+            userEntity = result;
+            loadUserInfo();
+        }
+    }
+
+    private void loadUserInfo() {
+        personal_info_name.setText(userEntity.getNickname());
+        personal_info_code.setText(userEntity.getInvitation_code());
+
+        Glide.with(PersonalInfoAct.this)
+                .load(AppUtil.getQRLink(userEntity.getShareLink("other"), 90))
+                .into(personal_info_qr);
+        GlideImageLoader.setAvatar(personal_info_avatar, userEntity.getAvatar());
+        //账号与安全
+
+        if (TextUtils.isEmpty(userEntity.getMobile())) {
+            personal_info_phone.setText("未绑定");
+        } else {
+            personal_info_phone.setText(userEntity.getMobile());
+            DataUtil.getInstance().setUserMobile(userEntity.getMobile());
+        }
+
+        if (TextUtils.isEmpty(userEntity.getWx_nickname())) {
+            if (TextUtils.isEmpty(userEntity.getWx_openid())) {
+                personal_info_wx.setText("未绑定");
+            } else {
+                personal_info_wx.setText("");
+            }
+        } else {
+            personal_info_wx.setText(userEntity.getWx_nickname());
+        }
+
+        boolean isId_number = TextUtils.isEmpty(userEntity.getId_number());
+        boolean isRoalName = TextUtils.isEmpty(userEntity.getReal_name());
+        if (isId_number && isRoalName) {
+            personal_info_authentication.setText("未认证");
+        } else if (!isId_number && !isRoalName) {
+            personal_info_authentication.setText("已认证");
+        } else {
+            personal_info_authentication.setText("认证中");
+        }
     }
 
 }

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

@@ -9,17 +9,15 @@ import android.widget.TextView;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.di.components.DaggerReNameComponent;
 import com.sheep.gamegroup.di.modules.ReNameModule;
-import com.sheep.gamegroup.event.UserNameChange;
 import com.sheep.gamegroup.presenter.ReNameContract;
 import com.sheep.gamegroup.presenter.ReNamePresenter;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
 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.greenrobot.eventbus.EventBus;
-
 import java.util.HashMap;
 
 import javax.inject.Inject;
@@ -96,9 +94,7 @@ public class ReNameActivity extends BaseActivity implements ReNameContract.View
     @Override
     public void NetSuccess(int code, String msg, String string) {
         G.showToast(msg);
-        UserNameChange  name=new UserNameChange();
-        name.setNikeName(et.getText().toString());
-        EventBus.getDefault().post(name);
+        DataUtil.getInstance().setUserNickName(et.getText().toString());
         finish();
     }
 
@@ -137,7 +133,7 @@ public class ReNameActivity extends BaseActivity implements ReNameContract.View
             return;
         }
         HashMap<String,String>  map=new HashMap<>();
-        map.put("nickname",et.getText().toString());
+        map.put("nickname", et.getText().toString());
         presenter.getTask(map);
 
     }

+ 20 - 38
app/src/main/java/com/sheep/gamegroup/view/activity/RealNameAuthenAct.java

@@ -10,17 +10,13 @@ import android.widget.TextView;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.di.components.DaggerRealNameAutherComponent;
 import com.sheep.gamegroup.di.modules.RealNameAutherModule;
-import com.sheep.gamegroup.event.RealNameAutehrChange;
-import com.sheep.gamegroup.model.entity.BaseMessage;
 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.presenter.RealNameAutherContract;
 import com.sheep.gamegroup.presenter.RealNameAutherPresenter;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
@@ -30,8 +26,6 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
-import org.greenrobot.eventbus.EventBus;
-
 import java.util.HashMap;
 import java.util.Locale;
 
@@ -39,9 +33,7 @@ import javax.inject.Inject;
 
 import butterknife.BindView;
 import butterknife.OnClick;
-import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 /**
  * Created by Administrator on 2018/3/26.
@@ -83,7 +75,7 @@ public class RealNameAuthenAct extends BaseActivity implements RealNameAutherCon
     @Override
     public void initListener() {
     }
-
+    public static final int MAX_COUNT = 2;//修改为只验证身份证与姓名
     @Override
     public void initData() {
         DaggerRealNameAutherComponent.builder().netComponent(SheepApp.get(this).getNetComponent()).realNameAutherModule(new RealNameAutherModule(this)).build().inject(this);
@@ -97,7 +89,6 @@ public class RealNameAuthenAct extends BaseActivity implements RealNameAutherCon
         if (i != null && i.hasExtra("info")) {
             whereFrom = i.getIntExtra("where_from", 0);
         }
-        showProgress();
         tvSubmit.setVisibility(View.GONE);
         userEntity = DataUtil.getInstance().getUserEntity();
         if(userEntity != null){
@@ -122,7 +113,7 @@ public class RealNameAuthenAct extends BaseActivity implements RealNameAutherCon
                 count = count + 1;
                 et_bank_mobile.setEnabled(false);
             }
-            if (count >= 4) {
+            if (count >= MAX_COUNT) {
                 tvSubmit.setVisibility(View.GONE);
             } else {
                 tvSubmit.setVisibility(View.VISIBLE);
@@ -140,27 +131,13 @@ public class RealNameAuthenAct extends BaseActivity implements RealNameAutherCon
     public void NetSuccess(int code, String msg, String string) {
         hideProgress();
         G.showToast(msg);
-        RealNameAutehrChange change = new RealNameAutehrChange();
-        for (String key : map.keySet()) {
-            if (key.equals("real_name") && !TextUtils.isEmpty(map.get(key))) {
-                change.setRealName(map.get(key));
-            }
-            if (key.equals("id_number") && !TextUtils.isEmpty(map.get(key))) {
-                change.setIdCard(map.get(key));
-            }
-            if (key.equals("bank_card") && !TextUtils.isEmpty(map.get(key))) {
-                change.setBanck(map.get(key));
-            }
-
-        }
-        EventBus.getDefault().post(change);
         updateUserInfo(new Action1<UserEntity>() {
 
             @Override
             public void call(UserEntity result) {
                 if (result != null)
                     userEntity = result;
-                    if (whereFrom == 1) {
+                    if (whereFrom == 1) {//从提现过来的
                         Jump2View.getInstance().goWithdrawal(RealNameAuthenAct.this);
                     }
                 finish();
@@ -222,13 +199,17 @@ public class RealNameAuthenAct extends BaseActivity implements RealNameAutherCon
         } else if (TextUtils.isEmpty((idNumber = etIdCard.getText().toString()))) {
             G.showToast("身份证不能为空");
             return;
-        } else if (TextUtils.isEmpty((bankCard = etBank.getText().toString()))) {
+        } else if (MAX_COUNT >= 4 && TextUtils.isEmpty((bankCard = etBank.getText().toString()))) {
             G.showToast("银行卡号不能为空");
             return;
-        } else if (TextUtils.isEmpty((bankCardMobile = et_bank_mobile.getText().toString()))) {
+        } else if (MAX_COUNT >= 4 && TextUtils.isEmpty((bankCardMobile = et_bank_mobile.getText().toString()))) {
             G.showToast("银行行预留手机号不能为空");
             return;
         }
+        if (!StringUtils.isChinese(realName)) {
+            G.showToast("姓名必须是基本汉字!");
+            return;
+        }
         map.put("real_name", realName);
 
         String str = StringUtils.IDCardValidate(idNumber);
@@ -237,18 +218,19 @@ public class RealNameAuthenAct extends BaseActivity implements RealNameAutherCon
             return;
         }
         map.put("id_number", idNumber);
+        if (MAX_COUNT >= 4) {
+            if (!StringUtils.checkBankCard(bankCard)) {
+                G.showToast("银行卡不合法哈!");
+                return;
+            }
+            map.put("bank_card", bankCard);
 
-        if (!StringUtils.checkBankCard(bankCard)) {
-            G.showToast("银行卡不合法哈!");
-            return;
-        }
-        map.put("bank_card", bankCard);
-
-        if (!StringUtils.isMobile(bankCardMobile)) {
-            G.showToast("银行卡预留手机号不合法哈!");
-            return;
+            if (!StringUtils.isMobile(bankCardMobile)) {
+                G.showToast("银行卡预留手机号不合法哈!");
+                return;
+            }
+            map.put("bank_card_mobile", bankCardMobile);
         }
-        map.put("bank_card_mobile", bankCardMobile);
 
         ViewUtil.showMsgDialog(this, new DialogConfig().setTitle("重要提示").setMsgMore(String.format(Locale.CHINA, "你已执行%d次实名认证操作", userEntity.getCertification_count()))
                 .setMsg("实名认证首次免费。请务必确认您所提交的认证信息真实有效。若因信息填写错误造成认证失败。再次申请认证时需扣除您0.5绵羊币/次作为认证费用,请务必谨慎填写认证信息。")

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

@@ -71,7 +71,7 @@ public class SignRecordAct extends BaseActivity implements SignRecordContract.Vi
     @Override
     public void initView() {
         activity = this;
-        empty_view = findViewById(R.id.download_mgr_empty_view);
+        empty_view = findViewById(R.id.empty_view);
         TitleBarUtils
                 .getInstance()
                 .setTitle(activity, "我的战绩")

+ 76 - 95
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -74,6 +74,7 @@ import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -89,6 +90,7 @@ import rx.functions.Action1;
 import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.GAME_INSTEAD_OF_RECHARGE_GET;
+import static com.sheep.gamegroup.util.DataUtil.REQUEST_CAPTURE_PERMISSION;
 
 /**
  * 任务详情页面
@@ -180,8 +182,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     private TaskAcceptedEty gettaskAcceptedEty;
 
     private int releaseTaskId = -1;
-    private String game_id;
-    private int game_type = -1;
 
     private int type;//-1:开始任务 1:下载 2:安装 3:打开  10:打开H5,101:充值  100:领取奖励
 
@@ -207,9 +207,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         btn_show = getIntent().getBooleanExtra("btn_show", false);
         isFromTaskList = getIntent().getBooleanExtra("is_from_task_list", false);
         releaseTaskId = getIntent().getIntExtra("task_id", -1);
-        game_id = getIntent().getStringExtra("game_id");
-        game_type = getIntent().getIntExtra("game_type", -1);
-        LogUtil.println("TaskDetailAct", "btn_show =", btn_show, "isFromTaskList =", isFromTaskList, "taskId =", releaseTaskId, "game_id =", game_id, "game_type =", game_type);
         DaggerTaskDetailComponent.builder()
                 .netComponent(SheepApp.get(activity).getNetComponent())
                 .taskDetailModule(new TaskDetailModule(this))
@@ -283,7 +280,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         bottom_btn_layout.setVisibility(View.VISIBLE);
         btnTaskItem.setVisibility(View.VISIBLE);
         btnUpImag.setVisibility(View.VISIBLE);
-        if ((gettaskAcceptedEty != null && gettaskAcceptedEty.isIs_running()) || taskReleaseEty.isIs_running() || game_id != null) {//已经领取任务
+        if (gettaskAcceptedEty != null && (gettaskAcceptedEty.isIs_running() || gettaskAcceptedEty.getStatus() == 3)) {//已经领取任务
             switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务
                 case 4://h5业务
                     type = 10;
@@ -335,7 +332,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                     bottom_btn_layout.setVisibility(View.GONE);
                     break;
                 case 3://完成任务
-                    if(game_type != 1)
+                    if(!taskEty.isGameTask())
                         bottom_btn_layout.setVisibility(View.GONE);
                     break;
                 case 8://任务已经下线
@@ -376,8 +373,9 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                                 btnTaskItem.setText(CommonUtil.GAME_INSTALL);
                                 break;
                             case DownloadTaskService.STATUS_INSTALLED:
-                                if (game_type == 1) {
+                                if (gettaskAcceptedEty.getStatus() ==3) {
                                     btnUpImag.setText(CommonUtil.GAME_RECHAGE);
+                                    btnUpImag.setVisibility(View.VISIBLE);
                                     btnTaskItem.setText("启动游戏");
                                 } else {
                                     btnTaskItem.setVisibility(View.GONE);
@@ -588,7 +586,12 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                             ApkUtils.installApk(SheepApp.mContext, PackageUtil.isExistsFile(taskEty.getPackage_names()));
                             break;
                         case DownloadTaskService.STATUS_INSTALLED:
-                            PackageUtil.startApp(SheepApp.mContext, taskEty.getPackage_names());
+                            DataUtil.getInstance().requestCapturePermission(activity, new Action1<Integer>() {
+                                @Override
+                                public void call(Integer integer) {
+                                    PackageUtil.startApp(SheepApp.mContext, taskEty.getPackage_names());
+                                }
+                            });
                             break;
                         case 10:
                             Ext ext;
@@ -601,9 +604,9 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                     }
                     break;
                 case R.id.btn_up_imag:
-                    if(game_type == 1){
-                        if(game_id != null){
-                            ViewUtil.showGamePayAccount(activity, game_id, taskReleaseEty.getName());
+                    if(gettaskAcceptedEty.getStatus() ==3 &&taskEty.isGameTask()){
+                        if(taskEty.getThird_task_id() != null){
+                            ViewUtil.showGamePayAccount(activity, taskEty.getThird_task_id(), taskReleaseEty.getName());
                             return;
                         }
                     }else if(taskEty.isGameTask()){
@@ -618,8 +621,13 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
-                    } else {
-                        showChooseDialog(false, true, DEFAULT_MAX_COUNT);
+                    } else {//截图任务
+                        if(DataUtil.IS_USE_SCREEN_SHOT) {//小绵羊截图方案
+                            File dir = DataUtil.getInstance().getScreenShotsDir(taskEty.getPackage_names());
+                            showChooseDialog(false, true, DEFAULT_MAX_COUNT, dir);
+                        } else {//用户手动截图方案
+                            showChooseDialog(false, true, DEFAULT_MAX_COUNT);
+                        }
                         UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_UPLOAD_PICTURE);
                     }
                     break;
@@ -744,6 +752,9 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
 //                            onGetNetImageUrl(data);
         dismissLoaddingDialog();
         G.showToast("提交成功,等待审核!");
+        if(DataUtil.IS_USE_SCREEN_SHOT) {//小绵羊截图方案:上传截图成功后删除之前的截图
+            DataUtil.getInstance().clearScreenShots();
+        }
 
         if(isFromTaskList)//之前界面为任务记录界面,需要回调刷新任务记录列表
             setResult(RESULT_OK);
@@ -806,33 +817,40 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == 0 && resultCode == RESULT_OK) {
-            if (taskReleaseEty.getAccepted_task_id() > 0) {
-                showProgress(true);
-                SheepApp.getInstance()
-                        .getNetComponent()
-                        .getApiService()
-                        .giveUpTask(taskReleaseEty.getAccepted_task_id())
-                        .subscribeOn(Schedulers.io())
-                        .observeOn(AndroidSchedulers.mainThread())
-                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
-                            @Override
-                            public void onError(BaseMessage baseMessage) {
-                                hideProgress();
-                                G.showToast(baseMessage);
-                            }
-
-                            @Override
-                            public void onNext(BaseMessage baseMessage) {
+        switch (requestCode){
+            case 0:
+                if (resultCode == RESULT_OK) {
+                    if (taskReleaseEty.getAccepted_task_id() > 0) {
+                        showProgress(true);
+                        SheepApp.getInstance()
+                                .getNetComponent()
+                                .getApiService()
+                                .giveUpTask(taskReleaseEty.getAccepted_task_id())
+                                .subscribeOn(Schedulers.io())
+                                .observeOn(AndroidSchedulers.mainThread())
+                                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                                    @Override
+                                    public void onError(BaseMessage baseMessage) {
+                                        hideProgress();
+                                        G.showToast(baseMessage);
+                                    }
 
-                                acceptedTask();
-                            }
-                        });
-            }
-        }
-        //图片展示
-        if(requestCode == 101){
-            isFresh = true;
+                                    @Override
+                                    public void onNext(BaseMessage baseMessage) {
+                                        CommonUtil.getInstance().setTAskEnty(null);
+                                        acceptedTask();
+                                    }
+                                });
+                    }
+                }
+                break;
+            case 101:
+                //图片展示
+                isFresh = true;
+                break;
+            default:
+                DataUtil.getInstance().onActivityResult(requestCode, resultCode, data);
+                break;
         }
     }
 
@@ -864,7 +882,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                         taskReleaseEty.getTask().setRelease_task_id(taskReleaseEty.getId());
                         CommonUtil.getInstance().setTAskEnty(taskReleaseEty.getTask());
 
-                        DataUtil.getInstance().setTaskListChange(true);//主页任务列表发生变化,回到主页后自动刷新
+                        DataUtil.getInstance().setTaskListChanged();//主页任务列表发生变化,回到主页后自动刷新
 
                         getAcceptedTaskDetail(releaseTaskId);
 
@@ -1067,45 +1085,8 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             detail_task_recyclerview.setAdapter(sonListviewAdp);
         }
 
-        //自动审核
-        //todo 暂时不要
-//        if(taskEty.getInspect_type() == 3){
-//            taskdetail_user_use_layout.setVisibility(View.VISIBLE);
-//
-//            start_task_btntv.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//            start_task_line.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//            down_task_btntv.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//            down_task_line.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//            install_task_btntv.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//            install_task_line.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//            if (taskEty != null) {
-//                int thisRun = taskEty.getRunTask();
-//                if (thisRun == 1) {//接受了任务
-//                    start_task_btntv.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                    start_task_line.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                    if (PackageUtil.isAppInstalled(SheepApp.mContext, taskEty.getPackage_names())) {
-//                        down_task_btntv.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                        down_task_line.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                        install_task_btntv.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                        install_task_line.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                    } else if(!TextUtils.isEmpty(PackageUtil.isExistsFile(taskEty.getPackage_names()))){
-//
-//                        down_task_btntv.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                        down_task_line.setBackground(getResources().getDrawable(R.drawable.selector_button_full_main));
-//                        install_task_btntv.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//                        install_task_line.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//                    } else {
-//                        down_task_btntv.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//                        down_task_line.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//                        install_task_btntv.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//                        install_task_line.setBackground(getResources().getDrawable(R.drawable.sp_rectangle_bg_gray_radius));
-//                    }
-//                }
-//            }
-//        }
-
         //截至时间
-        if(gettaskAcceptedEty != null &&taskReleaseEty != null && taskReleaseEty.isIs_running() && gettaskAcceptedEty.getEnd_time() > 0){
+        if(gettaskAcceptedEty != null &&taskReleaseEty != null && gettaskAcceptedEty.isIs_running() && gettaskAcceptedEty.getEnd_time() > 0){
             CommonUtil.getInstance().getHashMap(end_of_time_tv);
 
             end_of_time_tv.setVisibility(View.VISIBLE);
@@ -1161,26 +1142,26 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     private void getAcceptedTaskDetail(final int releaseTaskId){
         showProgress();
         CommonUtil.getInstance().getTaskAllDetail(releaseTaskId, new Action1<BaseMessage>() {
-                    @Override
-                    public void call(BaseMessage baseMessage) {
-                        if(baseMessage.getCode() == 0)
-                            gettaskAcceptedEty = baseMessage.getData(TaskAcceptedEty.class);
-                        if(gettaskAcceptedEty != null)
-                            taskReleaseEty = gettaskAcceptedEty.getRelease_task();
-                        if(taskReleaseEty == null){
-                            initTaskReleaseEty();
-                        } else {
-                            hideProgress();
-                            empty_view.setVisibility(View.GONE);
-                            initWigget();
-                        }
-                    }
-                });
+            @Override
+            public void call(BaseMessage baseMessage) {
+                if(baseMessage.getCode() == 0)
+                    gettaskAcceptedEty = baseMessage.getData(TaskAcceptedEty.class);
+                if(gettaskAcceptedEty != null)
+                    taskReleaseEty = gettaskAcceptedEty.getRelease_task();
+                if(taskReleaseEty == null){
+                    initTaskReleaseEty();
+                } else {
+                    hideProgress();
+                    empty_view.setVisibility(View.GONE);
+                    initWigget();
+                }
+            }
+        });
     }
 
     private void initTaskReleaseEty() {
         taskReleaseEty = DataUtil.getInstance().getCacheResult(ApiKey.releaseTaskDesc(releaseTaskId), TaskReleaseEty.class);
-            hideProgress();
+        hideProgress();
         if (taskReleaseEty != null) {
             empty_view.setVisibility(View.GONE);
             initWigget();

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

@@ -2,38 +2,54 @@ package com.sheep.gamegroup.view.dialog;
 
 import android.app.Activity;
 import android.content.DialogInterface;
+import android.support.annotation.StringDef;
 import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.view.Gravity;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
-import android.widget.EditText;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.StringUtils;
-import com.sheep.gamegroup.util.ViewUtil;
-import com.sheep.gamegroup.view.activity.ActWeb;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /**
  * Created by ljy on 2018/6/22.
  */
 
 public class DialogShare {
+    public final static String FACE_TO_FACE = "face_to_face";
+    public final static String COPY_SHARE_LINK = "copy_share_link";
+    public final static String WEIXIN_CIRCLE = "weixin_circle";
+    public final static String QQ = "qq";
+    public final static String WX = "wx";
+    public final static String ALL = "all";
+    public final static String OTHER = "other";
+
+    @StringDef({FACE_TO_FACE, COPY_SHARE_LINK, WEIXIN_CIRCLE, QQ, WX, OTHER, ALL})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface SHARE_TYPE {
+    }
+
     private Activity activity;
     private String link;
+    private String description;
 
-    public DialogShare(Activity activity, String link) {
+    public DialogShare(Activity activity, String link, String description) {
         this.activity = activity;
         this.link = link;
+        this.description = description;
     }
-    public void showShare(){
-        if(activity == null){
+
+    public void showShare() {
+        if (activity == null) {
             return;
         }
         View dialog_parent = View.inflate(activity, R.layout.share_panel_layout, null);
@@ -60,7 +76,7 @@ public class DialogShare {
         qq_layotu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                CommonUtil.getInstance().popShare(activity, link, "qq");
+                CommonUtil.getInstance().popShare(activity, link, QQ, description);
 
                 dialog.dismiss();
             }
@@ -68,7 +84,7 @@ public class DialogShare {
         weixin_layotu.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                CommonUtil.getInstance().popShare(activity, link, "wx");
+                CommonUtil.getInstance().popShare(activity, link, WX, description);
                 dialog.dismiss();
             }
         });
@@ -88,10 +104,12 @@ public class DialogShare {
         try {
             dialog.show();
             Window window = dialog.getWindow();
-            window.setGravity(Gravity.BOTTOM);
-            WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
-            params.width = G.WIDTH > G.HEIGHT? G.HEIGHT : G.WIDTH;
-            dialog.getWindow().setAttributes(params);
+            if(window != null) {
+                window.setGravity(Gravity.BOTTOM);
+                WindowManager.LayoutParams params = window.getAttributes();
+                params.width = G.WIDTH > G.HEIGHT ? G.HEIGHT : G.WIDTH;
+                window.setAttributes(params);
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyGame.java

@@ -47,9 +47,9 @@ import rx.schedulers.Schedulers;
 
 public class FgtMyGame extends BaseFragment {
 
-    @BindView(R.id.img_list_empty)
+    @BindView(R.id.empty_view_img)
     ImageView imgListEmpty;
-    @BindView(R.id.txt_list_empty)
+    @BindView(R.id.empty_view_msg)
     TextView txtListEmpty;
     @BindView(R.id.recyclerview)
     RecyclerView recyclerview;

+ 57 - 60
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java

@@ -1,7 +1,6 @@
 package com.sheep.gamegroup.view.fragment;
 
 import android.app.Activity;
-import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
@@ -45,7 +44,6 @@ import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.Unbinder;
 
-import static com.sheep.gamegroup.model.util.CacheInterceptor.DEFAULT_SAVE_TIME;
 
 /**
  * 试玩赚钱
@@ -121,6 +119,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     @Override
     public void onViewCreated() {
         activity = getActivity();
+        DataUtil.getInstance().isTaskListChange(getClass());
         initView();
         initData();
     }
@@ -191,29 +190,43 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     }
     //强制刷新数据
     public void refreshData(){
+        DataUtil.getInstance().isTaskListChange(getClass());
         isFirstCache = false;
         refresh.setRefreshing(true);
         mInitData();
     }
     public void mInitData() {
+        if(!acceptedEtyList.isEmpty()) {
+            acceptedEtyList.clear();
+            notifyDataSetChanged();
+        }
+        CommonUtil.getInstance().resetEmptyView(empty_view);
         //加载缓存
         type = 0;
         if(isFirstCache){
-            List<TaskAcceptedEty> cacheTaskAcceptedEtyList;
-            if(isGameTask) {
-                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
-            } else {
-                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(is_succession, 0), TaskAcceptedEty.class);
-            }
-            if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
-                acceptedEtyList.clear();
-            } else {
-                acceptedEtyList = cacheTaskAcceptedEtyList;
-            }
+            //注释掉获取缓存的正在进行的任务
+//            List<TaskAcceptedEty> cacheTaskAcceptedEtyList;
+//            if(isGameTask) {
+//                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
+//            } else {
+//                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(is_succession, 0), TaskAcceptedEty.class);
+//            }
+//            if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
+//                acceptedEtyList.clear();
+//            } else {
+//                acceptedEtyList = cacheTaskAcceptedEtyList;
+//            }
             getFromACache(type);
         }
         //加载网络数据
         type = 0;
+        getFromNetWork(type);
+    }
+
+    /**
+     * 获取正在运行的任务
+     */
+    private void initAcceptedTaskList() {
         if(isGameTask){
             presenter.runGameTask();
         } else {
@@ -266,7 +279,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     public void giveUpTaskSuccesView(Object object) {
         G.showToast("取消任务成功");
         CommonUtil.getInstance().setTAskEnty(null);
-        DataUtil.getInstance().setTaskListChange(true);
+        DataUtil.getInstance().setTaskListChanged();
         refreshData();
     }
 
@@ -289,30 +302,20 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 if (ListUtil.isEmpty(taskAcceptedEty)) {
                     acceptedEtyList.clear();
                 } else {
-                    acceptedEtyList = taskAcceptedEty;
+                    acceptedEtyList.clear();
+                    acceptedEtyList.addAll(taskAcceptedEty);
                 }
+                notifyDataSetChanged();
             }
         }
-        getFromNetWork(type);
     }
 
     @Override
-    public void failReturnTask2View(Object o) {
-        try {
-            BaseMessage baseMessage = (BaseMessage) o;
-            switch (baseMessage.getCode()){
-                case 300://未查询到正在运行的任务
-//                    G.showToast(" 未查询到正在运行的任务!");
-                    break;
-                default:
-                    G.showToast(" 网络错误!");
-                    break;
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            G.showToast(" 网络错误!");
+    public void failReturnTask2View(Object object) {
+        if(!acceptedEtyList.isEmpty()) {
+            acceptedEtyList.clear();
+            notifyDataSetChanged();
         }
-        getFromNetWork(type);
     }
 
     /**
@@ -326,14 +329,17 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
             List<TaskReleaseEty> releaseEtyList = ((BaseMessage) object).getDataList(TaskReleaseEty.class);
             switch (type) {
                 case 0:
-                    releaseEtyLists = releaseEtyList;
+                    releaseEtyLists.clear();
+                    releaseEtyLists.addAll(releaseEtyList);
                     break;
                 case 1:
-                    releaseEtyListsBegin = releaseEtyList;
+                    releaseEtyListsBegin.clear();
+                    releaseEtyListsBegin.addAll(releaseEtyList);
                     break;
             }
+            notifyDataSetChanged();
         }
-        loadReleaseOrNotifyAdapter();
+        getFromNetWork(++type);
     }
 
     @Override
@@ -346,9 +352,6 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 releaseEtyListsBegin.clear();
                 break;
         }
-        loadReleaseOrNotifyAdapter();
-    }
-    private void loadReleaseOrNotifyAdapter(){
         notifyDataSetChanged();
         getFromNetWork(++type);
     }
@@ -361,34 +364,25 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         }
     }
 
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        if(tryMakeMoneyAdp != null){
-            tryMakeMoneyAdp.cancelAllTimers();
-        }
-    }
-
+    private int onResumeCount = 0;
     @Override
     public void onResume() {
         super.onResume();
-        if (presenter != null && DataUtil.getInstance().isTaskListChange()) {
-            refreshData();
+        if (onResumeCount > 0 && presenter != null){
+            if(DataUtil.getInstance().isTaskListChange(getClass())) {//需要全部刷新
+                refreshData();
+            } else {
+                initAcceptedTaskList();
+            }
         }
+        onResumeCount++;
     }
 
     @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        try {
-
-            if(tryMakeMoneyAdp != null){
-
-                tryMakeMoneyAdp.refreshAdapter();
-            }
-        }catch (Exception e){
-            e.printStackTrace();
+    public void onPause() {
+        super.onPause();
+        if(tryMakeMoneyAdp != null){
+            tryMakeMoneyAdp.cancelAllTimers();
         }
     }
     /**
@@ -405,7 +399,8 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 if(cacheTaskReleaseEtyList == null) {
                     releaseEtyLists.clear();
                 } else {
-                    releaseEtyLists = cacheTaskReleaseEtyList;
+                    releaseEtyLists.clear();
+                    releaseEtyLists.addAll(cacheTaskReleaseEtyList);
                     notifyDataSetChanged();
                     getFromACache(++type);
                 }
@@ -414,7 +409,8 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                 if(cacheTaskReleaseEtyList == null) {
                     releaseEtyListsBegin.clear();
                 } else {
-                    releaseEtyListsBegin = cacheTaskReleaseEtyList;
+                    releaseEtyListsBegin.clear();
+                    releaseEtyListsBegin.addAll(cacheTaskReleaseEtyList);
                     notifyDataSetChanged();
                     getFromACache(++type);
                 }
@@ -427,6 +423,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
      */
     private void getFromNetWork(int type){
         if(type > 1){
+            initAcceptedTaskList();
             return;
         }
         RequestParameEty parameEty = new RequestParameEty();

+ 50 - 36
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -2,11 +2,12 @@ package com.sheep.jiuyan.samllsheep;
 
 import android.app.Activity;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.support.multidex.MultiDex;
 
 import com.kfzs.duanduan.ActMain;
-import com.kfzs.duanduan.react.ReactUtil;
+import com.kfzs.duanduan.react.ConfigUtil;
 import com.kfzs.duanduan.react.SharedPreferences;
 import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
@@ -16,14 +17,17 @@ import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.gamegroup.util.AppUtil;
 import com.sheep.gamegroup.util.ChannelContent;
 import com.sheep.gamegroup.util.ConnectAddress;
+import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
-import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.activity.LoginAct;
 import com.sheep.gamegroup.view.activity.PhoneAct;
 import com.sheep.gamegroup.view.activity.SplashAct;
+import com.sheep.jiuyan.samllsheep.service.DownloadService;
+import com.sheep.jiuyan.samllsheep.service.FloatService;
+import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.tencent.bugly.Bugly;
@@ -91,14 +95,14 @@ public class SheepApp extends BaseApplication {
     }
 
     public void setConnectAddress(ConnectAddress connectAddress) {
-        if(this.connectAddress != connectAddress){
-            SharedPreferences.getInstance().putString("flavor", connectAddress.name());
-            quit();
-            android.os.Process.killProcess(android.os.Process.myPid());
-            System.exit(0);
-        } else {
-            G.showToast("已经是该服务器");
-        }
+            if(this.connectAddress != connectAddress){
+                SharedPreferences.getInstance().putString("flavor", connectAddress.name());
+                quit();
+                android.os.Process.killProcess(android.os.Process.myPid());
+                System.exit(0);
+            } else {
+                G.showToast("已经是该服务器");
+            }
     }
 
     @Override
@@ -119,7 +123,7 @@ public class SheepApp extends BaseApplication {
     }
 
 
-    public int mActivityAount;
+    public int mActivityCount;//显示的activity的个数, 0个时代表暂停或退出应用,1个代表应用正显示在用户面前
     private boolean notStop = false;
     /**
      * Activity 生命周期监听,用于监控app前后台状态切换
@@ -139,50 +143,56 @@ public class SheepApp extends BaseApplication {
                 });
             }
 
-            if(mActivityAount == 0) {
-                Beta.autoDownloadOnWifi = !BuildConfig.DEBUG;
-                Bugly.init(getApplicationContext(), Config.BUGLY_APPID, TestUtil.isTest());
-                //开发设备
-                Bugly.setIsDevelopmentDevice(getApplicationContext(), ReactUtil.isSmallDebug());
+            if(mActivityCount == 0) {
+                if(ConfigUtil.getInstance().isUpgrade()) {
+                    Beta.autoDownloadOnWifi = !BuildConfig.DEBUG;
+                    Bugly.init(getApplicationContext(), Config.BUGLY_APPID, BuildConfig.DEBUG);
+                    //开发设备
+                    Bugly.setIsDevelopmentDevice(getApplicationContext(), ReactUtil.isSmallDebug());
+                }
                 AppUsageManager.getInstance().needOpenLookAppUsageStatsPermisson(true);//尝试保存应用使用情况的数据
-                LogUtil.println("SheepApp SHEEP_START");
-                UMConfigUtils.Event.SHEEP_START.onEvent();
+                LogUtil.println("SheepApp onActivityCreated", mActivityCount);
+                UMConfigUtils.Event.SHEEP_CREATED.onEvent();
             }
         }
 
         @Override
         public void onActivityStarted(Activity activity) {
-            mActivityAount++;
-        }
-
-        @Override
-        public void onActivityResumed(Activity activity) {
+            mActivityCount++;
             UMConfigUtils.onPageStart(activity);
-            if (mActivityAount > 0) {
+            if (mActivityCount > 0) {
                 if(!notStop) {
                     notStop = true;
-                    LogUtil.println("SheepApp SHEEP_RESUME");
-                    UMConfigUtils.Event.SHEEP_RESUME.onEvent();
+                    LogUtil.println("SheepApp onActivityStarted", mActivityCount);
+                    UMConfigUtils.Event.SHEEP_STARTED.onEvent();
+                    Jump2View.getInstance().startFloat(activity, false);
+                    if(DataUtil.IS_USE_SCREEN_SHOT)
+                        Jump2View.getInstance().startShotScreenFloat(activity, false);
                 }
-                Jump2View.getInstance().startFloat(activity, false);
             }
         }
 
         @Override
+        public void onActivityResumed(Activity activity) {
+        }
+
+        @Override
         public void onActivityPaused(Activity activity) {
-            UMConfigUtils.onPageEnd(activity);
         }
 
         @Override
         public void onActivityStopped(Activity activity) {
-            mActivityAount--;
-            if (mActivityAount <= 0) {
+            mActivityCount--;
+            UMConfigUtils.onPageEnd(activity);
+            if (mActivityCount <= 0) {
                 if(notStop) {
                     notStop = false;
-                    LogUtil.println("SheepApp SHEEP_PAUSE");
-                    UMConfigUtils.Event.SHEEP_PAUSE.onEvent();
+                    LogUtil.println("SheepApp onActivityStopped", mActivityCount);
+                    UMConfigUtils.Event.SHEEP_STOPPED.onEvent();
+                    Jump2View.getInstance().startFloat(activity, true);
+                    if(DataUtil.IS_USE_SCREEN_SHOT)
+                        Jump2View.getInstance().startShotScreenFloat(activity, true);
                 }
-                Jump2View.getInstance().startFloat(activity, true);
             }
         }
 
@@ -192,9 +202,13 @@ public class SheepApp extends BaseApplication {
 
         @Override
         public void onActivityDestroyed(Activity activity) {
-            if(mActivityAount == 0) {
-                LogUtil.println("SheepApp SHEEP_STOP");
-                UMConfigUtils.Event.SHEEP_STOP.onEvent();
+            if(mActivityCount == 0) {
+                LogUtil.println("SheepApp onActivityDestroyed", mActivityCount);
+                stopService(new Intent(SheepApp.this, DownloadService.class));
+                stopService(new Intent(SheepApp.this, FloatService.class));
+                if(DataUtil.IS_USE_SCREEN_SHOT)
+                    stopService(new Intent(SheepApp.this, FloatShotScreenService.class));
+                UMConfigUtils.Event.SHEEP_DESTROYED.onEvent();
             }
         }
     };

+ 12 - 2
app/src/main/java/com/sheep/jiuyan/samllsheep/service/FloatService.java

@@ -74,11 +74,13 @@ public class FloatService extends Service {
                                     Message message = handler.obtainMessage(1);
                                     message.obj = count;
                                     handler.sendMessage(message);
+                                    LogUtil.println("FloatService", 1);
                                 }
                             } else {
                                 if(isShowFloat) {
                                     removeMessages();
                                     mHandler.sendEmptyMessage(OPERATION_HIDE);
+                                    LogUtil.println("FloatService", 2);
                                 }
                             }
 
@@ -117,39 +119,47 @@ public class FloatService extends Service {
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
+                    LogUtil.println("FloatService", 4);
                 }
             }
         }
 
         private void onHandleMessage1() {
+            LogUtil.println("FloatService", 3);
             AppUsage appUsage = new AppUsage();
             //更新悬浮窗
             long totalTimeInForeground = AppUsageManager.getInstance().getTotalTimeInForeground(appUsage);
             if(!AutoTaskListUtil.getInstance().hasTask(appUsage.getPackageName())){
                 FloatService.this.removeMessages();
                 mHandler.sendEmptyMessage(OPERATION_HIDE);
+                LogUtil.println("FloatService", 5);
                 return;
             }
+            LogUtil.println("FloatService", 6);
             if(!isAdded){
                 wm.addView(floatView, params);
                 isAdded = true;
+                LogUtil.println("FloatService", 7);
             }
             btn_floatView.setText(String.format(Locale.CHINA,"约运行%s",TimeUtil.getHours(totalTimeInForeground)));
             wm.updateViewLayout(floatView, params);
+            LogUtil.println("FloatService", 8);
         }
 
     };
     @Override
     public void onDestroy() {
+        super.onDestroy();
+        removeMessages();
         if (floatView != null) {
             try {
-                wm.removeViewImmediate(floatView);
+                if(isAdded)
+                    wm.removeViewImmediate(floatView);
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
         stopTimer();
-        super.onDestroy();
     }
 
 //    public static final String OPERATION = "operation";

+ 429 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/service/FloatShotScreenService.java

@@ -0,0 +1,429 @@
+    package com.sheep.jiuyan.samllsheep.service;
+
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.PixelFormat;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.VirtualDisplay;
+import android.media.Image;
+import android.media.ImageReader;
+import android.media.projection.MediaProjection;
+import android.media.projection.MediaProjectionManager;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.GlobalScreenShot;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import rx.Observable;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.functions.Func1;
+import rx.schedulers.Schedulers;
+
+import static com.sheep.gamegroup.util.DataUtil.REQUEST_CAPTURE_PERMISSION;
+
+/**
+ * Created by realicing on 2018/5/8.
+ * realicing@sina.com
+ */
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+public class FloatShotScreenService extends Service {
+
+    //不与Activity进行绑定.
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        createFloatView();
+        createImageReader();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        removeMessages();
+        if (floatView != null) {
+            try {
+                if(isAdded)
+                    wm.removeViewImmediate(floatView);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        stopVirtual();
+
+        tearDownMediaProjection();
+    }
+
+    //    public static final String OPERATION = "operation";
+    public static final int OPERATION_SHOW = 100;
+    public static final int OPERATION_HIDE = 101;
+
+    private static final int HANDLE_CHECK_ACTIVITY = 200;
+
+    private boolean isAdded = false; // 是否已增加悬浮窗
+    private static WindowManager wm;
+    private static WindowManager.LayoutParams params;
+    private View floatView;
+
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if (intent != null) {
+            int type = intent.getIntExtra("type", 0);
+            switch (type) {
+                case 1:
+                    mResultData = (Intent) DataUtil.getInstance().getData(REQUEST_CAPTURE_PERMISSION);
+                    break;
+                case 0:
+                default:
+                    if (intent.getBooleanExtra("isShow", true)) {
+                        mHandler.sendEmptyMessageDelayed(OPERATION_SHOW, 1000L);
+                    } else {
+                        removeMessages();
+                        mHandler.sendEmptyMessage(OPERATION_HIDE);
+                    }
+                    break;
+            }
+        }
+        return super.onStartCommand(intent, flags, startId);
+    }
+
+    private void removeMessages() {
+        mHandler.removeMessages(OPERATION_HIDE);
+        mHandler.removeMessages(OPERATION_SHOW);
+    }
+
+    private Handler mHandler = new TwHandler(this);
+
+    static class TwHandler extends Handler {
+        TwHandler(FloatShotScreenService service) {
+            this.service = service;
+        }
+
+        FloatShotScreenService service;
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case OPERATION_SHOW:
+                    if (!service.isAdded) {
+                        try {
+//                            service.floatView.setAlpha(1.0f);
+//                            wm.updateViewLayout(service.floatView, params);
+                            wm.addView(service.floatView, params);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                        service.isAdded = true;
+                    }
+                    break;
+                case OPERATION_HIDE:
+                case HANDLE_CHECK_ACTIVITY:
+                    if (service.isAdded) {
+                        try {
+//                            service.floatView.setAlpha(0.0f);
+//                            wm.updateViewLayout(service.floatView, params);
+                            wm.removeViewImmediate(service.floatView);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                        service.isAdded = false;
+                    }
+                    break;
+            }
+        }
+    }
+
+
+    /**
+     * 创建悬浮窗
+     */
+    private void createFloatView() {
+        //获取浮动窗口视图所在布局.
+        ImageView imageView = new ImageView(getApplicationContext());
+        imageView.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_crop));
+        floatView = imageView;
+
+        wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
+        params = new WindowManager.LayoutParams();
+
+        // 设置window type
+//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){//6.0
+//            params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+//        }else {
+//            params.type =  WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
+//        }
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            //  大于等于 24 即为 7.0 及以上执行内容
+            Log.e("qx", "7.0");
+            params.type = WindowManager.LayoutParams.TYPE_PHONE; // 7.1
+        } else {
+            //  低于 24 即为 7.0 以下执行内容
+            params.type = WindowManager.LayoutParams.TYPE_TOAST;   // 4.4
+            Log.e("qx", "4.4");
+
+        }
+        /*
+         * 如果设置为params.type = WindowManager.LayoutParams.TYPE_PHONE; 那么优先级会降低一些,
+         * 即拉下通知栏不可见
+         */
+
+        params.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明
+
+        // 设置Window flag
+        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
+                | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
+        // 设置悬浮窗的Touch监听
+        floatView.setOnTouchListener(new View.OnTouchListener() {
+            int lastX, lastY;
+            int paramX, paramY;
+            private boolean isMove = false;
+            private long downTime = 0;
+
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        isMove = false;
+                        downTime = System.currentTimeMillis();
+                        lastX = (int) event.getRawX();
+                        lastY = (int) event.getRawY();
+                        paramX = params.x;
+                        paramY = params.y;
+                        break;
+                    case MotionEvent.ACTION_MOVE:
+                        int dx = (int) event.getRawX() - lastX;
+                        int dy = (int) event.getRawY() - lastY;
+                        params.x = paramX + dx;
+                        params.y = paramY + dy;
+                        // 更新悬浮窗位置
+                        wm.updateViewLayout(floatView, params);
+                        isMove = true;
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        if (!isMove && System.currentTimeMillis() - downTime < 1000L) {//没有移动过并且小于1秒就弹起来就点击
+                            performClick();
+                        }
+                        isMove = false;
+                        break;
+                }
+                return false;
+            }
+        });
+
+        // 设置悬浮窗的长得宽
+        params.width = WindowManager.LayoutParams.WRAP_CONTENT;
+        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
+        params.gravity = Gravity.START | Gravity.TOP;
+        params.x = G.WIDTH;
+        params.y = 100;
+
+        try {
+            wm.addView(floatView, params);
+            isAdded = true;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void performClick() {
+        //获取当前正在运行的程序的包名
+        String packageName = DataUtil.getInstance().getPackageNameInForeground();
+        if(DataUtil.getInstance().getTaskAcceptedEtyFromPackageName(packageName) == null){
+            //TODO 如果一个任务需要截取其它程序的截图,这里就不行了:如收到的短信
+            G.showToast("请切换到对应的应用后进行截图!");
+            return;
+        }
+        packageNameInForeground = packageName;
+        // 设置点击悬浮窗的响应
+        startScreenShot();
+    }
+    private String packageNameInForeground;
+
+    private void startScreenShot() {
+
+        floatView.setVisibility(View.GONE);
+
+        Handler handler1 = new Handler();
+        handler1.postDelayed(new Runnable() {
+            public void run() {
+                //start virtual
+                startVirtual();
+            }
+        }, 5);
+
+        handler1.postDelayed(new Runnable() {
+            public void run() {
+                //capture the screen
+                startCapture();
+
+            }
+        }, 30);
+
+    }
+
+    private void createImageReader() {
+
+        mImageReader = ImageReader.newInstance(G.WIDTH, G.HEIGHT, PixelFormat.RGBA_8888, 1);
+
+    }
+
+    public void startVirtual() {
+        if (mMediaProjection != null) {
+            virtualDisplay();
+        } else if (mResultData == null && (mResultData = (Intent) DataUtil.getInstance().getData(REQUEST_CAPTURE_PERMISSION)) == null) {
+            G.showToast("请重新点击开始试玩");
+        } else {
+            setUpMediaProjection();
+            virtualDisplay();
+        }
+    }
+
+    public void setUpMediaProjection() {
+        mMediaProjection = getMediaProjectionManager().getMediaProjection(Activity.RESULT_OK, mResultData);
+    }
+
+    private MediaProjectionManager getMediaProjectionManager() {
+
+        return (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
+    }
+
+    private void virtualDisplay() {
+        mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror",
+                G.WIDTH, G.HEIGHT, G.DENSITY_DPI, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
+                mImageReader.getSurface(), null, null);
+    }
+
+    private void startCapture() {
+        Image image = mImageReader.acquireLatestImage();
+        if (image == null) {
+            startScreenShot();
+        } else {
+            Observable.just(image)
+                    .map(new Func1<Image, Bitmap>() {
+                        @Override
+                        public Bitmap call(Image image) {
+                            return getBitmapFromImage(image);
+                        }
+                    })
+                    .subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .subscribe(new Action1<Bitmap>() {
+                        @Override
+                        public void call(Bitmap bitmap) {
+                            //预览图片
+                            if (bitmap != null) {
+                                DataUtil.getInstance().putData(Bitmap.class.getSimpleName(), bitmap);
+                                new GlobalScreenShot(getApplicationContext()).takeScreenshot(bitmap, new GlobalScreenShot.onScreenShotListener() {
+                                    @Override
+                                    public void onStartShot() {
+
+                                    }
+
+                                    @Override
+                                    public void onFinishShot(boolean success) {
+                                        G.showToast("截图成功");
+                                    }
+                                }, true, true);
+                            }
+                            floatView.setVisibility(View.VISIBLE);
+                        }
+                    });
+        }
+    }
+
+    private Bitmap getBitmapFromImage(Image image) {
+        int width = image.getWidth();
+        int height = image.getHeight();
+        final Image.Plane[] planes = image.getPlanes();
+        final ByteBuffer buffer = planes[0].getBuffer();
+        //每个像素的间距
+        int pixelStride = planes[0].getPixelStride();
+        //总的间距
+        int rowStride = planes[0].getRowStride();
+        int rowPadding = rowStride - pixelStride * width;
+        Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
+        bitmap.copyPixelsFromBuffer(buffer);
+        bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
+        image.close();
+        File fileImage = null;
+        if (bitmap != null) {
+            try {
+                fileImage = DataUtil.getInstance().getScreenShotsFile(packageNameInForeground);
+                if (!fileImage.exists()) {
+                    fileImage.createNewFile();
+                }
+                FileOutputStream out = new FileOutputStream(fileImage);
+                bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
+                out.flush();
+                out.close();
+                Intent media = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
+                Uri contentUri = Uri.fromFile(fileImage);
+                media.setData(contentUri);
+                sendBroadcast(media);
+            } catch (FileNotFoundException e) {
+                e.printStackTrace();
+                fileImage = null;
+            } catch (IOException e) {
+                e.printStackTrace();
+                fileImage = null;
+            }
+        }
+
+        if (fileImage != null) {
+            return bitmap;
+        }
+        return null;
+    }
+
+    private MediaProjection mMediaProjection;
+    private VirtualDisplay mVirtualDisplay;
+
+    private Intent mResultData = null;
+
+
+    private ImageReader mImageReader;
+
+    private void tearDownMediaProjection() {
+        if (mMediaProjection != null) {
+            mMediaProjection.stop();
+            mMediaProjection = null;
+        }
+    }
+
+    private void stopVirtual() {
+        if (mVirtualDisplay == null) {
+            return;
+        }
+        mVirtualDisplay.release();
+        mVirtualDisplay = null;
+    }
+}

+ 1 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/G.java

@@ -22,6 +22,7 @@ public class G {
     public static int HEIGHT = 1280;//屏幕高
     public static int WIDTH = 720;//屏幕宽
     public static float DENSITY = 2;//屏幕的Density
+    public static int DENSITY_DPI = 2;//屏幕的Density
 
     /**
      * @param str

+ 7 - 0
app/src/main/res/drawable/button_full_normal_purple_click.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="30dp" />
+
+    <solid android:color="@color/button_color_purple" />
+</shape>

BIN
app/src/main/res/drawable/screenshot_panel.9.png


+ 9 - 0
app/src/main/res/drawable/selector_button_full_purple.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+  <item android:state_enabled="false" android:drawable="@drawable/button_full_normal_gray" />
+  <item android:state_focused="true" android:drawable="@drawable/button_full_normal_purple_click" />
+  <item android:state_checked="true" android:drawable="@drawable/button_full_normal_purple_click"/>
+  <item android:state_selected="true" android:drawable="@drawable/button_full_normal_purple_click"/>
+  <item android:state_pressed="true" android:drawable="@drawable/button_full_normal_purple_click"/>
+  <item android:drawable="@drawable/button_full_normal_purple_click"/>
+</selector>

+ 1 - 1
app/src/main/res/drawable/shape_page.xml

@@ -2,6 +2,6 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="5dp" />
-    <stroke android:color="#BFBFBF"
+    <stroke android:color="#ffffff"
         android:width="1dp"/>
 </shape>

+ 33 - 0
app/src/main/res/drawable/x_shap_shadow_bg_rectgangle_purple.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!--第一层-->
+    <item>
+        <shape>
+            <solid android:color="@color/button_color_purple_yy" />
+            <!--描边-->
+            <stroke
+                android:width="1px"
+                android:color="@color/button_color_purple_yy"
+                />
+
+            <corners android:radius="10dp" />
+        </shape>
+    </item>
+    <!--第二层-->
+    <item
+        android:left="1px"
+        android:top="1px"
+        android:bottom="1px"
+        android:right="1px">
+        <shape>
+            <solid android:color="@color/button_color_purple" />
+            <!--描边-->
+            <stroke
+                android:width="0.33dp"
+                android:color="@color/button_color_purple" />
+
+            <corners android:radius="10dp" />
+        </shape>
+    </item>
+
+</layer-list>

+ 29 - 0
app/src/main/res/drawable/x_shap_shadow_bg_rectgangle_purple_red.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!--第一层-->
+    <item>
+        <shape>
+            <gradient
+                android:startColor="@color/button_color_purple_start_yy"
+                android:endColor="@color/button_color_purple_end_yy"
+                android:angle="90"/>
+
+            <corners android:radius="10dp" />
+        </shape>
+    </item>
+    <!--第二层-->
+    <item
+        android:left="1px"
+        android:top="1px"
+        android:bottom="1px"
+        android:right="1px">
+        <shape>
+            <gradient
+                android:startColor="@color/button_color_purple_start"
+                android:endColor="@color/button_color_purple_end"
+                android:angle="90"/>
+            <corners android:radius="10dp" />
+        </shape>
+    </item>
+
+</layer-list>

+ 13 - 0
app/src/main/res/layout-um/act_preview_screen_shot.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="vertical"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
+
+  <ImageView
+      android:id="@+id/preview_image"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:scaleType="centerCrop"/>
+
+</LinearLayout>

+ 36 - 0
app/src/main/res/layout-um/global_screenshot.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <ImageView android:id="@+id/global_screenshot_background"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@android:color/black"
+        android:visibility="gone" />
+    <ImageView android:id="@+id/global_screenshot"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:background="@drawable/screenshot_panel"
+        android:visibility="gone"
+        android:adjustViewBounds="true" />
+    <ImageView android:id="@+id/global_screenshot_flash"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@android:color/white"
+        android:visibility="gone" />
+</FrameLayout>

+ 30 - 0
app/src/main/res/layout/ask_to_share.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom"
+        android:background="#ffffffff">
+
+        <TextView
+            android:id="@+id/ask_share_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="邀请好友"
+            android:textColor="#ff333333"
+            android:textSize="14sp"
+            android:padding="@dimen/content_padding_15"/>
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/ask_share_list"
+            android:layout_below="@+id/ask_share_title"
+            android:layout_marginTop="20dp"
+            android:layout_marginStart="@dimen/content_padding_15"
+            android:layout_marginBottom="35dp"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+    </RelativeLayout>
+
+</FrameLayout>

+ 23 - 0
app/src/main/res/layout/ask_to_share_item.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/ask_to_share_item_img"
+        android:layout_width="50dp"
+        android:layout_height="50dp"
+        android:src="@mipmap/x_ic_wx" />
+
+    <TextView
+        android:id="@+id/ask_to_share_item_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:text="面对面"
+        android:textColor="#ff333333"
+        android:textSize="12sp" />
+
+</LinearLayout>

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

@@ -21,8 +21,8 @@
                 android:orientation="vertical">
                 <ImageView
                     android:id="@+id/phone_iv"
-                    android:layout_width="@dimen/content_padding_140"
-                    android:layout_height="@dimen/content_padding_140"
+                    android:layout_width="145dp"
+                    android:layout_height="140dp"
                     android:layout_gravity="center_horizontal"
                     android:layout_marginLeft="100dp"
                     android:layout_marginRight="100dp"

+ 4 - 4
app/src/main/res/layout/empty_view.xml

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/download_mgr_empty_view"
+    android:id="@+id/empty_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/white">
 
     <ImageView
-        android:id="@+id/img_list_empty"
+        android:id="@+id/empty_view_img"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
@@ -18,11 +18,11 @@
         android:visibility="visible" />
 
     <TextView
-        android:id="@+id/txt_list_empty"
+        android:id="@+id/empty_view_msg"
         style="@style/style_empty_text"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_below="@id/img_list_empty"
+        android:layout_below="@id/empty_view_img"
         android:layout_centerHorizontal="true"
         android:layout_marginTop="@dimen/content_padding_big"
         android:text="@string/loading" />

+ 4 - 4
app/src/main/res/layout/empty_view_bottom.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/download_mgr_empty_view"
+    android:id="@+id/empty_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
     <View
@@ -9,7 +9,7 @@
         android:layout_marginBottom="@dimen/dp_10"
         android:background="@color/white"/>
     <ImageView
-        android:id="@+id/img_list_empty"
+        android:id="@+id/empty_view_img"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
@@ -21,11 +21,11 @@
         android:visibility="visible" />
 
     <TextView
-        android:id="@+id/txt_list_empty"
+        android:id="@+id/empty_view_msg"
         style="@style/style_empty_text"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_below="@id/img_list_empty"
+        android:layout_below="@id/empty_view_img"
         android:layout_centerHorizontal="true"
         android:layout_marginTop="@dimen/content_padding_big"
         android:text="@string/wushuju" />

+ 4 - 4
app/src/main/res/layout/fgt_sign_rankings.xml

@@ -6,14 +6,14 @@
     android:orientation="vertical">
 
     <RelativeLayout
-        android:id="@+id/download_mgr_empty_view"
+        android:id="@+id/empty_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/white"
         android:visibility="gone">
 
         <ImageView
-            android:id="@+id/img_list_empty"
+            android:id="@+id/empty_view_img"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerHorizontal="true"
@@ -25,11 +25,11 @@
             android:visibility="visible" />
 
         <TextView
-            android:id="@+id/txt_list_empty"
+            android:id="@+id/empty_view_msg"
             style="@style/style_empty_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_below="@id/img_list_empty"
+            android:layout_below="@id/empty_view_img"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="@dimen/content_padding_big"
             android:text="@string/wushuju" />

+ 11 - 9
app/src/main/res/layout/friend_list_empty.xml

@@ -3,36 +3,38 @@
     android:layout_width="match_parent"
     android:layout_height="130dp"
     android:layout_centerInParent="true"
+    android:paddingStart="@dimen/content_padding_10"
+    android:paddingEnd="@dimen/content_padding_10"
     android:orientation="vertical">
 
     <RelativeLayout
-        android:id="@+id/download_mgr_empty_view"
+        android:id="@+id/empty_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/white"
         android:visibility="gone">
 
         <ImageView
-            android:id="@+id/img_list_empty"
+            android:id="@+id/empty_view_img"
             android:layout_width="wrap_content"
             android:layout_height="80dp"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="@dimen/dp_10"
-            android:background="@color/white"
             android:gravity="center"
             android:scaleType="centerInside"
             android:src="@mipmap/wushuju"
             android:visibility="visible" />
 
         <TextView
-            android:id="@+id/txt_list_empty"
-            style="@style/style_empty_text"
+            android:id="@+id/empty_view_msg"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_below="@id/img_list_empty"
+            android:layout_below="@id/empty_view_img"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="@dimen/content_padding_5"
-            android:text="@string/wushuju" />
+            android:text="@string/wushuju"
+            android:textColor="#ffffff"
+            android:textSize="15sp" />
     </RelativeLayout>
-    <include layout="@layout/friend_list"/>
+
+    <include layout="@layout/friend_list" />
 </LinearLayout>

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

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:id="@+id/global_screenshot_background"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@android:color/black"
+        android:visibility="gone" />
+
+    <ImageView
+        android:id="@+id/global_screenshot"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:adjustViewBounds="true"
+        android:background="@drawable/screenshot_panel"
+        android:visibility="gone" />
+
+    <ImageView
+        android:id="@+id/global_screenshot_flash"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@android:color/white"
+        android:visibility="gone" />
+</FrameLayout>

+ 3 - 3
app/src/main/res/layout/list_has_empty.xml

@@ -13,7 +13,7 @@
         android:layout_marginBottom="@dimen/dp_10">
 
         <ImageView
-            android:id="@+id/img_list_empty"
+            android:id="@+id/empty_view_img"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerHorizontal="true"
@@ -25,11 +25,11 @@
             android:visibility="visible" />
 
         <TextView
-            android:id="@+id/txt_list_empty"
+            android:id="@+id/empty_view_msg"
             style="@style/style_empty_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_below="@id/img_list_empty"
+            android:layout_below="@id/empty_view_img"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="@dimen/content_padding_big"
             android:text="@string/wushuju" />

+ 4 - 4
app/src/main/res/layout/sign_record_layout.xml

@@ -100,7 +100,7 @@
         >
 
         <RelativeLayout
-            android:id="@+id/download_mgr_empty_view"
+            android:id="@+id/empty_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@color/white"
@@ -108,7 +108,7 @@
             >
 
             <ImageView
-                android:id="@+id/img_list_empty"
+                android:id="@+id/empty_view_img"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerHorizontal="true"
@@ -120,11 +120,11 @@
                 android:visibility="visible" />
 
             <TextView
-                android:id="@+id/txt_list_empty"
+                android:id="@+id/empty_view_msg"
                 style="@style/style_empty_text"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_below="@id/img_list_empty"
+                android:layout_below="@id/empty_view_img"
                 android:layout_centerHorizontal="true"
                 android:layout_marginTop="@dimen/content_padding_big"
                 android:text="@string/wushuju" />

+ 8 - 0
app/src/main/res/layout/x_ask_award_item.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:ellipsize="marquee"
+    android:text="发放情况:"
+    android:textColor="#ffffff"
+    android:textSize="12sp" />

+ 235 - 515
app/src/main/res/layout/x_ask_getmoney_act_layout.xml

@@ -1,574 +1,294 @@
 <?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:background="@color/white_light"
-    android:scrollbars="none"
-    >
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.sheep.gamegroup.view.activity.AskGetMoneyAct">
 
-    <LinearLayout
+
+    <include layout="@layout/title" />
+
+    <android.support.v4.widget.NestedScrollView
+        android:id="@+id/ask_scroll_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/bg_gray"
-        android:baselineAligned="false"
-        android:descendantFocusability="beforeDescendants"
-        android:focusable="true"
-        android:focusableInTouchMode="true"
-        android:orientation="vertical">
-
+        android:layout_marginBottom="@dimen/content_padding_10"
+        android:layout_marginTop="?attr/actionBarSize"
+        android:orientation="vertical"
+        android:scrollbars="none">
 
-        <include layout="@layout/title" />
-        <LinearLayout
+        <RelativeLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
-            android:layout_margin="@dimen/content_padding_10"
-            android:orientation="vertical"
-            >
+            android:layout_height="match_parent">
 
-            <LinearLayout
+            <WebView
+                android:id="@+id/ask_bg"
                 android:layout_width="match_parent"
-                android:layout_height="70dp"
-                android:orientation="horizontal"
-                >
-
-                <RelativeLayout
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    >
-
-                    <LinearLayout
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal"
-                        android:layout_alignParentBottom="true"
-                        android:layout_centerHorizontal="true"
-                        android:id="@+id/ll_share"
-                        >
-                        <TextView
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:text="1"
-                            android:textSize="10dp"
-                            android:background="@drawable/x_tv_round_bg"
-                            android:gravity="center"
-                            android:layout_gravity="center"
-                            />
-
-                        <TextView
-                            android:layout_marginLeft="3dp"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:text="@string/ask_friend"
-                            android:layout_gravity="center"
-                            />
-                        <ImageView
-                            android:layout_width="10dp"
-                            android:layout_height="10dp"
-                            android:background="@null"
-                            android:src="@mipmap/x_ic_next"
-                            android:layout_marginLeft="10dp"
-                            android:layout_gravity="center"
-                            />
-                    </LinearLayout>
-                    <ImageView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:background="@null"
-                        android:src="@mipmap/x_ic_share"
-                        android:layout_marginBottom="5dp"
-                        android:layout_centerHorizontal="true"
-                        android:layout_above="@id/ll_share"
-                        />
+                android:layout_height="match_parent" />
 
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:baselineAligned="false"
+                android:descendantFocusability="beforeDescendants"
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:orientation="vertical">
 
-                </RelativeLayout>
 
+                <View
+                    android:id="@+id/ask_top_1"
+                    android:layout_width="match_parent"
+                    android:layout_height="320dp" />
 
-                <RelativeLayout
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    >
+                <LinearLayout
+                    android:id="@+id/ask_top_2"
+                    android:layout_width="match_parent"
+                    android:layout_height="60dp"
+                    android:orientation="horizontal">
 
-                    <LinearLayout
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal"
-                        android:layout_alignParentBottom="true"
-                        android:layout_centerHorizontal="true"
-                        android:id="@+id/ll_task"
-                        >
+                    <RelativeLayout
+                        android:layout_width="0dp"
+                        android:layout_height="match_parent"
+                        android:layout_weight="1">
 
                         <TextView
+
+                            android:id="@+id/tv_size"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="2"
-                            android:textSize="10dp"
-                            android:background="@drawable/x_tv_round_bg"
-                            android:gravity="center"
-                            android:layout_gravity="center"
-                            />
-                        <TextView
-                            android:layout_marginLeft="3dp"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:text="@string/friend_to_task"
-                            android:layout_gravity="center"
-                            />
-                        <ImageView
-                            android:layout_width="10dp"
-                            android:layout_height="10dp"
-                            android:background="@null"
-                            android:src="@mipmap/x_ic_next"
-                            android:layout_marginLeft="10dp"
-                            android:layout_gravity="center"
-                            />
-                    </LinearLayout>
-                    <ImageView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:background="@null"
-                        android:layout_marginBottom="5dp"
-                        android:src="@mipmap/x_ic_task"
-                        android:layout_centerHorizontal="true"
-                        android:layout_above="@id/ll_task"
-                        />
-
+                            android:layout_centerHorizontal="true"
+                            android:text="@string/app_name"
+                            android:textColor="#ffffff"
+                            android:textSize="24sp"
+                            android:textStyle="bold" />
 
-                </RelativeLayout>
-
-
-                <RelativeLayout
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    >
-                    <LinearLayout
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal"
-                        android:layout_alignParentBottom="true"
-                        android:layout_centerHorizontal="true"
-                        android:id="@+id/ll_reward"
-                        >
                         <TextView
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="3"
-                            android:textSize="10dp"
-                            android:background="@drawable/x_tv_round_bg"
-                            android:gravity="center"
-                            android:layout_gravity="center"
-                            />
-
-                        <TextView
-                            android:layout_marginLeft="3dp"
+                            android:layout_below="@id/tv_size"
+                            android:layout_centerHorizontal="true"
+                            android:text="@string/friend"
+                            android:textColor="#ffffff"
+                            android:textSize="13sp" />
+
+                    </RelativeLayout>
+
+                    <RelativeLayout
+                        android:layout_width="0dp"
+                        android:layout_height="match_parent"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <LinearLayout
+                            android:id="@+id/tv_money_ll"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:text="@string/my_getreward"
-                            android:layout_gravity="center"
-                            />
+                            android:layout_centerHorizontal="true"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="¥"
+                                android:textColor="#FCFF00"
+                                android:textSize="12sp" />
+
+                            <TextView
+                                android:id="@+id/tv_money"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:textColor="#FCFF00"
+                                android:textSize="24sp"
+                                android:textStyle="bold" />
+                        </LinearLayout>
 
-                        <ImageView
+                        <TextView
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="10dp"
-                            android:layout_gravity="center"
-                            />
-                    </LinearLayout>
-                    <ImageView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:background="@null"
-                        android:layout_marginBottom="5dp"
-                        android:src="@mipmap/x_ic_reward"
-                        android:layout_centerHorizontal="true"
-                        android:layout_above="@id/ll_reward"
-                        />
-
+                            android:layout_below="@id/tv_money_ll"
+                            android:layout_centerHorizontal="true"
+                            android:text="@string/reward"
+                            android:textColor="#ffffff"
+                            android:textSize="13sp" />
 
-                </RelativeLayout>
+                    </RelativeLayout>
 
 
-            </LinearLayout>
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                style="@style/hint_txt_style"
-                android:layout_gravity="center_horizontal"
-                android:text="@string/ask_task_hint"
-                android:layout_marginBottom="15dp"
-                android:layout_marginTop="15dp"
-                />
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="100dp"
-            android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
-            android:layout_marginLeft="@dimen/content_padding_10"
-            android:layout_marginRight="@dimen/content_padding_10"
-            android:orientation="horizontal"
-            >
-            <RelativeLayout
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1"
-                >
-
-                <TextView
+                </LinearLayout>
 
-                    android:layout_width="wrap_content"
+                <!--本月排行榜top5-->
+                <android.support.constraint.ConstraintLayout
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:textSize="@dimen/text_size_25"
-                    android:textColor="@color/black_444444"
-                    android:id="@+id/tv_size"
-                    android:layout_centerInParent="true"
-                    android:textStyle="bold"
-                    />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:textSize="13sp"
-                    android:textColor="#5b5b5b"
-                    android:text="@string/friend"
-                    android:layout_below="@id/tv_size"
-                    android:layout_centerHorizontal="true"
-                    android:layout_marginTop="8dp"
-                    />
-
-            </RelativeLayout>
-
-            <RelativeLayout
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:orientation="vertical"
-                >
+                    android:layout_marginEnd="@dimen/content_padding_10"
+                    android:layout_marginStart="@dimen/content_padding_10"
+                    android:layout_marginTop="@dimen/content_padding_10"
+                    android:background="@drawable/x_shap_shadow_bg_rectgangle_purple_red"
+                    android:padding="@dimen/content_padding_10">
 
-                <LinearLayout
-                    android:id="@+id/tv_money_ll"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerInParent="true"
-                    android:orientation="horizontal">
                     <TextView
-                        android:id="@+id/tv_money"
+                        android:id="@+id/ask_top5_title"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textSize="24sp"
-                        android:textColor="@color/txt_red_ff4a5f"
-                        android:textStyle="bold"
-                        />
+                        android:text="本月排行榜top5"
+                        android:textColor="#ffffff"
+                        android:textSize="14sp"
+                        app:layout_constraintTop_toTopOf="parent" />
+
                     <TextView
+                        android:id="@+id/ask_top5_not_you"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:textSize="12sp"
-                        android:textColor="@color/txt_red_ff4a5f"
-                        android:textStyle="bold"
-                        android:text="元"
-                        />
-                </LinearLayout>
-
-                <TextView
-                    android:layout_centerHorizontal="true"
-                    android:layout_below="@id/tv_money_ll"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:textSize="13sp"
-                    android:textColor="#5b5b5b"
-                    android:text="@string/reward"
-                    android:layout_marginTop="8dp"
-
-                    />
-
-            </RelativeLayout>
-
-
-
-
-
-        </LinearLayout>
-
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
-            android:layout_marginTop="@dimen/content_padding_10"
-            android:layout_marginStart="@dimen/content_padding_10"
-            android:layout_marginEnd="@dimen/content_padding_10"
-            android:paddingTop="@dimen/content_padding_10"
-            android:paddingBottom="@dimen/content_padding_10"
-            android:orientation="vertical">
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="9dp"
-                android:layout_marginBottom="@dimen/content_padding_10"
-                android:textSize="@dimen/text_size_15"
-                android:textColor="#191919"
-                android:text="已邀请好友列表"/>
-            <include layout="@layout/x_ask_getmoney_act_layout_include"/>
-            <com.kfzs.duanduan.view.ViewPagerPlus
-                android:id="@+id/friend_extract_vp"
-                android:layout_width="match_parent"
-                android:layout_marginTop="@dimen/content_padding_10"
-                android:layout_height="130dp"/>
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/content_padding_10"
-                android:gravity="center"
-                android:orientation="horizontal">
-                <TextView
-                    android:id="@+id/friend_extract_count_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:textSize="11sp"
-                    android:textColor="#a3282828"
-                    android:text="共0条"/>
-
-                <TextView
-                    android:id="@+id/friend_extract_last_page_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="@dimen/content_padding_20"
-                    android:background="@drawable/shape_page"
-                    android:paddingStart="17dp"
-                    android:paddingEnd="17dp"
-                    android:paddingTop="2dp"
-                    android:paddingBottom="2dp"
-                    android:textSize="12sp"
-                    android:textColor="#282828"
-                    android:text="@string/last_page"/>
-                <TextView
-                    android:id="@+id/friend_extract_page_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="@dimen/content_padding_10"
-                    android:background="@drawable/shape_page"
-                    android:paddingStart="7dp"
-                    android:paddingEnd="7dp"
-                    android:paddingTop="2dp"
-                    android:paddingBottom="2dp"
-                    android:textSize="12sp"
-                    android:textColor="#282828"
-                    android:text="1"/>
-
-                <TextView
-                    android:id="@+id/friend_extract_next_page_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="@dimen/content_padding_10"
-                    android:background="@drawable/shape_page"
-                    android:paddingStart="17dp"
-                    android:paddingEnd="17dp"
-                    android:paddingTop="2dp"
-                    android:paddingBottom="2dp"
-                    android:textSize="12sp"
-                    android:textColor="#282828"
-                    android:text="@string/next_page"/>
-            </LinearLayout>
-        </LinearLayout>
-
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
-            android:layout_margin="@dimen/content_padding_10"
-            android:orientation="vertical"
-            android:padding="15dp"
-            >
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="好友邀请"
-                style="@style/txt_style_15"
-                android:layout_marginBottom="10dp"
-                />
-            <RelativeLayout
-                android:id="@+id/rl_wx"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:layout_marginBottom="10dp"
-                >
-                <ImageView
-                    android:id="@+id/iv_wx"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:background="@null"
-                    android:src="@mipmap/x_ic_wx"
-                    android:layout_alignParentStart="true"
-                    android:layout_marginEnd="@dimen/content_padding_10"
-                    />
-
-                <TextView
-                    android:id="@+id/tv_wx"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/wx_friend"
-                    android:layout_toRightOf="@id/iv_wx"
-                    style="@style/txt_style_15"
-                    />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/wx_friend_content"
-                    android:layout_toRightOf="@id/iv_wx"
-                    android:layout_below="@id/tv_wx"
-                    android:layout_marginTop="3dp"
-                    style="@style/hint_txt_style"
-                    />
-
-            </RelativeLayout>
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:background="@color/white_bg_line"
-                />
+                        android:gravity="center"
+                        android:text="你还未上榜,再接再厉"
+                        android:textColor="#ffffff"
+                        android:textSize="10sp"
+                        app:layout_constraintBottom_toBottomOf="@+id/ask_top5_title"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintTop_toTopOf="parent" />
+
+                    <android.support.v7.widget.RecyclerView
+                        android:id="@+id/ask_top5_list"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="10dp"
+                        app:layout_constraintTop_toBottomOf="@+id/ask_top5_title" />
 
+                </android.support.constraint.ConstraintLayout>
 
-            <RelativeLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:layout_marginBottom="10dp"
-                android:id="@+id/rl_qq"
-                >
-                <ImageView
-                    android:id="@+id/iv_qq"
-                    android:layout_width="wrap_content"
+                <!--发放情况-->
+                <LinearLayout
+                    android:id="@+id/homepage_item_notice_layout"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:background="@null"
-                    android:src="@mipmap/x_ic_qq"
-                    android:layout_alignParentStart="true"
                     android:layout_marginEnd="@dimen/content_padding_10"
+                    android:layout_marginStart="@dimen/content_padding_10"
+                    android:layout_marginTop="@dimen/content_padding_10"
+                    android:background="@drawable/x_shap_shadow_bg_rectgangle_purple"
+                    android:orientation="horizontal"
+                    android:padding="@dimen/content_padding_10">
 
-                    />
-
-                <TextView
-                    android:id="@+id/tv_qq"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/qq_friend"
-                    android:layout_toEndOf="@id/iv_qq"
-                    style="@style/txt_style_15"
-                    />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/qq_friend_content"
-                    android:layout_toEndOf="@id/iv_qq"
-                    android:layout_below="@id/tv_qq"
-                    android:layout_marginTop="3dp"
-                    style="@style/hint_txt_style"
-                    />
-
-            </RelativeLayout>
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:background="@color/white_bg_line"
-                />
-
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="发放情况:"
+                        android:textColor="#ffffff"
+                        android:textSize="12sp" />
 
-            <RelativeLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:layout_marginBottom="10dp"
-                android:id="@+id/rl_qr"
-                >
-                <ImageView
-                    android:id="@+id/iv_qr"
-                    android:layout_width="wrap_content"
+                    <com.sunfusheng.marqueeview.MarqueeView
+                        android:id="@+id/ask_award_info"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textColor="#ffffff"
+                        android:textSize="12sp"
+                        app:mvAnimDuration="1000"
+                        app:mvDirection="right_to_left"
+                        app:mvInterval="3000"
+                        app:mvSingleLine="true" />
+                </LinearLayout>
+                <!--已邀请好友列表-->
+                <LinearLayout
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:background="@null"
-                    android:src="@mipmap/x_ic_qr"
-                    android:layout_alignParentStart="true"
                     android:layout_marginEnd="@dimen/content_padding_10"
+                    android:layout_marginStart="@dimen/content_padding_10"
+                    android:layout_marginTop="@dimen/content_padding_10"
+                    android:background="@drawable/x_shap_shadow_bg_rectgangle_purple_red"
+                    android:orientation="vertical"
+                    android:paddingBottom="@dimen/content_padding_10"
+                    android:paddingTop="@dimen/content_padding_10">
 
-                    />
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/content_padding_10"
+                        android:layout_marginStart="@dimen/content_padding_10"
+                        android:text="已邀请好友列表"
+                        android:textColor="#ffffff"
+                        android:textSize="@dimen/text_size_15" />
 
-                <TextView
-                    android:id="@+id/tv_qr"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/share_qr_code"
-                    android:layout_toEndOf="@id/iv_qr"
-                    style="@style/txt_style_15"
-                    />
+                    <include layout="@layout/x_ask_getmoney_act_layout_include" />
 
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/share_qr_code_content"
-                    android:layout_toEndOf="@id/iv_qr"
-                    android:layout_below="@id/tv_qr"
-                    android:layout_marginTop="3dp"
-                    style="@style/hint_txt_style"
-                    />
-
-            </RelativeLayout>
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:background="@color/white_bg_line"
-                />
+                    <com.kfzs.duanduan.view.ViewPagerPlus
+                        android:id="@+id/friend_extract_vp"
+                        android:layout_width="match_parent"
+                        android:layout_height="130dp"
+                        android:layout_marginTop="@dimen/content_padding_10" />
 
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/content_padding_10"
+                        android:gravity="center"
+                        android:orientation="horizontal">
 
+                        <TextView
+                            android:id="@+id/friend_extract_count_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="共0条"
+                            android:textColor="#ffffff"
+                            android:textSize="11sp" />
 
-            <RelativeLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:layout_marginBottom="10dp"
-                android:id="@+id/rl_link"
-                >
-                <ImageView
-                    android:id="@+id/iv_link"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:background="@null"
-                    android:src="@mipmap/x_ic_link"
-                    android:layout_alignParentStart="true"
-                    android:layout_marginEnd="@dimen/content_padding_10"
+                        <TextView
+                            android:id="@+id/friend_extract_last_page_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="@dimen/content_padding_20"
+                            android:background="@drawable/shape_page"
+                            android:paddingBottom="2dp"
+                            android:paddingEnd="17dp"
+                            android:paddingStart="17dp"
+                            android:paddingTop="2dp"
+                            android:text="@string/last_page"
+                            android:textColor="#ffffff"
+                            android:textSize="12sp" />
 
-                    />
+                        <TextView
+                            android:id="@+id/friend_extract_page_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="@dimen/content_padding_10"
+                            android:background="@drawable/shape_page"
+                            android:paddingBottom="2dp"
+                            android:paddingEnd="7dp"
+                            android:paddingStart="7dp"
+                            android:paddingTop="2dp"
+                            android:text="1"
+                            android:textColor="#ffffff"
+                            android:textSize="12sp" />
 
-                <TextView
-                    android:id="@+id/tv_link"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/share_link"
-                    android:layout_toEndOf="@id/iv_link"
-                    style="@style/txt_style_15"
-                    />
-
-                <TextView
-                    android:id="@+id/tv_link_content"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/share_link_content"
-                    android:layout_toEndOf="@id/iv_link"
-                    android:layout_below="@id/tv_link"
-                    android:layout_marginTop="3dp"
-                    style="@style/hint_txt_style"
-                    />
+                        <TextView
+                            android:id="@+id/friend_extract_next_page_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="@dimen/content_padding_10"
+                            android:background="@drawable/shape_page"
+                            android:paddingBottom="2dp"
+                            android:paddingEnd="17dp"
+                            android:paddingStart="17dp"
+                            android:paddingTop="2dp"
+                            android:text="@string/next_page"
+                            android:textColor="#ffffff"
+                            android:textSize="12sp" />
+                    </LinearLayout>
+                </LinearLayout>
 
-            </RelativeLayout>
+            </LinearLayout>
+        </RelativeLayout>
+    </android.support.v4.widget.NestedScrollView>
 
-        </LinearLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="#ffffff">
+
+        <TextView
+            style="@style/style_button_purple"
+            android:onClick="showShareView"
+            android:text="立即邀请" />
     </LinearLayout>
-
-</ScrollView>
+</RelativeLayout>

+ 16 - 13
app/src/main/res/layout/x_ask_getmoney_act_layout_include.xml

@@ -3,42 +3,45 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:gravity="center_vertical"
+    android:paddingStart="@dimen/content_padding_10"
+    android:paddingEnd="@dimen/content_padding_10"
     android:orientation="horizontal">
     <TextView
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:gravity="center"
+        android:layout_marginStart="22dp"
+        android:layout_weight="3"
+        android:gravity="start"
         android:singleLine="true"
         android:textSize="12sp"
-        android:textColor="#282828"
+        android:textColor="#ffffff"
         android:text="绵羊ID"/>
     <TextView
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_weight="2"
-        android:gravity="center"
+        android:layout_weight="4"
+        android:gravity="start"
         android:singleLine="true"
         android:textSize="12sp"
-        android:textColor="#282828"
+        android:textColor="#ffffff"
         android:text="好友昵称"/>
     <TextView
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:gravity="center"
+        android:layout_weight="2"
+        android:gravity="start"
         android:singleLine="true"
         android:textSize="12sp"
-        android:textColor="#282828"
-        android:text="获得提成"/>
+        android:textColor="#ffffff"
+        android:text="提成"/>
     <TextView
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_weight="2"
+        android:layout_weight="5"
         android:singleLine="true"
-        android:gravity="center"
+        android:gravity="start"
         android:textSize="12sp"
-        android:textColor="#282828"
+        android:textColor="#ffffff"
         android:text="注册时间"/>
 
 </LinearLayout>

+ 13 - 12
app/src/main/res/layout/x_ask_getmoney_act_layout_item.xml

@@ -7,38 +7,39 @@
     <TextView
         android:layout_width="0dp"
         android:layout_height="26dp"
-        android:layout_weight="1"
-        android:gravity="center"
+        android:layout_marginStart="22dp"
+        android:layout_weight="3"
+        android:gravity="start"
         android:singleLine="true"
         android:textSize="10sp"
-        android:textColor="#a3282828"
+        android:textColor="#ffffff"
         android:text="绵羊ID"/>
     <TextView
         android:layout_width="0dp"
         android:layout_height="26dp"
-        android:layout_weight="2"
-        android:gravity="center"
+        android:layout_weight="4"
+        android:gravity="start"
         android:singleLine="true"
         android:textSize="10sp"
-        android:textColor="#a3282828"
+        android:textColor="#ffffff"
         android:text="好友昵称"/>
     <TextView
         android:layout_width="0dp"
         android:layout_height="26dp"
-        android:layout_weight="1"
-        android:gravity="center"
+        android:layout_weight="2"
+        android:gravity="start"
         android:singleLine="true"
         android:textSize="10sp"
-        android:textColor="#a3282828"
+        android:textColor="#ffffff"
         android:text="获得奖励金"/>
     <TextView
         android:layout_width="0dp"
         android:layout_height="26dp"
-        android:layout_weight="2"
+        android:layout_weight="5"
         android:singleLine="true"
-        android:gravity="center"
+        android:gravity="start"
         android:textSize="10sp"
-        android:textColor="#a3282828"
+        android:textColor="#ffffff"
         android:text="注册时间"/>
 
 </LinearLayout>

+ 66 - 0
app/src/main/res/layout/x_ask_top5_item.xml

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="#E6E6E6" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:paddingBottom="@dimen/content_padding_10"
+        android:paddingTop="@dimen/content_padding_10">
+
+        <RelativeLayout
+            android:layout_width="22dp"
+            android:layout_height="wrap_content">
+
+            <ImageView
+                android:id="@+id/ask_top5_item_iv"
+                android:layout_width="13dp"
+                android:layout_height="14dp"
+                android:layout_marginTop="3dp"/>
+        </RelativeLayout>
+
+        <TextView
+            android:id="@+id/x_ask_top5_item_user"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_weight="3"
+            android:gravity="start"
+            android:text="用户"
+            android:textColor="#ffffff"
+            android:textSize="12sp" />
+
+        <TextView
+            android:id="@+id/x_ask_top5_item_money"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_weight="2"
+            android:gravity="start"
+            android:singleLine="true"
+            android:text="已赚"
+            android:textColor="#ffffff"
+            android:textSize="12sp" />
+
+        <TextView
+            android:id="@+id/x_ask_top5_item_award"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:layout_weight="2"
+            android:gravity="start"
+            android:singleLine="true"
+            android:text="排行奖励"
+            android:textColor="#ffffff"
+            android:textSize="12sp" />
+
+    </LinearLayout>
+</LinearLayout>

+ 40 - 0
app/src/main/res/layout/x_ask_top5_title.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical"
+    android:paddingTop="@dimen/content_padding_10"
+    android:paddingBottom="@dimen/content_padding_10"
+    android:orientation="horizontal">
+    <View
+        android:layout_width="22dp"
+        android:layout_height="1dp"/>
+    <TextView
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="3"
+        android:gravity="start"
+        android:singleLine="true"
+        android:textSize="12sp"
+        android:textColor="#ffffff"
+        android:text="用户"/>
+    <TextView
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="2"
+        android:gravity="start"
+        android:singleLine="true"
+        android:textSize="12sp"
+        android:textColor="#ffffff"
+        android:text="已赚"/>
+    <TextView
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="2"
+        android:singleLine="true"
+        android:gravity="start"
+        android:textSize="12sp"
+        android:textColor="#ffffff"
+        android:text="排行奖励"/>
+
+</LinearLayout>

+ 4 - 0
app/src/main/res/layout/x_real_name_auther_layout.xml

@@ -84,12 +84,14 @@
             android:layout_height="1px"
             android:layout_marginLeft="15dp"
             android:layout_marginRight="15dp"
+            android:visibility="gone"
             android:background="@color/white_bg_line" />
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:padding="15dp"
+            android:visibility="gone"
             android:gravity="center_vertical"
             android:orientation="horizontal">
 
@@ -121,12 +123,14 @@
             android:layout_height="1px"
             android:layout_marginLeft="15dp"
             android:layout_marginRight="15dp"
+            android:visibility="gone"
             android:background="@color/white_bg_line" />
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:padding="15dp"
+            android:visibility="gone"
             android:gravity="center_vertical"
             android:orientation="horizontal">
 

BIN
app/src/main/res/mipmap-xxhdpi/ask_top_1.png


BIN
app/src/main/res/mipmap-xxhdpi/ask_top_2.png


BIN
app/src/main/res/mipmap-xxhdpi/ask_top_3.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_crop.webp


+ 7 - 0
app/src/main/res/values/color_app_theme_colors.xml

@@ -23,4 +23,11 @@
     <!--divider-->
     <color name="theme_app_divider_color">#f5f5f5</color>
 
+    <color name="button_color_purple">#A528F1</color>
+    <color name="button_color_purple_yy">#10A528F1</color>
+
+    <color name="button_color_purple_start">#6C61D2</color>
+    <color name="button_color_purple_end">#BE0FFF</color>
+    <color name="button_color_purple_start_yy">#106C61D2</color>
+    <color name="button_color_purple_end_yy">#10BE0FFF</color>
 </resources>

+ 9 - 0
app/src/main/res/values/dd_styles.xml

@@ -14,6 +14,15 @@
         <item name="android:textSize">@dimen/text_size_15</item>
     </style>
 
+    <style name="style_button_purple" >
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">40dp</item>
+        <item name="android:gravity">center</item>
+        <item name="android:background">@drawable/selector_button_full_purple</item>
+        <item name="android:textColor">#ffffff</item>
+        <item name="android:layout_margin">@dimen/dp_10</item>
+        <item name="android:textSize">@dimen/text_size_15</item>
+    </style>
     <style name="style_button" parent="button">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">40dp</item>

+ 1 - 1
app/src/main/res/values/gamegroup_string.xml

@@ -9,7 +9,7 @@
     <string name="share_qr_code_content">扫描或识别二维码均可</string>
     <string name="share_link_content">万能分享,哪都能用</string>
 
-    <string name="reward">已获得提成奖励</string>
+    <string name="reward">已获得提成</string>
     <string name="friend">已邀请好友数</string>
 
     <string name="friend_to_task">好友做任务</string>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -29,7 +29,7 @@
     <string name="feedback_notice_input_email_address">请输入您的邮箱地址</string>
     <string name="contact_qq_email">联系QQ/邮箱</string>
     <string name="input_notice_feedback">请留下您的联系方式,我们会不定期地给予优质建议提供丰厚奖励哦!</string>
-    <string name="sign_card_text">·每日之间支付元,即可有机会参与次日打卡活动;\n·次日早晨时间段参与打卡后,可平分前日奖金池内全部现金,
+    <string name="sign_card_text">·支付绵羊币次日即可参与打卡活动;\n·次日早晨时间段参与打卡后,可平分前日奖金池内全部现金,
     打卡失败则不可参与当日奖金分配;\n·若当日无人参与打卡平分现金活动,则今日奖池金额累加到明日奖池中\n·每日平分金额于早9点后开始结算,系统将于12小时内发放到个人账户,因网络原因,部分用户
     可能出现不及时到账的情况,可与我们客服联系,感谢您的谅解。\n·本活动最终解释权归橙风有量科技有限公司所有.</string>
 

+ 3 - 9
build.gradle

@@ -1,6 +1,9 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
+    ext {
+        supportLibVersion = "27.1.0"
+    }
     repositories {
         jcenter()
         google()
@@ -47,15 +50,6 @@ task clean(type: Delete) {
 
 
 ext{
-    //aria使用本地library时添加的
-    userOrg = 'arialyy'
-    groupId = 'com.arialyy.aria'
-    publishVersion = '3.4.1'
-//  publishVersion = '1.0.3'  //FTP插件
-    repoName='maven'
-    desc = 'android 下载框架'
-    website = 'https://github.com/AriaLyy/Aria'
-    licences = ['Apache-2.0']
 
     android = [
             compileSdkVersion:27,

+ 1 - 1
datashare/build.gradle

@@ -24,7 +24,7 @@ android {
 }
 
 dependencies {
-    compile 'com.android.support:support-v4:27.1.0'
+    compile "com.android.support:support-v4:$supportLibVersion"
     compile 'org.greenrobot:greendao:3.2.2'
 }
 

+ 2 - 2
view/build.gradle

@@ -28,8 +28,8 @@ android {
 }
 
 dependencies {
-    compile 'com.android.support:appcompat-v7:27.1.0'
-    compile 'com.android.support:support-v4:27.1.0'
+    compile "com.android.support:appcompat-v7:$supportLibVersion"
+    compile "com.android.support:support-v4:$supportLibVersion"
 //    compile 'com.github.bumptech.glide:glide:3.7.0'
 //    compile ('jp.wasabeef:glide-transformations:2.0.2'){
 //        exclude group: 'com.github.bumptech.glide', module: 'glide'