Просмотр исходного кода

签到功能除刮奖外完成

zengjiebin лет назад: 7
Родитель
Сommit
c6ded07541
38 измененных файлов с 1194 добавлено и 258 удалено
  1. 1 1
      app/src/main/AndroidManifest.xml
  2. 27 0
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  3. 21 0
      app/src/main/java/com/sheep/gamegroup/model/entity/BaseMessage.java
  4. 83 0
      app/src/main/java/com/sheep/gamegroup/model/entity/Lp.java
  5. 41 0
      app/src/main/java/com/sheep/gamegroup/model/entity/SheepSignResult.java
  6. 1 1
      app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java
  7. 94 0
      app/src/main/java/com/sheep/gamegroup/model/entity/UserSign.java
  8. 21 6
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  9. 32 7
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  10. 44 0
      app/src/main/java/com/sheep/gamegroup/util/viewHelper/LayoutParamsUtil.java
  11. 4 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActCommentGameApp.java
  12. 4 3
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGcGameAppDetail.java
  13. 1 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActInputAndPickerImg.java
  14. 7 7
      app/src/main/java/com/sheep/gamegroup/view/activity/ActInvitation.java
  15. 1 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSignCard.java
  16. 5 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActUserAppHome.java
  17. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java
  18. 5 6
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpGcGameAppGiftBag.java
  19. 4 10
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpNoviceGuidance.java
  20. 61 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/TitleFragmentListAdapter2.java
  21. 23 7
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtAskGetMoney.java
  22. 18 8
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGcGameAppWelfare.java
  23. 3 8
      app/src/main/java/com/sheep/jiuyan/samllsheep/ui/activity/ActiveRuleActivity.java
  24. 431 151
      app/src/main/java/com/sheep/jiuyan/samllsheep/ui/activity/SignActivity.java
  25. 5 2
      app/src/main/java/com/sheep/jiuyan/samllsheep/ui/view/EggView.java
  26. BIN
      app/src/main/res/drawable-xhdpi/close.webp
  27. BIN
      app/src/main/res/drawable-xhdpi/ic_sign_bg.webp
  28. BIN
      app/src/main/res/drawable-xxhdpi/close.webp
  29. BIN
      app/src/main/res/drawable-xxhdpi/ic_sign_bg.webp
  30. BIN
      app/src/main/res/drawable-xxxhdpi/ic_sign_bg.webp
  31. 10 0
      app/src/main/res/drawable/shape_bg_gradient_rectangle_069cfb_9ae7f4.xml
  32. 8 5
      app/src/main/res/layout/activity_active_rule.xml
  33. 52 17
      app/src/main/res/layout/activity_sign.xml
  34. 1 1
      app/src/main/res/layout/bind_change_weixin_layout.xml
  35. 169 0
      app/src/main/res/layout/dialog_sign_result_and_task.xml
  36. 12 12
      app/src/main/res/layout/item_novice_guidance.xml
  37. 1 1
      app/src/main/res/layout/sign_ok_dialog.xml
  38. 2 1
      app/src/main/res/values/strings.xml

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -436,11 +436,11 @@
             android:theme="@style/MyDialogActivityTheme" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActPlayVideo"
+            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
             android:screenOrientation="user"
             android:theme="@style/AppTheme.fullScreen" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActInputAndPickerImg"
-            android:screenOrientation="portrait"
             android:theme="@style/AppTheme.translucent" />
 
         <!-- 友盟start -->

+ 27 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -1316,6 +1316,33 @@ public interface ApiService {
     Observable<BaseMessage> getNoviceGuidance();
 
 //---------------------------end 个人中心-------------------------------------
+//---------------------------start 签到-------------------------------------
+
+    /**
+     * 签到状态获取
+     */
+    @GET("app/user_sign/signs")
+    Observable<BaseMessage> getUserSignSigns();
+    /**
+     * 每日签到
+     */
+    @POST("app/user_sign/sign_in")
+    Observable<BaseMessage> postUserSignSignIn();
+
+    /**
+     * 补签
+     * date * string (query)	 补签日期
+     * day * integer (query)	 补签周次
+     */
+    @POST("app/user_sign/sign_in_supplement")
+    Observable<BaseMessage> postUserSignSignInSupplement(@Query("date") String date, @Query("day") int day);
+
+    /**
+     * 刮奖
+     */
+    @POST("app/user_sign/scratch_card")
+    Observable<BaseMessage> postUserSignScratchCard();
+//---------------------------end 签到-------------------------------------
 //---------------------------start 搜索相关-------------------------------------
 
     /**

+ 21 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/BaseMessage.java

@@ -84,6 +84,27 @@ public class BaseMessage implements Serializable{
         }
         return null;
     }
+    /**
+     * 失败返回null
+     *
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public <T> T getData(Class<T> clazz, T defaultValue) {
+        if (data != null) {
+            T t = null;
+            try {
+                t = JSONObject.parseObject(JSONObject.toJSONString(data), clazz);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            if(t == null){
+                return defaultValue;
+            }
+        }
+        return defaultValue;
+    }
 
     /**
      * 如果data里是数组,直接这样获取

+ 83 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/Lp.java

@@ -0,0 +1,83 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/11/13.
+ * realicing@sina.com
+ * 配置layoutParams,配置LayoutParamsUtil使用
+ */
+public class Lp {
+    //不用设置标识
+    public static final int NONE = -101;
+    private int leftMargin = NONE;
+    private int rightMargin = NONE;
+    private int topMargin = NONE;
+    private int bottomMargin = NONE;
+    private int width = NONE;
+    private int height = NONE;
+    private float per = 1.0f;
+
+    public Lp() {
+    }
+
+    public Lp(float per) {
+        this.per = per;
+    }
+
+    public static int getNONE() {
+        return NONE;
+    }
+
+    public int getLeftMargin() {
+        return leftMargin;
+    }
+
+    public Lp setLeftMargin(int leftMargin) {
+        this.leftMargin = (int) (leftMargin * per);
+        return this;
+    }
+
+    public int getRightMargin() {
+        return rightMargin;
+    }
+
+    public Lp setRightMargin(int rightMargin) {
+        this.rightMargin = (int) (rightMargin * per);
+        return this;
+    }
+
+    public int getTopMargin() {
+        return topMargin;
+    }
+
+    public Lp setTopMargin(int topMargin) {
+        this.topMargin = (int) (topMargin * per);
+        return this;
+    }
+
+    public int getBottomMargin() {
+        return bottomMargin;
+    }
+
+    public Lp setBottomMargin(int bottomMargin) {
+        this.bottomMargin = (int) (bottomMargin * per);
+        return this;
+    }
+
+    public int getWidth() {
+        return width;
+    }
+
+    public Lp setWidth(int width) {
+        this.width = (int) (width * per);
+        return this;
+    }
+
+    public int getHeight() {
+        return height;
+    }
+
+    public Lp setHeight(int height) {
+        this.height = (int) (height * per);
+        return this;
+    }
+}

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

@@ -0,0 +1,41 @@
+package com.sheep.gamegroup.model.entity;
+
+
+import com.sheep.jiuyan.samllsheep.ui.activity.SignActivity;
+
+/**
+ * Created by realicing on 2018/11/13.
+ * realicing@sina.com
+ * {amount:0.6,hasSign:1}
+ * 签到结果返回
+ */
+public class SheepSignResult {
+    private float amount = SignActivity.DEFAULT_FLOAT;
+    private int hasSign;
+
+    public float getAmount() {
+        return amount;
+    }
+
+    public void setAmount(float amount) {
+        this.amount = amount;
+    }
+
+    public int getHasSign() {
+        return hasSign;
+    }
+
+    public void setHasSign(int hasSign) {
+        this.hasSign = hasSign;
+    }
+
+
+
+    public static final int YES = 1;
+    public static final int NO = 0;
+
+    //是否签到成功
+    public boolean isSign(){
+        return hasSign == YES;
+    }
+}

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

@@ -694,7 +694,7 @@ public class TaskEty implements Serializable, IDownload {
     public static final int TASK_TYPE_GAME_SHEEP = 1002;
     public static final int TASK_TYPE_GAME_TECENT = 1003;
     public static final int TASK_TYPE_GAME_XIAO_MI = 1004;
-    public static final int TASK_TYPE_APPLET = 1007;
+    public static final int TASK_TYPE_APPLET = 1007;//小程序任务
     public static final int TASK_TYPE_XIAN_JIN = 1008;//现金任务
     public static final int TASK_TYPE_GAME_OTHER = 1099;
     //open_mode 连续任务类型

+ 94 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserSign.java

@@ -0,0 +1,94 @@
+package com.sheep.gamegroup.model.entity;
+
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
+
+import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.sheep.gamegroup.util.TimeUtil;
+
+import java.util.Calendar;
+
+/**
+ * Created by realicing on 2018/11/13.
+ * realicing@sina.com
+ */
+public class UserSign implements Comparable<UserSign> {
+
+    /**
+     * 用户ID
+     * user_id : 63201
+     * 签到周期
+     * day : 1
+     * 签到日期
+     * sign_date : 2018-11-05
+     * 是否补签
+     * is_supplement : 0
+     */
+
+    private int user_id;
+    private int day;
+    private String sign_date;
+    private int is_supplement;
+
+    public int getUser_id() {
+        return user_id;
+    }
+
+    public void setUser_id(int user_id) {
+        this.user_id = user_id;
+    }
+
+    public int getDay() {
+        return day;
+    }
+
+    public void setDay(int day) {
+        this.day = day;
+    }
+
+    public String getSign_date() {
+        return sign_date;
+    }
+
+    public void setSign_date(String sign_date) {
+        this.sign_date = sign_date;
+    }
+
+    public int getIs_supplement() {
+        return is_supplement;
+    }
+
+    public void setIs_supplement(int is_supplement) {
+        this.is_supplement = is_supplement;
+    }
+
+
+    public boolean isToday() {
+        return TextUtils.equals(sign_date, getSignDateByTime(System.currentTimeMillis()));
+    }
+
+    @Override
+    public int compareTo(@NonNull UserSign userSign) {
+        return day - userSign.getDay();
+    }
+
+    //让当前的签到时间与otherUserSign的签到时间统一起来
+    public void resetSignDate(UserSign otherUserSign) {
+        String signDate = otherUserSign.getSign_date();
+        int year = NumberFormatUtils.parseInteger(signDate.substring(0, 4));
+        int month = NumberFormatUtils.parseInteger(signDate.substring(5, 7));
+        int day = NumberFormatUtils.parseInteger(signDate.substring(8));
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.YEAR, year);
+        calendar.set(Calendar.MONTH, month - 1);//这里要-1,很容易搞错
+        calendar.set(Calendar.DAY_OF_MONTH, day);
+        int compareTo = compareTo(otherUserSign);
+        calendar.add(Calendar.DAY_OF_MONTH, compareTo);
+        setSign_date(getSignDateByTime(calendar.getTimeInMillis()));
+    }
+
+    //通过时间获取对应的日期格式
+    public static String getSignDateByTime(long time) {
+        return TimeUtil.TimeStamp2Date(time, "yyyy-MM-dd");
+    }
+}

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

@@ -80,6 +80,7 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.umeng.socialize.ShareAction;
 import com.umeng.socialize.UMAuthListener;
 import com.umeng.socialize.UMShareAPI;
+import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
 import com.umeng.socialize.media.UMWeb;
@@ -917,7 +918,7 @@ public class CommonUtil {
     /**
      * 分享
      *
-     * @param activity
+     * @param activity 如果act
      * @param url
      * @param type        qq wx all
      * @param description
@@ -930,7 +931,7 @@ public class CommonUtil {
         SHARE_MEDIA share_media;
         switch (type) {
             case DialogShare.ALL:
-                ViewUtil.newInstance().showShare(activity, realUrl, description);
+                ViewUtil.showShareDialog(activity, realUrl, description);
                 return;
             case DialogShare.SYS_SEND:
                 SHARE_SYS_SEND.onEvent();
@@ -978,7 +979,7 @@ public class CommonUtil {
         new ShareAction(activity)
                 .setPlatform(share_media)
                 .withMedia(umWeb)
-                .setCallback(new UMShareListener())
+                .setCallback(activity instanceof UMShareListener ? (UMShareListener) activity : new CommonUMShareListener())
                 .share();
     }
 
@@ -1071,11 +1072,20 @@ public class CommonUtil {
 
     //尝试直接分享小绵羊
     public void tryShowShareDialog(final Activity activity) {
+        tryShowShareDialog(null, activity);
+    }
+
+    /**
+     * 尝试直接分享小绵羊
+     * @param action1 初始化view
+     * @param activity
+     */
+    public void tryShowShareDialog(final Action1<View> action1, final Activity activity) {
         callActionWithFriendCountAndAward(new Action1<FriendAndAwardEntity>() {
             @Override
             public void call(FriendAndAwardEntity result) {
                 if (result != null) {
-                    tryShowShareDialog(activity, result.getShare_desc());
+                    tryShowShareDialog(activity, result.getShare_desc(), action1);
                 } else {
                     G.showToast("分享功能调试中");
                 }
@@ -1085,6 +1095,11 @@ public class CommonUtil {
 
     //显示分享对话框
     public void tryShowShareDialog(final Activity activity, final String description) {
+        tryShowShareDialog(activity, description, null);
+    }
+
+    //显示分享对话框
+    public void tryShowShareDialog(final Activity activity, final String description, final Action1<View> action1) {
         CommonUtil.getInstance().callActionWithUserInfo(new Action1<UserEntity>() {
             @Override
             public void call(UserEntity userEntity) {
@@ -1093,12 +1108,12 @@ public class CommonUtil {
                     return;
                 }
                 String url = userEntity.getShareLink();
-                ViewUtil.showShareDialog(activity, url, description);
+                ViewUtil.showShareDialog(activity, url, description, action1);
             }
         });
     }
 
-    public static class UMShareListener implements com.umeng.socialize.UMShareListener {
+    public static class CommonUMShareListener implements com.umeng.socialize.UMShareListener {
 
         @Override
         public void onStart(SHARE_MEDIA share_media) {

+ 32 - 7
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -18,6 +18,7 @@ import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.Build;
 import android.provider.MediaStore;
+import android.support.annotation.LayoutRes;
 import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.GridLayoutManager;
@@ -264,10 +265,20 @@ public class ViewUtil {
      * @param mActivity 当前Activity,
      */
     public void showRobDutyDialog(final Activity mActivity, RobTask robTask) {
-        View view = LayoutInflater.from(mActivity).inflate(R.layout.dialog_game_or_task_or_gift, null, false);
+        showRobDutyDialog(mActivity, robTask, R.layout.dialog_game_or_task_or_gift, null);
+    }
+    /**
+     * 抢任务弹框
+     *
+     * @param mActivity 当前Activity,
+     */
+    public void showRobDutyDialog(final Activity mActivity, RobTask robTask, @LayoutRes int layoutId, Action1<View> action1) {
+        View view = LayoutInflater.from(mActivity).inflate(layoutId, null, false);
         final AlertDialog mAlertDialog = new AlertDialog.Builder(mActivity, R.style.MyDialogActivityTheme)
                 .setView(view)
                 .create();
+        if(action1 != null)
+            action1.call(view);
         View dialog_btn_left = view.findViewById(R.id.dialog_btn_left);
         View dialog_btn_right = view.findViewById(R.id.dialog_btn_right);
 
@@ -277,7 +288,7 @@ public class ViewUtil {
         final TextView dialog_amount_tv = view.findViewById(R.id.dialog_amount_tv);
         ViewUtil.setDefaultText(dialog_name_tv);
         ViewUtil.setDefaultText(dialog_amount_tv);
-        if (robTask != null && mRobTask.getM() != null) {
+        if (robTask != null && robTask.getM() != null) {
             mRobTask = robTask;
             DataUtil.putAsInt(DataKey.KEY_ORDER, robTask.getOrder());
             ViewUtil.setText(dialog_amount_tv, String.format(Locale.CHINA, "+%s元", mRobTask.getM().getBonus()));//设置任务奖励金额
@@ -292,7 +303,6 @@ public class ViewUtil {
             @Override
             public void onClick(View v) {
                 mRobTask = getTask(dialog_iv, dialog_name_tv, dialog_amount_tv);
-                LogUtil.logI("抢任务---" + new Gson().toJson(mRobTask));
 
             }
         });
@@ -1600,6 +1610,11 @@ public class ViewUtil {
         }
     }
 
+    public static void setEnabled(View view, boolean enabled) {
+        if (view != null) {
+            view.setEnabled(enabled);
+        }
+    }
     public static void setVisibility(View view, boolean isVisible) {
         if (view != null) {
             view.setVisibility(isVisible ? View.VISIBLE : View.GONE);
@@ -1707,12 +1722,17 @@ public class ViewUtil {
     }
 
     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);
+        showShareDialog(activity, url, description, null);
+    }
+
+    public static void showShareDialog(final Activity activity, final String url, final String description, Action1<View> action1) {
+        View dialogView = View.inflate(activity, R.layout.ask_to_share, null);
         final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.AppTheme_Dialog_Alert)
-                .setView(dialog_parent)
+                .setView(dialogView)
                 .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);
+//        TextView ask_share_title = dialogView.findViewById(R.id.ask_share_title);
+        RecyclerView ask_share_list = dialogView.findViewById(R.id.ask_share_list);
+        action1.call(dialogView);
 //        ask_share_list.setHasFixedSize(true);
 //        ask_share_list.setNestedScrollingEnabled(false);
         List<String> list = ListUtil.emptyList();
@@ -1758,6 +1778,11 @@ public class ViewUtil {
                 itemView.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
+                        try {
+                            dialog.dismiss();
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
                         CommonUtil.getInstance().popShare(activity, url, item, description);
                     }
                 });

+ 44 - 0
app/src/main/java/com/sheep/gamegroup/util/viewHelper/LayoutParamsUtil.java

@@ -0,0 +1,44 @@
+package com.sheep.gamegroup.util.viewHelper;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import com.sheep.gamegroup.model.entity.Lp;
+
+
+/**
+ * Created by realicing on 2018/11/13.
+ * realicing@sina.com
+ */
+public class LayoutParamsUtil {
+
+    //重新设置margin和宽高
+    public static void resetLayoutParams(View view, Lp lp) {
+        ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
+        if (lp.getHeight() != Lp.NONE)
+            layoutParams.height = lp.getHeight();
+        if (lp.getWidth() != Lp.NONE)
+            layoutParams.width = lp.getWidth();
+        if (layoutParams instanceof RelativeLayout.LayoutParams) {
+            if (lp.getTopMargin() != Lp.NONE)
+                ((RelativeLayout.LayoutParams) layoutParams).topMargin = lp.getTopMargin();
+            if (lp.getLeftMargin() != Lp.NONE)
+                ((RelativeLayout.LayoutParams) layoutParams).leftMargin = lp.getLeftMargin();
+            if (lp.getBottomMargin() != Lp.NONE)
+                ((RelativeLayout.LayoutParams) layoutParams).topMargin = lp.getBottomMargin();
+            if (lp.getRightMargin() != Lp.NONE)
+                ((RelativeLayout.LayoutParams) layoutParams).leftMargin = lp.getRightMargin();
+        } else if (layoutParams instanceof LinearLayout.LayoutParams) {
+            if (lp.getTopMargin() != Lp.NONE)
+                ((LinearLayout.LayoutParams) layoutParams).topMargin = lp.getTopMargin();
+            if (lp.getLeftMargin() != Lp.NONE)
+                ((LinearLayout.LayoutParams) layoutParams).leftMargin = lp.getLeftMargin();
+            if (lp.getBottomMargin() != Lp.NONE)
+                ((LinearLayout.LayoutParams) layoutParams).topMargin = lp.getBottomMargin();
+            if (lp.getRightMargin() != Lp.NONE)
+                ((LinearLayout.LayoutParams) layoutParams).leftMargin = lp.getRightMargin();
+        }
+    }
+}

+ 4 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActCommentGameApp.java

@@ -75,6 +75,10 @@ public class ActCommentGameApp extends BaseActivity {
             G.showToast("亲,您还没有填写你的观点呢");
             return;
         }
+        if(score < 1){
+            G.showToast("亲,请先打分");
+            return;
+        }
         ApiJSONUtil.postGameUserUserGameComment(ApiJSONUtil.COMMENT_TYPE_GAME, game_id, content, score)
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override

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

@@ -35,7 +35,7 @@ import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.RequestCodeConstants;
 import com.sheep.gamegroup.util.TagListUtil;
 import com.sheep.gamegroup.util.ViewUtil;
-import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter;
+import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter2;
 import com.sheep.gamegroup.view.fragment.FgtGcGameAppComment;
 import com.sheep.gamegroup.view.fragment.FgtGcGameAppDetail;
 import com.sheep.gamegroup.view.fragment.FgtGcGameAppWelfare;
@@ -93,7 +93,7 @@ public class ActGcGameAppDetail extends BaseActivity {
     @BindView(R.id.gc_game_app_detail_tag_list)
     RecyclerView recyclerView;
 
-    private TitleFragmentListAdapter mAdapter;
+    private TitleFragmentListAdapter2 mAdapter;
     private FgtGcGameAppDetail fgtGcPlayGameDetail;
     private FgtGcGameAppComment fgtGcGameAppComment;
 
@@ -105,7 +105,7 @@ public class ActGcGameAppDetail extends BaseActivity {
         //tagList
         TagListUtil.setTagList(recyclerView, tagList);
         //viewPager
-        mAdapter = new TitleFragmentListAdapter(getSupportFragmentManager());
+        mAdapter = new TitleFragmentListAdapter2(getSupportFragmentManager());
         fgtGcPlayGameDetail = FgtGcGameAppDetail.newInstance(id);
         fgtGcGameAppComment = FgtGcGameAppComment.newInstance(id);
         fgtGcPlayGameDetail.setSmartRefreshLayout(refresh);
@@ -195,6 +195,7 @@ public class ActGcGameAppDetail extends BaseActivity {
         fgtGcGameAppWelfare.setSmartRefreshLayout(refresh);
         fgtGcGameAppWelfare.loadData(gameEntity);
         mAdapter.add(fgtGcGameAppWelfare, "福利");
+        mAdapter.notifyDataSetChanged();
         viewPager.setOffscreenPageLimit(mAdapter.getCount());
     }
 

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

@@ -104,6 +104,7 @@ public class ActInputAndPickerImg extends AbsChooseImageActivity {
             G.showToast(R.string.nedd_picker_img);
             return;
         }
+        inputAndUrlList.setInput(input);
         inputAndUrlList.getList().remove(null);
         DataUtil.getInstance().putData(InputAndUrlList.class.getSimpleName(), inputAndUrlList);
         setResult(RESULT_OK);

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

@@ -242,7 +242,7 @@ public class ActInvitation extends BaseActivity {
             GlideImageLoader.downLoadImage(name, item.getPicture(), new Action1<File>() {
                 @Override
                 public void call(File file) {
-                    if(file == null){
+                    if (file == null) {
                         return;
                     }
                     BitmapFactory.Options options = FileUtil.getImageOptions(file);
@@ -294,7 +294,7 @@ public class ActInvitation extends BaseActivity {
 
     private void updateLayoutParams(int position, long time) {
         BitmapFactory.Options options = optionsList.get(position);
-        if(options == null){
+        if (options == null) {
             return;
         }
         View itemView = viewArrayList.get(position);
@@ -309,7 +309,7 @@ public class ActInvitation extends BaseActivity {
         viewPager.postDelayed(new Runnable() {
             @Override
             public void run() {
-                if(image_container == null || viewPager == null || image_bottom == null || image_logo == null || image_bottom_top == null || image_tip == null){
+                if (image_container == null || viewPager == null || image_bottom == null || image_logo == null || image_bottom_top == null || image_tip == null) {
                     return;
                 }
                 image_container.setVisibility(View.VISIBLE);
@@ -318,7 +318,7 @@ public class ActInvitation extends BaseActivity {
                 float imgWidth = vWidth;
                 float imgHeight = vHeight;
                 int imgHeightPadding = 0;
-                if(vHeight * 1.0F / vWidth > h * 1.0F / w){//图片上下有padding
+                if (vHeight * 1.0F / vWidth > h * 1.0F / w) {//图片上下有padding
                     imgHeight = imgWidth * h / w;
                     imgHeightPadding = (int) ((vHeight - imgHeight) / 2);
                 } else {//图片左右有padding
@@ -469,7 +469,7 @@ public class ActInvitation extends BaseActivity {
         SHARE_MEDIA share_media;
         switch (type) {
             case DialogShare.ALL:
-                ViewUtil.newInstance().showShare(activity, realUrl, description);
+                ViewUtil.showShareDialog(activity, realUrl, description);
                 return;
             case DialogShare.FACE_TO_FACE:
                 ViewUtil.showQR(activity, realUrl);
@@ -521,14 +521,14 @@ public class ActInvitation extends BaseActivity {
                 new ShareAction(activity)
                         .setPlatform(share_media)
                         .withMedia(umImage)
-                        .setCallback(new CommonUtil.UMShareListener())
+                        .setCallback(new CommonUtil.CommonUMShareListener())
                         .share();
                 break;
             default:
                 new ShareAction(activity)
                         .setPlatform(share_media)
                         .withMedia(umWeb)
-                        .setCallback(new CommonUtil.UMShareListener())
+                        .setCallback(new CommonUtil.CommonUMShareListener())
                         .share();
                 break;
         }

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

@@ -49,6 +49,7 @@ import rx.schedulers.Schedulers;
 /**
  * Created by realicing on 2018/9/11.
  * realicing@sina.com
+ * 打卡界面
  */
 public class ActSignCard extends BaseActivity {
     @BindView(R.id.sign_card_tip)

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

@@ -329,10 +329,11 @@ public class ActUserAppHome extends BaseActivity {
 
     //点击分享
     public void onClickShareImg(View view) {
-        //TODO 点击分享游戏
-        G.showToast(R.string.coming_soon);
+        //点击分享游戏
+//        G.showToast(R.string.coming_soon);
 //        FIND_SHARE.onEvent("application_id", id);
 //        Jump2View.getInstance().tryShare(this, "find_share_url", "application_id", id);
+        CommonUtil.getInstance().tryShowShareDialog(this);
     }
 
     //点击赞
@@ -349,6 +350,7 @@ public class ActUserAppHome extends BaseActivity {
                 userFocus.plusLike();
                 updateLikeTv();
                 view.setEnabled(true);
+                initDetailFromNet();//通过重新访问接口刷新数据
             }
 
             @Override
@@ -373,6 +375,7 @@ public class ActUserAppHome extends BaseActivity {
                 userFocus.toggleFocusUser();
                 updateFocusTv();
                 view.setEnabled(true);
+                initDetailFromNet();//通过重新访问接口刷新数据
             }
 
             @Override

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

@@ -366,11 +366,11 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 btnUpImag.setEnabled(false);
                 switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1004 小米游戏任务
                     case TASK_TYPE_H5://h5业务
+                    case TASK_TYPE_APPLET://小程序
                         btnTaskItem.setVisibility(View.GONE);
                         break;
                     case TASK_TYPE_CREDIT_CARD:
                     case TASK_TYPE_CHANG_SI://信用卡与畅思任务不考虑
-                    case TASK_TYPE_APPLET://小程序
                         bottom_btn_layout.setVisibility(View.GONE);
                         break;
                     case TASK_TYPE_SUCCESSION://连续任务
@@ -401,7 +401,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 switch (taskEty.getTask_type()) {// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思 1000连续任务, 1002 1003游戏任务 1004 小米游戏任务
                     case TASK_TYPE_CREDIT_CARD:
                     case TASK_TYPE_CHANG_SI://信用卡与畅思任务不考虑
-                    case TASK_TYPE_APPLET://小程序
                         bottom_btn_layout.setVisibility(View.GONE);
                         break;
                     case TASK_TYPE_SUCCESSION://连续任务
@@ -427,6 +426,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                     case TASK_TYPE_GAME_XIAO_MI://游戏任务
                         setFirstBtnState();
                         break;
+                    case TASK_TYPE_APPLET://小程序
                     case TASK_TYPE_H5://h5业务
                         btnTaskItem.setVisibility(View.GONE);
                         if (gettaskAcceptedEty.getStatus() != TaskAcceptedEty.STATUS_FINISHED) {//有任务未完成的情况下

+ 5 - 6
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpGcGameAppGiftBag.java

@@ -1,6 +1,5 @@
 package com.sheep.gamegroup.view.adapter;
 
-import android.app.Activity;
 import android.content.Context;
 import android.view.View;
 import android.widget.TextView;
@@ -10,9 +9,11 @@ import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.GiftBag;
 import com.sheep.gamegroup.model.entity.GiftBagApp;
+import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import java.util.List;
 
@@ -24,11 +25,9 @@ import rx.functions.Action1;
  */
 public class AdpGcGameAppGiftBag extends RecyclerViewAdapter<GiftBagApp> {
 
-    private Activity activity;
     private GameEntity gameEntity;
     public AdpGcGameAppGiftBag(Context context, List<GiftBagApp> datas, GameEntity gameEntity) {
         super(context, R.layout.item_gift_bag, datas);
-        activity = (Activity) context;
         this.gameEntity = gameEntity;
     }
 
@@ -51,13 +50,13 @@ public class AdpGcGameAppGiftBag extends RecyclerViewAdapter<GiftBagApp> {
         if (!item.isReceived()){
             btn_tv.setText("领取");
             btn_tv.setEnabled(true);
-            btn_tv.setTextColor(activity.getResources().getColor(R.color.txt_bule));
+            btn_tv.setTextColor(SheepApp.getInstance().getResources().getColor(R.color.txt_bule));
             btn_tv.setBackgroundResource(R.drawable.shape_blue_stroke_rectangle);
             btn_tv.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     if(CommonUtil.getInstance().isInstallApp(gameEntity.getApp().getPackage_name(), gameEntity.getApp().getName())){
-                        CommonUtil.getInstance().receiveGiftById(activity, item, new Action1<Integer>() {
+                        CommonUtil.getInstance().receiveGiftById(ActivityManager.getInstance().currentActivity(), item, new Action1<Integer>() {
                             @Override
                             public void call(Integer integer) {
                                 item.setReceived(true);
@@ -73,7 +72,7 @@ public class AdpGcGameAppGiftBag extends RecyclerViewAdapter<GiftBagApp> {
         }else {
             btn_tv.setText("已领取");
             btn_tv.setEnabled(false);
-            btn_tv.setTextColor(activity.getResources().getColor(R.color.time_created));
+            btn_tv.setTextColor(SheepApp.getInstance().getResources().getColor(R.color.time_created));
             btn_tv.setBackgroundResource(R.drawable.shape_gray_stroke_rectangle_10_radius);
         }
     }

+ 4 - 10
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpNoviceGuidance.java

@@ -31,29 +31,23 @@ public class AdpNoviceGuidance extends RecyclerViewAdapter<NoviceGuidance> {
         TextView item_novice_guidance_title = viewHolder.itemView.findViewById(R.id.item_novice_guidance_title);
 //        VideoView item_novice_guidance_video = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video);
         final ImageView item_novice_guidance_video_image = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video_image);
-//        final ImageView item_novice_guidance_video_control = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video_control);
+        final ImageView item_novice_guidance_video_control = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video_control);
         final ImageView item_novice_guidance_video_full = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video_full);
         TextView item_novice_guidance_content = viewHolder.itemView.findViewById(R.id.item_novice_guidance_content);
 
         ViewUtil.setVisibility(item_novice_guidance_title, !TextUtils.isEmpty(item.getTitle()));
         ViewUtil.setVisibility(item_novice_guidance_content, !TextUtils.isEmpty(item.getContent()));
 //        ViewUtil.setVisibility(item_novice_guidance_video, !TextUtils.isEmpty(item.getVideo_url()));
-//        ViewUtil.setVisibility(item_novice_guidance_video_control, !TextUtils.isEmpty(item.getVideo_url()));
+        ViewUtil.setVisibility(item_novice_guidance_video_control, !TextUtils.isEmpty(item.getVideo_url()));
         ViewUtil.setVisibility(item_novice_guidance_video_image, !TextUtils.isEmpty(item.getVideo_url()));
-        ViewUtil.setVisibility(item_novice_guidance_video_full, !TextUtils.isEmpty(item.getVideo_url()));
+        ViewUtil.setVisibility(item_novice_guidance_video_full, false);
 
         ViewUtil.setImage(item_novice_guidance_video_full, ViewUtil.getNetImgByName("fangda"));
         ViewUtil.setImage(item_novice_guidance_video_image, item.getVideo_url());
         ViewUtil.setText(item_novice_guidance_title, item.getTitle());
         ViewUtil.setText(item_novice_guidance_content, item);
 //        ViewUtil.setVideoAndFull(item_novice_guidance_video, item_novice_guidance_video_image, item_novice_guidance_video_control, item.getVideo_url());
-//        item_novice_guidance_video_control.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                Jump2View.getInstance().goActPlayVideo(item.getVideo_url());
-//            }
-//        });
-        item_novice_guidance_video_full.setOnClickListener(new View.OnClickListener() {
+        item_novice_guidance_video_control.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 Jump2View.getInstance().goActPlayVideo(item.getVideo_url());

+ 61 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/TitleFragmentListAdapter2.java

@@ -0,0 +1,61 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.os.Parcelable;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentStatePagerAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+/**
+ * Created by realicing on 2018/11/12.
+ * realicing@sina.com
+ */
+public class TitleFragmentListAdapter2 extends FragmentStatePagerAdapter {
+    private List<Object> mListFragment = new ArrayList<>();
+    private List<Object> mTitles = new ArrayList<>();
+
+    public TitleFragmentListAdapter2(FragmentManager fragmentManager) {
+        super(fragmentManager);
+    }
+
+    public void add(Fragment fragment, String title) {
+        mListFragment.add(fragment);
+        mTitles.add(title);
+    }
+
+    public void add(Fragment fragment, String title, int index) {
+        mListFragment.add(index, fragment);
+        mTitles.add(index, title);
+    }
+
+    public void clearData() {
+        mListFragment.clear();
+        mTitles.clear();
+    }
+
+    @Override
+    public Fragment getItem(int position) {
+        return (Fragment) mListFragment.get(position);
+    }
+
+    @Override
+    public int getCount() {
+        return mListFragment.size();
+    }
+
+    @Override
+    public int getItemPosition(Object object) {
+        return super.getItemPosition(object);
+    }
+
+    @Override
+    public CharSequence getPageTitle(int position) {
+        return (CharSequence) mTitles.get(position);
+    }
+
+    @Override
+    public Parcelable saveState() {
+        return null;
+    }
+}

+ 23 - 7
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtAskGetMoney.java

@@ -24,6 +24,7 @@ import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
 import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
@@ -83,9 +84,12 @@ public class FgtAskGetMoney extends BaseFragment {
         return R.layout.x_ask_getmoney_act_layout;
     }
 
+    //在viewPager的第一个位置或者在activity中通过transaction.replace(R.id.frame_container, fragment);方式加载的话,需要设置为true
+    private boolean isFirstFgt;
     @Override
     public void onViewCreated() {
         activity = getActivity();
+        isFirstFgt = activity instanceof AskGetMoneyAct;
 //
 //        String content = "<!DOCTYPEhtml>\n" +
 //                "<html>\n" +
@@ -127,21 +131,33 @@ public class FgtAskGetMoney extends BaseFragment {
         ViewUtil.setDefaultText(ask_act_code);
 
         initListener();
-
+        if(isFirstFgt){
+            showViewPager();
+            try {
+                initData(true);
+            } catch (Exception e) {
+                e.printStackTrace();
+                G.showToast(e.getMessage());
+            }
+        }
     }
 
     @Override
     protected void initViewOnVisibleToUser() {
-        showViewPager();
+        if(!isFirstFgt) {
+            showViewPager();
+        }
     }
 
     @Override
     public void initDataOnVisibleToUser() {
-        try {
-            initData(true);
-        } catch (Exception e) {
-            e.printStackTrace();
-            G.showToast(e.getMessage());
+        if(!isFirstFgt) {
+            try {
+                initData(true);
+            } catch (Exception e) {
+                e.printStackTrace();
+                G.showToast(e.getMessage());
+            }
         }
     }
 

+ 18 - 8
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGcGameAppWelfare.java

@@ -1,6 +1,5 @@
 package com.sheep.gamegroup.view.fragment;
 
-import android.app.Activity;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 
@@ -10,6 +9,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.GameInfoList;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.view.adapter.AdpGcGameAppActivityRecommend;
@@ -36,7 +36,6 @@ public class FgtGcGameAppWelfare extends BaseRefreshLoadMoreFragment {
 
     @BindView(R.id.recyclerView)
     RecyclerView recyclerView;
-    private Activity activity;
 
     public static FgtGcGameAppWelfare newInstance(int appId) {
         FgtGcGameAppWelfare fgt = new FgtGcGameAppWelfare();
@@ -54,7 +53,6 @@ public class FgtGcGameAppWelfare extends BaseRefreshLoadMoreFragment {
 
     @Override
     public void onViewCreated() {
-        activity = getActivity();
         recyclerView.setHasFixedSize(true);
         recyclerView.setNestedScrollingEnabled(false);
         recyclerView.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
@@ -63,17 +61,29 @@ public class FgtGcGameAppWelfare extends BaseRefreshLoadMoreFragment {
         adpGcGameAppInfoList.setEmptyView(R.layout.include_empty_view);
 
         refreshData();
+        if(gameEntity != null){
+            loadGameData();
+        }
+    }
+
+    //加载游戏数据
+    private void loadGameData() {
+        if (gameEntity.isGift()) {
+            gameInfoListArrayList.add(new GameInfoList("礼包推荐", new AdpGcGameAppGiftBag(SheepApp.getInstance(), gameEntity.getHas_gift_bag(), gameEntity)).setSort(SORT_GIFT));
+        }
+        recyclerView.getAdapter().notifyDataSetChanged();
     }
 
 
     private int appId;
 
 
+    private GameEntity gameEntity;
     public void loadData(final GameEntity gameEntity) {
-        if (gameEntity.isGift()) {
-            gameInfoListArrayList.add(new GameInfoList("礼包推荐", new AdpGcGameAppGiftBag(activity, gameEntity.getHas_gift_bag(), gameEntity)).setSort(SORT_GIFT));
+        this.gameEntity = gameEntity;
+        if(recyclerView != null) {
+            loadGameData();
         }
-        recyclerView.getAdapter().notifyDataSetChanged();
     }
 
     @Override
@@ -94,7 +104,7 @@ public class FgtGcGameAppWelfare extends BaseRefreshLoadMoreFragment {
                     public void onNext(BaseMessage baseMessage) {
                         List<Article> newList = baseMessage.getDatas(Article.class);
                         if (!ListUtil.isEmpty(newList)) {
-                            gameInfoListArrayList.add(new GameInfoList("文章推荐", new AdpGcGameAppArticleRecommend(activity, newList)).setSort(SORT_ARTICLE));
+                            gameInfoListArrayList.add(new GameInfoList("文章推荐", new AdpGcGameAppArticleRecommend(ActivityManager.getInstance().currentActivity(), newList)).setSort(SORT_ARTICLE));
                             recyclerView.getAdapter().notifyDataSetChanged();
                         }
                         refreshOrLoadMoreComplete();
@@ -115,7 +125,7 @@ public class FgtGcGameAppWelfare extends BaseRefreshLoadMoreFragment {
                     public void onNext(BaseMessage baseMessage) {
                         List<Article> newList = baseMessage.getDatas(Article.class);
                         if (!ListUtil.isEmpty(newList)) {
-                            gameInfoListArrayList.add(new GameInfoList("活动推荐", new AdpGcGameAppActivityRecommend(activity, newList)).setSort(SORT_ACTIVITY));
+                            gameInfoListArrayList.add(new GameInfoList("活动推荐", new AdpGcGameAppActivityRecommend(ActivityManager.getInstance().currentActivity(), newList)).setSort(SORT_ACTIVITY));
                             recyclerView.getAdapter().notifyDataSetChanged();
                         }
                         refreshOrLoadMoreComplete();

+ 3 - 8
app/src/main/java/com/sheep/jiuyan/samllsheep/ui/activity/ActiveRuleActivity.java

@@ -4,6 +4,7 @@ import android.widget.TextView;
 
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.ui.base.BaseActivity;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
 import butterknife.BindView;
 import butterknife.OnClick;
@@ -15,8 +16,6 @@ import butterknife.OnClick;
  */
 public class ActiveRuleActivity extends BaseActivity {
 
-    @BindView(R.id.title_text)
-    TextView titleText;
     @BindView(R.id.active_rule_text)
     TextView activeRuleText;
 
@@ -32,16 +31,12 @@ public class ActiveRuleActivity extends BaseActivity {
 
     @Override
     protected void onView() {
-        titleText.setText("活动规则");
+        TitleBarUtils.getInstance().setTitle(this, "活动规则")
+                .setTitleFinish(this);
     }
 
     @Override
     protected void onData() {
 
     }
-
-    @OnClick(R.id.back_but)
-    public void onViewClicked() {
-        finish();
-    }
 }

+ 431 - 151
app/src/main/java/com/sheep/jiuyan/samllsheep/ui/activity/SignActivity.java

@@ -1,36 +1,51 @@
 package com.sheep.jiuyan.samllsheep.ui.activity;
 
-import android.annotation.SuppressLint;
 import android.content.Intent;
-import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.BounceInterpolator;
+import android.view.animation.TranslateAnimation;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
-import com.sheep.gamegroup.view.activity.SignCardAct;
+import com.kfzs.duanduan.utils.NumberFormatUtils;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.Lp;
+import com.sheep.gamegroup.model.entity.PunchAndSign;
+import com.sheep.gamegroup.model.entity.RobTask;
+import com.sheep.gamegroup.model.entity.SheepSignResult;
+import com.sheep.gamegroup.model.entity.UserSign;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataKey;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.TestUtil;
+import com.sheep.gamegroup.util.TimeUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.viewHelper.LayoutParamsUtil;
 import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.bean.SignDay;
-import com.sheep.jiuyan.samllsheep.bean.SignsBean;
-import com.sheep.jiuyan.samllsheep.net.Network;
-import com.sheep.jiuyan.samllsheep.net.Scheduler;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.ui.base.BaseActivity;
 import com.sheep.jiuyan.samllsheep.ui.view.EggView;
-import com.trello.rxlifecycle2.android.ActivityEvent;
-import com.umeng.socialize.ShareAction;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.umeng.socialize.UMShareAPI;
 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.Collections;
 import java.util.List;
+import java.util.Locale;
 
 import butterknife.BindView;
 import butterknife.OnClick;
-import io.reactivex.Observer;
-import io.reactivex.disposables.Disposable;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
 
 /**
  * Created by: zhoujuncai.
@@ -47,6 +62,20 @@ public class SignActivity extends BaseActivity implements UMShareListener {
     LinearLayout signDayList;
     @BindView(R.id.sign_now_but)
     TextView signNowBut;
+    @BindView(R.id.sign_card_num)
+    TextView sign_card_num;
+    @BindView(R.id.sheep_sign_machine)
+    ImageView sheep_sign_machine;
+    @BindView(R.id.sheep_sign_out)
+    ImageView sheep_sign_out;
+    @BindView(R.id.sheep_sign_rectangle)
+    ImageView sheep_sign_rectangle;
+    @BindView(R.id.sheep_sign_egg_rl)
+    View sheep_sign_egg_rl;//中奖的球与文本的容器
+//    @BindView(R.id.sheep_sign_egg)
+//    ImageView sheep_sign_egg;//中奖的球
+    @BindView(R.id.sheep_sign_egg_msg)
+    TextView sheep_sign_egg_msg;//中奖的球的文本
     @BindView(R.id.sign_guajiangqu)
     RelativeLayout signGuajiang;
     /* 是否有漏签 */
@@ -62,89 +91,228 @@ public class SignActivity extends BaseActivity implements UMShareListener {
 
     }
 
+    private float per;//图片每像素在屏幕上的距离
     @Override
     protected void onView() {
+        ViewUtil.setText(sign_card_num, ViewUtil.BLOCK);
+        ViewUtil.setImage(sheep_sign_machine, ViewUtil.getNetImgByName("sheep_sign_machine"));
+        ViewUtil.setImage(sheep_sign_rectangle, ViewUtil.getNetImgByName("sheep_sign_rectangle"));
+        ViewUtil.setImage(sheep_sign_out, ViewUtil.getNetImgByName("sheep_sign_out"));
+        //sheep_sign_bg 宽 1500 高 1768
+        //eggsView 宽为 864,高度为 608,距离上面 600
+        //sheep_sign_rectangle 宽为 864,高度为 608 距离上面 350,距离左面 300
+        //sheep_sign_out 宽为 218,高度为 284 距离上面 1290,距离左面 974
+        per = G.WIDTH / 1500f;
+        LayoutParamsUtil.resetLayoutParams(sheep_sign_out, new Lp(per).setTopMargin(1290).setLeftMargin(974).setWidth(218).setHeight(284));
+        LayoutParamsUtil.resetLayoutParams(sheep_sign_rectangle, new Lp(per).setTopMargin(600).setWidth(864).setHeight(608));
+        LayoutParamsUtil.resetLayoutParams(eggsView, new Lp(per).setTopMargin(600).setWidth(864).setHeight(608));
+        LayoutParamsUtil.resetLayoutParams(sheep_sign_egg_rl, new Lp(per).setTopMargin(1290 - 184).setLeftMargin(974 + (218 - 182) / 2).setWidth(182).setHeight(184));
+//        ViewUtil.setEnabled(signNowBut, false);
+    }
+
+//    public static final int[] imageResources = {
+//            R.drawable.niudan1,
+//            R.drawable.niudan2,
+//            R.drawable.niudan3,
+//            R.drawable.niudan4,
+//            R.drawable.niudan5,
+//            R.drawable.niudan6,
+//            R.drawable.niudan7,
+//            R.drawable.niudan8};
+
+    private void aEggGoOut(String msg, final Action1<Animation> animationAction1) {
+//        sheep_sign_egg.setImageResource(imageResources[(int) (Math.random() * imageResources.length) % imageResources.length]);
+        ViewUtil.setText(sheep_sign_egg_msg, msg);
+        ViewUtil.setVisibility(sheep_sign_egg_rl, true);
+        Animation translateAnimation = new TranslateAnimation(0, 0, 0, per * 284);//平移动画  从0,0,平移到 0 , 284
+        translateAnimation.setDuration(1500);//动画持续的时间为1.5s
+        translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
+        translateAnimation.setFillAfter(true);//不回到起始位置
+        translateAnimation.setInterpolator(new BounceInterpolator());//accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等
+//        translateAnimation.setInterpolator(new AccelerateInterpolator());
+        translateAnimation.setAnimationListener(new Animation.AnimationListener() {
+            @Override
+            public void onAnimationStart(Animation animation) {
+
+            }
+
+            @Override
+            public void onAnimationEnd(Animation animation) {
+                if(animationAction1 != null)
+                    animationAction1.call(animation);
+                ViewUtil.setVisibility(sheep_sign_egg_rl, false);
+            }
+
+            @Override
+            public void onAnimationRepeat(Animation animation) {
+
+            }
+        });
+        //如果不添加setFillEnabled和setFillAfter则动画执行结束后会自动回到远点
+        sheep_sign_egg_rl.startAnimation(translateAnimation);
 
     }
 
     @Override
     protected void onData() {
         initSigns();
+        initSignCardData();
     }
 
-    private void initSigns() {
-        Network.api().getSigns()
-                .compose(Scheduler.apply(this.<SignsBean>bindUntilEvent(ActivityEvent.DESTROY)))
-                .subscribe(new Observer<SignsBean>() {
+    private void initSignCardData() {
+        SheepApp.getInstance().getNetComponent().getApiService().getPunchAndSignCount()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
-                    public void onSubscribe(Disposable d) {
+                    public void onNext(BaseMessage baseMessage) {
+                        PunchAndSign punchAndSign = baseMessage.getData(PunchAndSign.class);
+                        ViewUtil.setText(sign_card_num, punchAndSign.getSign_up_count());
+                    }
 
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
                     }
+                });
+    }
+
+    private List<UserSign> userSignList;
+    private UserSign lastUserSign;
 
-                    @SuppressLint("SetTextI18n")
+    private void initSigns() {
+        SheepApp.getInstance().getNetComponent().getApiService().getUserSignSigns()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
-                    public void onNext(SignsBean signsBean) {
-                        List<SignsBean.DataBean> data = signsBean.getData();
-                        signInfoText.setText("已签到" + data.size() + "天,连续6天打卡可参与刮奖");
-                        int max = 0;
-                        /* 遍历最大签到周期 */
-                        for (SignsBean.DataBean bean : data) {
-                            if (max == 0) {
-                                max = bean.getDay();
-                            } else {
-                                max = Math.max(max, bean.getDay());
-                            }
-                        }
-                        /* 判断是否有漏签 */
-                        if (max > data.size()) {
-                            attech = true;
-                            signNowBut.setText("复活补签");
-                            /* 设置从第一天到最后一天的状态为未签到 */
-                            for (int i = 0; i < max - 1; i++) {
-                                SignsBean.DataBean dataBean = data.get(i);
-                                TextView childAt = (TextView) signDayList.getChildAt(dataBean.getDay() - 1);
+                    public void onNext(BaseMessage baseMessage) {
+                        List<UserSign> data = baseMessage.getDataList(UserSign.class);
+                        if (data != null) {
+                            userSignList = data;
+                            ViewUtil.setText(signInfoText, String.format(Locale.CHINA, "已签到%d天,连续%d天打卡可参与刮奖", data.size(), SIGN_PERIOD));
+                            int max = 0;
+                            lastUserSign = null;
+                            /* 遍历最大签到周期 */
+                            for (UserSign item : data) {
+                                if (item.getDay() > max) {
+                                    max = item.getDay();
+                                    lastUserSign = item;
+                                }
+                                /* 设置已签到的天数状态 */
+                                TextView childAt = (TextView) signDayList.getChildAt(item.getDay() - 1);
                                 childAt.setBackground(getResources().getDrawable(R.drawable.shape_sign_bg_select));
+                                if (item.getDay() == SIGN_PERIOD) {
+                                    childAt.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, getResources().getDrawable(R.drawable.giftbox_open));
+                                } else {
+                                    childAt.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, getResources().getDrawable(R.drawable.qiandao));
+                                }
                             }
-                        }
-                        /* 设置已签到的天数状态 */
-                        for (int i = 0; i < data.size(); i++) {
-                            SignsBean.DataBean dataBean = data.get(i);
-                            TextView childAt = (TextView) signDayList.getChildAt(dataBean.getDay() - 1);
-                            childAt.setBackground(getResources().getDrawable(R.drawable.shape_sign_bg_select));
-                            if (dataBean.getDay() == 6) {
-                                childAt.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, getResources().getDrawable(R.drawable.giftbox_open));
-                            } else {
-                                childAt.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, getResources().getDrawable(R.drawable.qiandao));
+                            /* 判断是否有漏签 */
+                            if (max > data.size()) {
+                                attech = true;
+                                signNowBut.setText("复活补签");
+                            } else {//没有漏签就设置今日签到状态
+                                //设置今日签到状态
+                                boolean isSignToday = lastUserSign != null && lastUserSign.isToday();
+                                ViewUtil.setText(signNowBut, isSignToday ? "已签到" : "签到");
+//                                        ViewUtil.setEnabled(signNowBut, !isSignToday);
                             }
+                        } else {
+                            G.showToast(R.string.service_data_error);
                         }
                     }
 
                     @Override
-                    public void onError(Throwable e) {
-
-                    }
-
-                    @Override
-                    public void onComplete() {
-
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
                     }
                 });
+//        Network.api().getSigns()
+//                .compose(Scheduler.apply(this.<SignsBean>bindUntilEvent(ActivityEvent.DESTROY)))
+//                .subscribe(new Observer<SignsBean>() {
+//                    @Override
+//                    public void onSubscribe(Disposable d) {
+//                    }
+//
+//                    @SuppressLint("SetTextI18n")
+//                    @Override
+//                    public void onNext(SignsBean signsBean) {
+//                        List<SignsBean.DataBean> data = signsBean.getData();
+//                        signInfoText.setText("已签到" + data.size() + "天,连续6天打卡可参与刮奖");
+//                        int max = 0;
+//                        /* 遍历最大签到周期 */
+//                        for (SignsBean.DataBean bean : data) {
+//                            if (max == 0) {
+//                                max = bean.getDay();
+//                            } else {
+//                                max = Math.max(max, bean.getDay());
+//                            }
+//                        }
+//                        /* 判断是否有漏签 */
+//                        if (max > data.size()) {
+//                            attech = true;
+//                            signNowBut.setText("复活补签");
+//                            /* 设置从第一天到最后一天的状态为未签到 */
+//                            for (int i = 0; i < max - 1; i++) {
+//                                UserSign dataBean = data.get(i);
+//                                TextView childAt = (TextView) signDayList.getChildAt(dataBean.getDay() - 1);
+//                                childAt.setBackground(getResources().getDrawable(R.drawable.shape_sign_bg_select));
+//                            }
+//                        }
+//                        /* 设置已签到的天数状态 */
+//                        for (int i = 0; i < data.size(); i++) {
+//                            SignsBean.DataBean dataBean = data.get(i);
+//                            TextView childAt = (TextView) signDayList.getChildAt(dataBean.getDay() - 1);
+//                            childAt.setBackground(getResources().getDrawable(R.drawable.shape_sign_bg_select));
+//                            if (dataBean.getDay() == 6) {
+//                                childAt.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, getResources().getDrawable(R.drawable.giftbox_open));
+//                            } else {
+//                                childAt.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, getResources().getDrawable(R.drawable.qiandao));
+//                            }
+//                        }
+//                    }
+//
+//                    @Override
+//                    public void onError(Throwable e) {
+//                    }
+//
+//                    @Override
+//                    public void onComplete() {
+//                    }
+//                });
     }
 
+    //签到周期
+    public static final int SIGN_PERIOD = 6;
+
     /**
      * 补签
      */
     private void attechSign() {
-        Network.api().signInSupplement()
-                .compose(Scheduler.apply(this.<SignDay>bindUntilEvent(ActivityEvent.DESTROY)))
-                .subscribe(new Observer<SignDay>() {
-                    @Override
-                    public void onSubscribe(Disposable d) {
-
-                    }
-
+        UserSign willUserSign;
+        if (ListUtil.isEmpty(userSignList)) {
+            willUserSign = new UserSign();
+            willUserSign.setSign_date(TimeUtil.TimeStamp2Date(System.currentTimeMillis(), "yyyy-MM-dd"));
+            willUserSign.setDay(1);
+        } else {
+            Collections.sort(userSignList);
+            int i = 0;
+            for (UserSign item : userSignList) {
+                if (item.getDay() > i + 1) {//item.getDay()应该等于i + 1,不等于代表这天漏签了
+                    break;
+                }
+                i++;
+            }
+            willUserSign = new UserSign();
+            willUserSign.setDay(i + 1);
+            willUserSign.resetSignDate(lastUserSign);
+        }
+        SheepApp.getInstance().getNetComponent().getApiService().postUserSignSignInSupplement(willUserSign.getSign_date(), willUserSign.getDay())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
-                    public void onNext(SignDay signDay) {
+                    public void onNext(BaseMessage baseMessage) {
                         attech = false;
                         signNowBut.setText("签到");
                         // 重新请求签到状态接口
@@ -152,88 +320,168 @@ public class SignActivity extends BaseActivity implements UMShareListener {
                     }
 
                     @Override
-                    public void onError(Throwable e) {
-
-                    }
-
-                    @Override
-                    public void onComplete() {
-
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
                     }
                 });
+//        Network.api().signInSupplement()
+//                .compose(Scheduler.apply(this.<SignDay>bindUntilEvent(ActivityEvent.DESTROY)))
+//                .subscribe(new Observer<SignDay>() {
+//                    @Override
+//                    public void onSubscribe(Disposable d) {
+//
+//                    }
+//
+//                    @Override
+//                    public void onNext(SignDay signDay) {
+//                        attech = false;
+//                        signNowBut.setText("签到");
+//                        // 重新请求签到状态接口
+//                        initSigns();
+//                    }
+//
+//                    @Override
+//                    public void onError(Throwable e) {
+//
+//                    }
+//
+//                    @Override
+//                    public void onComplete() {
+//
+//                    }
+//                });
     }
 
     /**
      * 签到
      */
     private void signNow() {
-        Network.api().signEveryDay()
-                .compose(Scheduler.apply(this.<SignDay>bindUntilEvent(ActivityEvent.DESTROY)))
-                .subscribe(new Observer<SignDay>() {
+        SheepApp.getInstance().getNetComponent().getApiService().postUserSignSignIn()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
-                    public void onSubscribe(Disposable d) {
-
-                    }
-
-                    @Override
-                    public void onNext(SignDay signDay) {
-                        signNowBut.setText("已签到");
-                        signNowBut.setClickable(false);
-                        signNowBut.setFocusable(false);
-                        makeAndShowWindow("已签到", signDay.getData());
-                        initSigns();
-                    }
-
-                    @Override
-                    public void onError(Throwable e) {
-
+                    public void onNext(BaseMessage baseMessage) {
+                        final SheepSignResult sheepSignResult = baseMessage.getData(SheepSignResult.class);
+                        if (sheepSignResult.isSign()){
+                            tryShowSignResultAndTask("签到成功", sheepSignResult.getAmount());
+                        } else {
+                            eggsView.setStop(false);
+                            aEggGoOut(NumberFormatUtils.retainMost2(sheepSignResult.getAmount()), new Action1<Animation>(){
+
+                                @Override
+                                public void call(Animation animation) {
+                                    signNowBut.setText("已签到");
+                                    tryShowSignResultAndTask("签到成功", sheepSignResult.getAmount());
+                                }
+                            });
+                            initSigns();
+                        }
                     }
 
                     @Override
-                    public void onComplete() {
-
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
+//                                makeAndShowWindow("已签到", signDay.getData());
                     }
                 });
+//        Network.api().signEveryDay()
+//                .compose(Scheduler.apply(this.<SignDay>bindUntilEvent(ActivityEvent.DESTROY)))
+//                .subscribe(new Observer<SignDay>() {
+//                    @Override
+//                    public void onSubscribe(Disposable d) {
+//
+//                    }
+//
+//                    @Override
+//                    public void onNext(SignDay signDay) {
+//                        signNowBut.setText("已签到");
+//                        signNowBut.setClickable(false);
+//                        signNowBut.setFocusable(false);
+//                        makeAndShowWindow("已签到", signDay.getData());
+//                        initSigns();
+//                    }
+//
+//                    @Override
+//                    public void onError(Throwable e) {
+//
+//                    }
+//
+//                    @Override
+//                    public void onComplete() {
+//
+//                    }
+//                });
     }
 
-    /**
-     * 创建并显示窗口
-     */
-    @SuppressLint({"InflateParams", "SetTextI18n"})
-    private void makeAndShowWindow(String title, double money) {
-        final View dialog = LayoutInflater.from(this).inflate(R.layout.sign_ok_dialog, null);
-        ((TextView) dialog.findViewById(R.id.sign_window_title)).setText(title);
-        ((TextView) dialog.findViewById(R.id.sign_money_number)).setText("+" + money);
-        dialog.findViewById(R.id.sign_window_next).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                // 换一个
-            }
-        });
-        dialog.findViewById(R.id.sign_window_share).setOnClickListener(new View.OnClickListener() {
+    private void showSignResultAndTask(final String title, final double money, RobTask robTask) {
+        ViewUtil.newInstance().showRobDutyDialog(this, robTask, R.layout.dialog_sign_result_and_task, new Action1<View>() {
             @Override
-            public void onClick(View v) {
-                ((ViewGroup) getWindow().getDecorView()).removeView(dialog);
-                UMWeb web = new UMWeb("下载链接");
-                web.setTitle(getString(R.string.app_name));
-                web.setThumb(new UMImage(SignActivity.this, R.drawable.icon));
-                web.setDescription("任务详情");
-                new ShareAction(SignActivity.this)
-                        .withMedia(web)
-                        .setDisplayList(SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN_CIRCLE)
-                        .setCallback(SignActivity.this)
-                        .open();
+            public void call(View view) {
+                ViewUtil.setText((TextView) view.findViewById(R.id.sign_window_title), title);
+                ViewUtil.setText((TextView) view.findViewById(R.id.sign_money_number), String.format(Locale.CHINA, "+%s", NumberFormatUtils.retainMost2(money)));
             }
         });
-        dialog.findViewById(R.id.close_but).setOnClickListener(new View.OnClickListener() {
+    }
+
+    private void tryShowSignResultAndTask(final String title, final double money) {
+        CommonUtil.getInstance().robTask(new Action1<RobTask>() {
             @Override
-            public void onClick(View v) {
-                ((ViewGroup) getWindow().getDecorView()).removeView(dialog);
+            public void call(RobTask robTask) {
+                if (robTask != null) {
+                    DataUtil.putAsInt(DataKey.KEY_ORDER, robTask.getOrder());
+                    try {
+                        showSignResultAndTask(title, money, robTask);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        G.showToast(e.getMessage());
+                    }
+                } else {
+                    G.showToast("任务已被抢光!请实时关注任务发布!");
+                }
             }
         });
-        ((ViewGroup) getWindow().getDecorView()).addView(dialog);
     }
 
+
+//    /**
+//     * 创建并显示窗口
+//     */
+//    @SuppressLint({"InflateParams", "SetTextI18n"})
+//    private void makeAndShowWindow(String title, double money) {
+//        final View dialog = LayoutInflater.from(this).inflate(R.layout.sign_ok_dialog, null);
+//        ((TextView) dialog.findViewById(R.id.sign_window_title)).setText(title);
+//        ((TextView) dialog.findViewById(R.id.sign_money_number)).setText("+" + money);
+//        dialog.findViewById(R.id.sign_window_next).setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View v) {
+//                // 换一个
+//            }
+//        });
+//        dialog.findViewById(R.id.sign_window_share).setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View v) {
+//                ((ViewGroup) getWindow().getDecorView()).removeView(dialog);
+//                UMWeb web = new UMWeb("下载链接");
+//                web.setTitle(getString(R.string.app_name));
+//                web.setThumb(new UMImage(SignActivity.this, R.drawable.icon));
+//                web.setDescription("任务详情");
+//                new ShareAction(SignActivity.this)
+//                        .withMedia(web)
+//                        .setDisplayList(SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN_CIRCLE)
+//                        .setCallback(SignActivity.this)
+//                        .open();
+//            }
+//        });
+//        dialog.findViewById(R.id.close_but).setOnClickListener(new View.OnClickListener() {
+//            @Override
+//            public void onClick(View v) {
+//                ((ViewGroup) getWindow().getDecorView()).removeView(dialog);
+//            }
+//        });
+//        ((ViewGroup) getWindow().getDecorView()).addView(dialog);
+//    }
+
     @OnClick(R.id.back_but)
     public void onBackButClicked() {
         finish();
@@ -246,8 +494,13 @@ public class SignActivity extends BaseActivity implements UMShareListener {
 
     @OnClick(R.id.sign_now_but)
     public void onSignNowButClicked() {
-        if (attech) {
-            attechSign();
+        if (attech && lastUserSign != null && lastUserSign.isToday()) {//有漏签并且今日已经签到,才能进行最近的补签
+            CommonUtil.getInstance().tryShowShareDialog(new Action1<View>() {
+                @Override
+                public void call(View view) {
+                    ViewUtil.setText((TextView) view.findViewById(R.id.ask_share_title), "邀请获得复活机会");
+                }
+            }, this);
         } else {
             signNow();
         }
@@ -255,61 +508,88 @@ public class SignActivity extends BaseActivity implements UMShareListener {
 
     @OnClick(R.id.go_to_pack_but)
     public void onGoToPackButClicked() {
-        startActivity(new Intent(SignActivity.this, SignCardAct.class));
-        finish();
+        Jump2View.getInstance().goSignCardAct(this, null);
     }
 
+    //默认最小奖励
+    public static final float DEFAULT_FLOAT = 0.01f;
+
     @OnClick(R.id.sign_guajiangqu)
     public void onSignGuajiangquClicked() {
-        Network.api().signScratchCard()
-                .compose(Scheduler.apply(this.<SignDay>bindUntilEvent(ActivityEvent.DESTROY)))
-                .subscribe(new Observer<SignDay>() {
-                    @Override
-                    public void onSubscribe(Disposable d) {
-
-                    }
-
+        SheepApp.getInstance().getNetComponent().getApiService().postUserSignScratchCard()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                     @Override
-                    public void onNext(SignDay signDay) {
+                    public void onNext(BaseMessage baseMessage) {
+                        Float aFloat = baseMessage.getData(Float.class, DEFAULT_FLOAT);
                         signGuajiang.setVisibility(View.GONE);
-                        makeAndShowWindow("刮奖成功", signDay.getData());
-                    }
-
-                    @Override
-                    public void onError(Throwable e) {
-
+                        tryShowSignResultAndTask("刮奖成功", aFloat);
                     }
 
                     @Override
-                    public void onComplete() {
-
+                    public void onError(BaseMessage baseMessage) {
+                        G.showToast(baseMessage);
                     }
                 });
+//        Network.api().signScratchCard()
+//                .compose(Scheduler.apply(this.<SignDay>bindUntilEvent(ActivityEvent.DESTROY)))
+//                .subscribe(new Observer<SignDay>() {
+//                    @Override
+//                    public void onSubscribe(Disposable d) {
+//
+//                    }
+//
+//                    @Override
+//                    public void onNext(SignDay signDay) {
+//                        signGuajiang.setVisibility(View.GONE);
+//                        makeAndShowWindow("刮奖成功", signDay.getData());
+//                    }
+//
+//                    @Override
+//                    public void onError(Throwable e) {
+//
+//                    }
+//
+//                    @Override
+//                    public void onComplete() {
+//
+//                    }
+//                });
     }
 
     @OnClick(R.id.go_to_yaoqing)
     public void onGoToYaoqingClicked() {
-        startActivity(new Intent(SignActivity.this, AskGetMoneyAct.class));
-        finish();
+        Jump2View.getInstance().goAskGetMoney(this, null);
     }
 
     @Override
     public void onStart(SHARE_MEDIA share_media) {
-
+        LogUtil.println("SignActivity", "share", "onStart", share_media.getName());
     }
 
     @Override
     public void onResult(SHARE_MEDIA share_media) {
-
+        LogUtil.println("SignActivity", "share", "onResult", share_media.getName());
+        if (attech)
+            attechSign();
     }
 
     @Override
     public void onError(SHARE_MEDIA share_media, Throwable throwable) {
-
+        String msg = throwable.getMessage();
+        G.showToast(msg != null && msg.contains("没有安装应用") ? "没有安装应用" : msg);
+        LogUtil.println("SignActivity", "share", "onError", share_media.getName(), throwable.getMessage());
     }
 
     @Override
     public void onCancel(SHARE_MEDIA share_media) {
+        LogUtil.println("SignActivity", "share", "onCancel", share_media.getName());
+    }
 
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
     }
 }

+ 5 - 2
app/src/main/java/com/sheep/jiuyan/samllsheep/ui/view/EggView.java

@@ -32,7 +32,7 @@ public class EggView extends View {
     /* 画笔 */
     private Paint paint;
     /* 是否停止 */
-    private boolean isStop = false;
+    private boolean isStop = true;
 
     public EggView(Context context) {
         super(context);
@@ -86,11 +86,14 @@ public class EggView extends View {
             }
         }
         super.onDraw(canvas);
-        invalidate();
+        if(!isStop)
+            invalidate();
     }
 
     public void setStop(boolean stop) {
         isStop = stop;
+        if(!isStop)
+            invalidate();
     }
 
     /**

BIN
app/src/main/res/drawable-xhdpi/close.webp


BIN
app/src/main/res/drawable-xhdpi/ic_sign_bg.webp


BIN
app/src/main/res/drawable-xxhdpi/close.webp


BIN
app/src/main/res/drawable-xxhdpi/ic_sign_bg.webp


BIN
app/src/main/res/drawable-xxxhdpi/ic_sign_bg.webp


+ 10 - 0
app/src/main/res/drawable/shape_bg_gradient_rectangle_069cfb_9ae7f4.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <gradient
+        android:startColor="#069CFB"
+        android:centerColor="#31B2ED"
+        android:angle="270"
+        android:endColor="#9AE7F4"/>
+</shape>

+ 8 - 5
app/src/main/res/layout/activity_active_rule.xml

@@ -2,20 +2,23 @@
 <android.support.constraint.ConstraintLayout 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:layout_height="match_parent"
+    android:background="@color/white">
 
     <include
         android:id="@+id/sign_rule_title_bar"
-        layout="@layout/view_title_bar" />
+        layout="@layout/title" />
 
     <TextView
         android:id="@+id/active_rule_text"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginStart="8dp"
-        android:layout_marginTop="8dp"
-        android:layout_marginEnd="8dp"
+        android:layout_marginStart="20dp"
+        android:layout_marginTop="20dp"
+        android:layout_marginEnd="20dp"
         android:lineHeight="24sp"
+        android:textColor="#666666"
+        android:textSize="13sp"
         android:text="@string/sign_active_rule_text"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"

+ 52 - 17
app/src/main/res/layout/activity_sign.xml

@@ -35,7 +35,8 @@
     <ScrollView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@id/title_bar">
+        android:layout_below="@id/title_bar"
+        android:scrollbars="none">
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -44,21 +45,62 @@
 
             <RelativeLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+                android:layout_height="wrap_content"
+                android:paddingTop="15dp"
+                android:paddingBottom="23dp"
+                android:background="@drawable/shape_bg_gradient_rectangle_069cfb_9ae7f4">
 
                 <ImageView
-                    android:layout_width="match_parent"
+                    android:id="@+id/sheep_sign_rectangle"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:contentDescription="@string/image_des"
-                    android:scaleType="centerCrop"
-                    android:src="@drawable/ic_sign_bg" />
+                    android:layout_centerHorizontal="true"
+                    android:src="@drawable/loading_01" />
+
+                <ImageView
+                    android:id="@+id/sheep_sign_out"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/loading_01" />
+                <RelativeLayout
+                    android:id="@+id/sheep_sign_egg_rl"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:visibility="gone">
+                    <ImageView
+                        android:id="@+id/sheep_sign_egg"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:src="@drawable/niudan8"/>
+                    <TextView
+                        android:id="@+id/sheep_sign_egg_msg"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="5dp"
+                        android:layout_alignParentBottom="true"
+                        android:gravity="center"
+                        android:textColor="@color/white"
+                        android:textSize="10sp"/>
+                </RelativeLayout>
 
+                <com.sheep.jiuyan.samllsheep.ui.view.EggView
+                    android:id="@+id/eggs_view"
+                    android:layout_width="190dp"
+                    android:layout_height="140dp"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginTop="100dp" />
+                <ImageView
+                    android:id="@+id/sheep_sign_machine"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:adjustViewBounds="true"
+                    android:scaleType="fitXY"
+                    android:src="@drawable/loading_01" />
                 <TextView
                     android:id="@+id/active_info"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignParentEnd="true"
-                    android:layout_marginTop="15dp"
                     android:background="@drawable/shape_round_rect_bg"
                     android:gravity="center"
                     android:paddingLeft="15dp"
@@ -68,12 +110,6 @@
                     android:text="活动规则"
                     android:textColor="#ffffff"
                     android:textSize="12sp" />
-
-                <com.sheep.jiuyan.samllsheep.ui.view.EggView
-                    android:id="@+id/eggs_view"
-                    android:layout_width="190dp"
-                    android:layout_height="140dp"
-                    android:layout_centerInParent="true" />
             </RelativeLayout>
 
             <TextView
@@ -177,16 +213,14 @@
 
                 <TextView
                     android:id="@+id/sign_now_but"
+                    style="@style/style_button_full"
                     android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
+                    android:layout_height="32dp"
                     android:layout_gravity="center_horizontal"
                     android:layout_marginTop="20dp"
                     android:layout_marginBottom="20dp"
-                    android:background="@drawable/shape_sign_but_bg"
                     android:paddingLeft="25dp"
-                    android:paddingTop="5dp"
                     android:paddingRight="25dp"
-                    android:paddingBottom="5dp"
                     android:text="签到"
                     android:textColor="@color/white"
                     android:textSize="16sp" />
@@ -258,6 +292,7 @@
                         android:orientation="horizontal">
 
                         <TextView
+                            android:id="@+id/sign_card_num"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:text="2000"

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

@@ -64,7 +64,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginStart="5dp"
-            android:text="温馨提示:因小绵羊业务调整,服务号主体迁移,请关注新的服务号“小绵羊领头羊”进行验证码接收操作,感谢您的配合"
+            android:text="@string/tip_tian_tian"
             android:textColor="#918F8F"
             android:textSize="14sp" />
     </LinearLayout>

+ 169 - 0
app/src/main/res/layout/dialog_sign_result_and_task.xml

@@ -0,0 +1,169 @@
+<?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="center"
+        android:layout_margin="@dimen/dp_10">
+
+        <LinearLayout
+            android:id="@+id/dialog_center_ll"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@drawable/bulletwindow"
+            android:gravity="center_horizontal"
+            android:orientation="vertical"
+            android:padding="16dp">
+
+            <TextView
+                android:id="@+id/sign_window_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="签到成功"
+                android:textColor="#ffffffff"
+                android:textSize="36sp" />
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="20dp"
+                android:background="@drawable/shape_sign_window_money_bg"
+                android:gravity="center"
+                android:orientation="horizontal"
+                android:paddingLeft="10dp"
+                android:paddingTop="5dp"
+                android:paddingRight="10dp"
+                android:paddingBottom="5dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:text="已签到"
+                    android:textColor="#ff1c9cf9"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:id="@+id/sign_money_number"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:text="+0.01"
+                    android:textColor="#FE5864"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:text="元"
+                    android:textColor="#ff1c9cf9"
+                    android:textSize="12sp" />
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="60dp"
+                android:text="今日赚钱推荐"
+                android:textColor="#ff089dfa"
+                android:textSize="18sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="25dp"
+                android:background="#ffffff"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:id="@+id/dialog_iv"
+                    android:layout_width="62dp"
+                    android:layout_height="62dp"
+                    android:layout_marginEnd="12dp"
+                    android:adjustViewBounds="true"
+                    android:contentDescription="@string/image_des"
+                    android:src="@mipmap/icon" />
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical">
+
+                    <TextView
+                        android:id="@+id/dialog_name_tv"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="早起打卡,好习惯,高回报"
+                        android:textColor="#333333" />
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_weight="2"/>
+                    <TextView
+                        style="@style/style_xian_jin"
+                        android:text="现金" />
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_weight="1"/>
+                    <TextView
+                        android:id="@+id/dialog_amount_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="+0.8元"
+                        android:textColor="#fffe5864"
+                        android:textSize="15sp" />
+                </LinearLayout>
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="20dp"
+                android:gravity="center"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/dialog_btn_left"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="12dp"
+                    android:background="@drawable/shape_sign_green_but_bg"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingRight="20dp"
+                    android:paddingBottom="5dp"
+                    android:text="换一个"
+                    android:textColor="#ffffff"
+                    android:textSize="16sp" />
+
+                <TextView
+                    android:id="@+id/dialog_btn_right"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="12dp"
+                    android:background="@drawable/shape_sign_blue_but_bg"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="5dp"
+                    android:paddingRight="20dp"
+                    android:paddingBottom="5dp"
+                    android:text="立即赚钱"
+                    android:textColor="#ffffffff"
+                    android:textSize="16sp" />
+            </LinearLayout>
+        </LinearLayout>
+
+        <ImageView
+            android:id="@+id/dialog_close"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_below="@+id/dialog_center_ll"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="@dimen/content_padding_30"
+            android:src="@mipmap/close" />
+    </RelativeLayout>
+</FrameLayout>

+ 12 - 12
app/src/main/res/layout/item_novice_guidance.xml

@@ -38,23 +38,23 @@
         android:layout_marginStart="16dp"
         android:layout_marginTop="16dp"
         android:layout_marginEnd="16dp"
-        android:adjustViewBounds="true"
         android:minHeight="140dp"
-        android:scaleType="fitXY"
+        android:adjustViewBounds="true"
+        android:scaleType="fitCenter"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/item_novice_guidance_title" />
 
-    <!--<ImageView-->
-        <!--android:id="@+id/item_novice_guidance_video_control"-->
-        <!--android:layout_width="51dp"-->
-        <!--android:layout_height="51dp"-->
-        <!--android:padding="8dp"-->
-        <!--android:src="@drawable/ic_play_but_image"-->
-        <!--app:layout_constraintBottom_toBottomOf="@id/item_novice_guidance_video_image"-->
-        <!--app:layout_constraintEnd_toEndOf="@id/item_novice_guidance_video_image"-->
-        <!--app:layout_constraintStart_toStartOf="@id/item_novice_guidance_video_image"-->
-        <!--app:layout_constraintTop_toTopOf="@id/item_novice_guidance_video_image" />-->
+    <ImageView
+        android:id="@+id/item_novice_guidance_video_control"
+        android:layout_width="51dp"
+        android:layout_height="51dp"
+        android:padding="8dp"
+        android:src="@drawable/ic_play_but_image"
+        app:layout_constraintBottom_toBottomOf="@id/item_novice_guidance_video_image"
+        app:layout_constraintEnd_toEndOf="@id/item_novice_guidance_video_image"
+        app:layout_constraintStart_toStartOf="@id/item_novice_guidance_video_image"
+        app:layout_constraintTop_toTopOf="@id/item_novice_guidance_video_image" />
 
     <ImageView
         android:id="@+id/item_novice_guidance_video_full"

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

@@ -159,7 +159,7 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="16dp"
         android:contentDescription="@string/image_des"
-        android:src="@drawable/close"
+        android:src="@mipmap/close"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/sign_done_window" />

Разница между файлами не показана из-за своего большого размера
+ 2 - 1
app/src/main/res/values/strings.xml