Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/sheep_develop' into sheep_develop

liujiangyao 7 rokov pred
rodič
commit
8dc6fa1cd4
46 zmenil súbory, kde vykonal 2340 pridanie a 277 odobranie
  1. 4 1
      app/src/main/AndroidManifest.xml
  2. 1 0
      app/src/main/java/com/kfzs/duanduan/event/EventTypes.java
  3. 4 1
      app/src/main/java/com/kfzs/duanduan/fragment/FgtAskgetmoney.java
  4. 20 0
      app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java
  5. 0 2
      app/src/main/java/com/kfzs/duanduan/react/TabsHelper.java
  6. 67 0
      app/src/main/java/com/sheep/gamegroup/helper/CustomRoundAngleImageView.java
  7. 137 0
      app/src/main/java/com/sheep/gamegroup/helper/DownloadUtil.java
  8. 228 0
      app/src/main/java/com/sheep/gamegroup/helper/ScalableCardHelper.java
  9. 99 0
      app/src/main/java/com/sheep/gamegroup/helper/ZXingHelper.java
  10. 19 5
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  11. 143 0
      app/src/main/java/com/sheep/gamegroup/model/entity/MessageCenterDetailEntity.java
  12. 123 0
      app/src/main/java/com/sheep/gamegroup/model/entity/MessageReplyDetailEntity.java
  13. 125 0
      app/src/main/java/com/sheep/gamegroup/model/entity/MessageUserFeedbackEntity.java
  14. 172 0
      app/src/main/java/com/sheep/gamegroup/model/entity/PictureInvitationEntity.java
  15. 33 25
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  16. 19 34
      app/src/main/java/com/sheep/gamegroup/util/DataUtil.java
  17. 2 0
      app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java
  18. 2 2
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  19. 8 6
      app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java
  20. 52 95
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  21. 510 0
      app/src/main/java/com/sheep/gamegroup/view/activity/InvitationActivity.java
  22. 3 1
      app/src/main/java/com/sheep/gamegroup/view/activity/MessageCenterDetailActivity.java
  23. 15 11
      app/src/main/java/com/sheep/gamegroup/view/activity/MessageInteractionDetailActivity.java
  24. 13 9
      app/src/main/java/com/sheep/gamegroup/view/activity/MessageReplyDetailActivity.java
  25. 43 2
      app/src/main/java/com/sheep/gamegroup/view/activity/MessagesActivity.java
  26. 7 6
      app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java
  27. 119 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/InvitationPictureAdapter.java
  28. 22 13
      app/src/main/java/com/sheep/gamegroup/view/adapter/MessageInteractionAdapter.java
  29. 9 4
      app/src/main/java/com/sheep/gamegroup/view/adapter/MessageLeftAdapter.java
  30. 11 5
      app/src/main/java/com/sheep/gamegroup/view/adapter/MessageRightAdapter.java
  31. 82 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/MyAdapter.java
  32. 24 11
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java
  33. 7 0
      app/src/main/java/com/sheep/gamegroup/view/fragment/MessageCenterFragment.java
  34. 16 10
      app/src/main/java/com/sheep/gamegroup/view/fragment/MessageReplyFragment.java
  35. 1 0
      app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java
  36. 123 0
      app/src/main/res/layout/activity_invitation.xml
  37. 2 2
      app/src/main/res/layout/activity_messages.xml
  38. 1 3
      app/src/main/res/layout/activity_messagesystem.xml
  39. 21 0
      app/src/main/res/layout/adapter_invitationpictureadapter.xml
  40. 1 2
      app/src/main/res/layout/adapter_message_left_fragment.xml
  41. 13 15
      app/src/main/res/layout/ask_to_share.xml
  42. 7 11
      app/src/main/res/layout/fgt_try_makemoney_layout.xml
  43. 3 1
      app/src/main/res/layout/layout_fragment_mseeages.xml
  44. 29 0
      app/src/main/res/layout/view_image.xml
  45. BIN
      app/src/main/res/mipmap-xxhdpi/icon_unread.png
  46. BIN
      app/src/main/res/mipmap-xxhdpi/sheep_logo.png

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

@@ -97,6 +97,7 @@
         android:label="@string/app_name"
         android:persistent="true"
         android:supportsRtl="true"
+        android:largeHeap="true"
         android:theme="@style/AppTheme">
         <meta-data android:name="design_width_in_dp" android:value="375"/>
         <meta-data android:name="design_height_in_dp" android:value="667"/>
@@ -351,7 +352,6 @@
             android:screenOrientation="portrait" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActWeb"
-            android:hardwareAccelerated="false"
             android:screenOrientation="portrait" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActMyMoney"
@@ -599,6 +599,9 @@
             android:exported="true"/>
         <activity android:name="com.sheep.gamegroup.view.activity.MessageCenterDetailActivity"
             android:exported="true"/>
+        <activity android:name="com.sheep.gamegroup.view.activity.InvitationActivity"
+            android:exported="true"/>
+
         <!--start幂动科技-->
 
         <activity android:name="com.sheep.gamegroup.view.activity.ActMiDong"

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

@@ -42,6 +42,7 @@ public enum EventTypes {
 
     REFRESH_XIAOMI_GAME_LIST,//刷新界面
     FGT_SHEEP_REFRESH_H , //刷新fgtSmallSheep高度
+    FGT_SHEEP_FOOT_VIEW_CALL_BACK , //FgtSmallSheep中ViewPager内容中的任务列表XRecyclerView的FootView刷新回调
     FGT_SHEEP_SET_BOTTOM_LINE , //设置底线内容
     FGT_SHEEP_SHOW_NEW_USER_HONG_BAO , //显示红包
     REFRESH_AUDITACTIVITY_DATA,//审核数据刷新

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

@@ -2,6 +2,7 @@ package com.kfzs.duanduan.fragment;
 
 import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Bundle;
 import android.support.design.widget.TabLayout;
 import android.support.v4.widget.NestedScrollView;
@@ -27,6 +28,7 @@ import com.sheep.gamegroup.util.FastJsonUtils;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.activity.InvitationActivity;
 import com.sheep.gamegroup.view.fragment.FgtAskGetMoneyFriend;
 import com.sheep.gamegroup.view.fragment.FgtAskGetMoneyRank;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
@@ -261,7 +263,8 @@ public class FgtAskgetmoney extends BaseCompatFragment {
                 G.showToast("复制邀请码成功");
                 break;
             case R.id.ask_invite_tv:
-                showShareView();
+               // showShareView();
+                startActivity(new Intent(getActivity(), InvitationActivity.class));
                 break;
         }
     }

+ 20 - 0
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -219,6 +219,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
     public static final int WHAT_LOAD_RUN_TASK = 1;//加载正在进行的任务列表
     public static final int WHAT_UPDATE_VP_HEIGHT = 2;//刷新viewpager高度
     public static final int WHAT_UPDATE_BOTTOM_LINE = 3;//刷新底线(双击我回到顶部)
+    public static final int WHAT_UPDATE__FOOT_VIEW_CALL_BACK = 4;//刷新发布任务列表的加载更多的状态回调
     public static final int WHAT_TRY_SHOW_HB = 7;//尝试显示红包
     public Handler mHandler = new Handler(Looper.getMainLooper()) {
         @Override
@@ -257,6 +258,19 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                     params.height = count == 0 ? G.HEIGHT / 2 : (count * getResources().getDimensionPixelSize(R.dimen.content_padding_96) + getResources().getDimensionPixelSize(R.dimen.content_padding));
                     mViewPager.setLayoutParams(params);
                     break;
+                case WHAT_UPDATE__FOOT_VIEW_CALL_BACK://发布任务列表的加载更多的回调
+                    String obj = (String) msg.obj;
+                    switch (obj){
+                        case "onLoadingMore":
+                            bottom_line_text.setText("羊羊努力加载中...");
+                            break;
+                        case "onLoadMoreComplete":
+                            bottom_line_text.setText("上拉下载更多,双击我回到顶部");
+                            break;
+                        case "onSetNoMore":
+                            break;
+                    }
+                    break;
                 case WHAT_UPDATE_BOTTOM_LINE://刷新底线
                     item = (FgtTryMakeMoney) adpViewPagerDetail.getItem(curPosition);
                     if (mViewPager == null || item == null) {
@@ -1194,6 +1208,12 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             case FGT_SHEEP_REFRESH_H:
                 mHandler.sendEmptyMessage(WHAT_UPDATE_VP_HEIGHT);
                 break;
+            case FGT_SHEEP_FOOT_VIEW_CALL_BACK:
+                Message msg = Message.obtain();
+                msg.what = WHAT_UPDATE__FOOT_VIEW_CALL_BACK;
+                msg.obj = event.getData();
+                mHandler.sendMessage(msg);
+                break;
             case FGT_SHEEP_SET_BOTTOM_LINE:
                 mHandler.sendEmptyMessage(WHAT_UPDATE_BOTTOM_LINE);
                 break;

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

@@ -79,11 +79,9 @@ public class TabsHelper {
      */
     private void nativeBack() {
         if (System.currentTimeMillis() - mLastBackTime < 1000) {
-
             KFZSApp.getInstance().quit();
         } else {
             ToastBuilder.make(activity.getApplicationContext(), R.string.toast_double_click_exit_app, ToastBuilder.DEFAULT_TOAST_SINGLE);
-            SysAppUtil.isNewSmallSheep(true);//不知什么原因,之前在弹出弹窗广告时的设置为true可能没有效果,这里再保存一次吧
         }
         mLastBackTime = System.currentTimeMillis();
     }

+ 67 - 0
app/src/main/java/com/sheep/gamegroup/helper/CustomRoundAngleImageView.java

@@ -0,0 +1,67 @@
+package com.sheep.gamegroup.helper;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Path;
+import android.os.Build;
+import android.support.v7.widget.AppCompatImageView;
+import android.util.AttributeSet;
+import android.view.View;
+
+/**
+ * created on:2018/9/5 on 21:22
+ * created by: YSL
+ * 描述:把Imageview设置四个radiu为12的圆角
+ */
+public class CustomRoundAngleImageView extends AppCompatImageView {
+    float width, height;
+
+    public CustomRoundAngleImageView(Context context) {
+        this(context, null);
+        init(context, null);
+    }
+
+    public CustomRoundAngleImageView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+        init(context, attrs);
+    }
+
+    public CustomRoundAngleImageView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context, attrs);
+    }
+
+    private void init(Context context, AttributeSet attrs) {
+        if (Build.VERSION.SDK_INT < 18) {
+            setLayerType(View.LAYER_TYPE_SOFTWARE, null);
+        }
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+        width = getWidth();
+        height = getHeight();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        if (width >= 12 && height > 12) {
+            Path path = new Path();
+            //四个圆角
+            path.moveTo(12, 0);
+            path.lineTo(width - 12, 0);
+            path.quadTo(width, 0, width, 12);
+            path.lineTo(width, height - 12);
+            path.quadTo(width, height, width - 12, height);
+            path.lineTo(12, height);
+            path.quadTo(0, height, 0, height - 12);
+            path.lineTo(0, 12);
+            path.quadTo(0, 0, 12, 0);
+
+            canvas.clipPath(path);
+        }
+        super.onDraw(canvas);
+    }
+
+}

+ 137 - 0
app/src/main/java/com/sheep/gamegroup/helper/DownloadUtil.java

@@ -0,0 +1,137 @@
+package com.sheep.gamegroup.helper;
+
+import android.os.Environment;
+import android.support.annotation.NonNull;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
+/**
+ * Created by free on 2018/9/5.
+ */
+
+public class DownloadUtil {
+
+    private static DownloadUtil downloadUtil;
+    private final OkHttpClient okHttpClient;
+
+    public static DownloadUtil get() {
+        if (downloadUtil == null) {
+            downloadUtil = new DownloadUtil();
+        }
+        return downloadUtil;
+    }
+
+    private DownloadUtil() {
+        okHttpClient = new OkHttpClient();
+    }
+
+    /**
+     * @param url 下载连接
+     * @param saveDir 储存下载文件的SDCard目录
+     * @param listener 下载监听
+     */
+    public void download(final String url, final String saveDir, final OnDownloadListener listener) {
+        Request request = new Request.Builder().url(url).build();
+        okHttpClient.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                // 下载失败
+                listener.onDownloadFailed();
+            }
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                InputStream is = null;
+                byte[] buf = new byte[2048];
+                int len = 0;
+                FileOutputStream fos = null;
+                // 储存下载文件的目录
+                String savePath = isExistDir(saveDir);
+                try {
+                    is = response.body().byteStream();
+                    long total = response.body().contentLength();
+                    File file = new File(savePath, getNameFromUrl(url));
+                    Log.i("aaaa",file.getName());
+                    fos = new FileOutputStream(file);
+                    long sum = 0;
+                    while ((len = is.read(buf)) != -1) {
+                        fos.write(buf, 0, len);
+                        sum += len;
+                        int progress = (int) (sum * 1.0f / total * 100);
+                        // 下载中
+                        listener.onDownloading(progress);
+                    }
+                    fos.flush();
+                    // 下载完成
+                    listener.onDownloadSuccess();
+                } catch (Exception e) {
+                    listener.onDownloadFailed();
+                } finally {
+                    try {
+                        if (is != null)
+                            is.close();
+                    } catch (IOException e) {
+                    }
+                    try {
+                        if (fos != null)
+                            fos.close();
+                    } catch (IOException e) {
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * @param saveDir
+     * @return
+     * @throws IOException
+     * 判断下载目录是否存在
+     */
+    private String isExistDir(String saveDir) throws IOException {
+        // 下载位置
+        File downloadFile = new File(Environment.getExternalStorageDirectory(), saveDir);
+        if (!downloadFile.mkdirs()) {
+            downloadFile.createNewFile();
+        }
+        String savePath = downloadFile.getAbsolutePath();
+        return savePath;
+    }
+
+    /**
+     * @param url
+     * @return
+     * 从下载连接中解析出文件名
+     */
+    @NonNull
+    private String getNameFromUrl(String url) {
+        return url.substring(url.lastIndexOf("/") + 1);
+    }
+
+    public interface OnDownloadListener {
+        /**
+         * 下载成功
+         */
+        void onDownloadSuccess();
+
+        /**
+         * @param progress
+         * 下载进度
+         */
+        void onDownloading(int progress);
+
+        /**
+         * 下载失败
+         */
+        void onDownloadFailed();
+    }
+}

+ 228 - 0
app/src/main/java/com/sheep/gamegroup/helper/ScalableCardHelper.java

@@ -0,0 +1,228 @@
+package com.sheep.gamegroup.helper;
+
+import android.graphics.Rect;
+import android.support.v7.widget.PagerSnapHelper;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.lang.ref.WeakReference;
+
+public class ScalableCardHelper {
+
+    private static final float STAY_SCALE = 0.8f;
+
+    private String TAG = "ScalableCardHelper";
+    private PagerSnapHelper snapHelper = new PagerSnapHelper();
+    private RecyclerView recyclerView;
+    private WeakReference<OnPageChangeListener> pageChangeListenerRef;
+
+    private RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
+
+        @Override
+        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
+            pageScrolled();
+        }
+    };
+
+
+    public ScalableCardHelper(OnPageChangeListener pageChangeListener) {
+        if(pageChangeListener != null)
+            this.pageChangeListenerRef = new WeakReference<>(pageChangeListener);
+    }
+
+
+  /*  public ScalableCardHelper( ) {
+        this(null);
+    }*/
+
+    private void pageScrolled() {
+        if (recyclerView == null || recyclerView.getChildCount() == 0)
+            return;
+
+        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
+
+        View snapingView = snapHelper.findSnapView(layoutManager);
+        int snapingViewPosition = recyclerView.getChildAdapterPosition(snapingView);
+        View leftSnapingView = layoutManager.findViewByPosition(snapingViewPosition - 1);
+        View rightSnapingView = layoutManager.findViewByPosition(snapingViewPosition + 1);
+
+
+        float leftSnapingOffset = calculateOffset(recyclerView, leftSnapingView);
+        float rightSnapingOffset = calculateOffset(recyclerView, rightSnapingView);
+        float currentSnapingOffset = calculateOffset(recyclerView, snapingView);
+
+        if (snapingView != null) {
+            snapingView.setScaleX(currentSnapingOffset);
+            snapingView.setScaleY(currentSnapingOffset);
+        }
+
+        if (leftSnapingView != null) {
+            leftSnapingView.setScaleX(leftSnapingOffset);
+            leftSnapingView.setScaleY(leftSnapingOffset);
+        }
+
+        if (rightSnapingView != null) {
+            rightSnapingView.setScaleX(rightSnapingOffset);
+            rightSnapingView.setScaleY(rightSnapingOffset);
+        }
+
+
+        if(snapingView != null && currentSnapingOffset >= 1){
+            OnPageChangeListener listener = pageChangeListenerRef != null ? pageChangeListenerRef.get(): null;
+            if(listener != null)
+                listener.onPageSelected(snapingViewPosition);
+        }
+
+        Log.d(TAG, String.format("left: %f, right: %f, current: %f", leftSnapingOffset, rightSnapingOffset, currentSnapingOffset));
+    }
+
+
+    public int getCurrentPage(){
+        View page = snapHelper.findSnapView(recyclerView.getLayoutManager());
+        if(page == null)
+            return -1;
+
+        return recyclerView.getChildAdapterPosition(page);
+    }
+
+
+    public void attachToRecyclerView(final RecyclerView recyclerView) {
+        this.recyclerView = recyclerView;
+        snapHelper.attachToRecyclerView(recyclerView);
+        recyclerView.addOnScrollListener(scrollListener);
+        recyclerView.addItemDecoration(new ScalableCardItemDecoration());
+        recyclerView.post(new Runnable() {
+            @Override
+            public void run() {
+                pageScrolled();
+            }
+        });
+    }
+
+    /**
+     * 通过计算{@code view}中间点与{@link RecyclerView}的中间点的距离,算出{@code view}的偏移量。
+     *
+     * @param view              view
+     * @return
+     */
+    private float calculateOffset(RecyclerView recyclerView, View view) {
+        if (view == null)
+            return -1;
+
+
+        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
+        boolean isVertical = layoutManager.canScrollVertically();
+        int viewStart = isVertical ? view.getTop() : view.getLeft();
+        int viewEnd = isVertical ? view.getBottom() : view.getRight();
+        int centerX = isVertical ? recyclerView.getHeight() / 2 : recyclerView.getWidth() / 2;
+        int childCenter = (viewStart + viewEnd) / 2;
+        int distance =   Math.abs(childCenter - centerX);
+
+        if (distance > centerX)
+            return STAY_SCALE;
+
+        float offset = 1.f - (distance / (float) centerX);
+        return (1.f - STAY_SCALE) * offset + STAY_SCALE;
+    }
+
+
+    public void detachFromRecyclerView(RecyclerView recyclerView) {
+        if (recyclerView != null)
+            recyclerView.removeOnScrollListener(scrollListener);
+        this.recyclerView = null;
+    }
+
+    public interface OnPageChangeListener{
+        void onPageSelected(int position);
+    }
+
+
+
+
+
+    public static int getPeekWidth(RecyclerView recyclerView, View itemView) {
+        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
+        boolean isVertical = layoutManager.canScrollVertically();
+        int position = recyclerView.getChildAdapterPosition(itemView);
+        //TODO RecyclerView使用wrap_content时,获取的宽度可能会是0。
+        int parentWidth = recyclerView.getMeasuredWidth();
+        int parentHeight = recyclerView.getMeasuredHeight(); //有时会拿到0
+        parentWidth = parentWidth == 0 ? recyclerView.getWidth() : parentWidth;
+        parentHeight = parentHeight == 0 ? recyclerView.getHeight() : parentHeight;
+        int parentEnd = isVertical ? parentHeight : parentWidth;
+        int parentCenter = parentEnd / 2;
+
+        int itemSize = isVertical ? itemView.getMeasuredHeight() : itemView.getMeasuredWidth();
+
+        if (itemSize == 0) {
+
+            ViewGroup.LayoutParams layoutParams = itemView.getLayoutParams();
+            int widthMeasureSpec =
+                    RecyclerView.LayoutManager.getChildMeasureSpec(parentWidth,
+                            layoutManager.getWidthMode(),
+                            recyclerView.getPaddingLeft() + recyclerView.getPaddingRight(),
+                            layoutParams.width, layoutManager.canScrollHorizontally());
+
+            int heightMeasureSpec =
+                    RecyclerView.LayoutManager.getChildMeasureSpec(parentHeight,
+                            layoutManager.getHeightMode(),
+                            recyclerView.getPaddingTop() + recyclerView.getPaddingBottom(),
+                            layoutParams.height, layoutManager.canScrollVertically());
+
+
+            itemView.measure(widthMeasureSpec, heightMeasureSpec);
+            itemSize = isVertical ? itemView.getMeasuredHeight() : itemView.getMeasuredWidth();
+        }
+
+
+        /*
+            计算ItemDecoration的大小,确保插入的大小正好使view的start + itemSize / 2等于parentCenter。
+         */
+        int startOffset = parentCenter - itemSize / 2;
+        int endOffset = parentEnd - (startOffset + itemSize);
+
+        return position == 0 ? startOffset : endOffset;
+    }
+
+
+    private static class ScalableCardItemDecoration extends RecyclerView.ItemDecoration {
+
+
+        @Override
+        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+            RecyclerView.ViewHolder holder = parent.getChildViewHolder(view);
+            int position = holder.getAdapterPosition() == RecyclerView.NO_POSITION ? holder.getOldPosition() : holder.getAdapterPosition();
+            RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
+            int itemCount = layoutManager.getItemCount();
+
+            if(position != 0 && position != itemCount - 1){
+                return;
+            }
+
+            int peekWidth = getPeekWidth(parent, view);
+            boolean isVertical = layoutManager.canScrollVertically();
+            //移除item时adapter position为-1。
+
+            if (isVertical) {
+                if (position == 0) {
+                    outRect.set(0, peekWidth, 0, 0);
+                } else if (position == itemCount - 1) {
+                    outRect.set(0, 0, 0, peekWidth);
+                } else {
+                    outRect.set(0, 0, 0, 0);
+                }
+            } else {
+                if (position == 0) {
+                    outRect.set(peekWidth, 0, 0, 0);
+                } else if (position == itemCount - 1) {
+                    outRect.set(0, 0, peekWidth, 0);
+                } else {
+                    outRect.set(0, 0, 0, 0);
+                }
+            }
+        }
+    }
+
+}

+ 99 - 0
app/src/main/java/com/sheep/gamegroup/helper/ZXingHelper.java

@@ -0,0 +1,99 @@
+package com.sheep.gamegroup.helper;
+
+import android.graphics.Bitmap;
+import android.graphics.Matrix;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+import java.util.Hashtable;
+
+/**
+ * created on:2018/9/5 on 17:46
+ * created by: YSL
+ * 描述:二维码生成
+ */
+public class ZXingHelper {
+    private static int IMAGE_HALFWIDTH = 50;//宽度值,影响中间图片大小
+    /**
+     * 生成带logo的二维码,默认二维码的大小为500,logo为二维码的1/5
+     *
+     * @param text    需要生成二维码的文字、网址等
+     * @param mBitmap logo文件
+     * @return bitmap
+     */
+    public static Bitmap createQRCodeWithLogo(String text, Bitmap mBitmap) {
+        return createQRCodeWithLogo(text, 500, mBitmap);
+    }
+    /**
+     * 生成带logo的二维码,logo默认为二维码的1/5
+     *
+     * @param text    需要生成二维码的文字、网址等
+     * @param size    需要生成二维码的大小()
+     * @param mBitmap logo文件
+     * @return bitmap
+     */
+    public static Bitmap createQRCodeWithLogo(String text, int size, Bitmap mBitmap) {
+        try {
+            IMAGE_HALFWIDTH = size / 10;
+            Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
+            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
+            /*
+             * 设置容错级别,默认为ErrorCorrectionLevel.L
+             * 因为中间加入logo所以建议你把容错级别调至H,否则可能会出现识别不了
+             */
+            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+            //设置空白边距的宽度
+            hints.put(EncodeHintType.MARGIN, 1); //default is 4
+            // 图像数据转换,使用了矩阵转换
+            BitMatrix bitMatrix = new QRCodeWriter().encode(text,
+                    BarcodeFormat.QR_CODE, size, size, hints);
+
+            int width = bitMatrix.getWidth();//矩阵高度
+            int height = bitMatrix.getHeight();//矩阵宽度
+            int halfW = width / 2;
+            int halfH = height / 2;
+
+            Matrix m = new Matrix();
+            float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();
+            float sy = (float) 2 * IMAGE_HALFWIDTH
+                    / mBitmap.getHeight();
+            m.setScale(sx, sy);
+            //设置缩放信息
+            //将logo图片按martix设置的信息缩放
+            mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,
+                    mBitmap.getWidth(), mBitmap.getHeight(), m, false);
+
+            int[] pixels = new int[size * size];
+            for (int y = 0; y < size; y++) {
+                for (int x = 0; x < size; x++) {
+                    if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH
+                            && y > halfH - IMAGE_HALFWIDTH
+                            && y < halfH + IMAGE_HALFWIDTH) {
+                        //该位置用于存放图片信息
+                        //记录图片每个像素信息
+                        pixels[y * width + x] = mBitmap.getPixel(x - halfW
+                                + IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH);
+                    } else {
+                        if (bitMatrix.get(x, y)) {
+                            pixels[y * size + x] = 0xff000000;
+                        } else {
+                            pixels[y * size + x] = 0xffffffff;
+                        }
+                    }
+                }
+            }
+            Bitmap bitmap = Bitmap.createBitmap(size, size,
+                    Bitmap.Config.ARGB_8888);
+            bitmap.setPixels(pixels, 0, size, 0, 0, size, size);
+            return bitmap;
+        } catch (WriterException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+}

+ 19 - 5
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -58,25 +58,33 @@ public interface ApiService {
     Observable<BaseMessage> getMessageReply(@Query("page") int page, @Query("per_page") int per_page);
 
     /**
-     * @param id  回复互动id
+     * @param id 回复互动id
      * @return 回复互动详情
      */
     @GET("app/message/system_message/{id}")
     Observable<BaseMessage> getMessageReplyItem(@Path("id") String id);
 
     /**
-     * @param id  系统消息id
+     * @param id 系统消息id
      * @return 消息中心详情
      */
     @GET("app/message/system_notification/{id}")
     Observable<BaseMessage> getMessageCenterItem(@Path("id") String id);
 
     /**
-     * @return  获取未读消息条数 返回 0 或者 未读数量 大于零则有未读
+     * @return 获取未读消息条数 返回 0 或者 未读数量 大于零则有未读
      * 获取未读消息条数
      */
-    @GET("app/message/system_message/no_read_num")
-    Observable<BaseMessage>getMessageUnReadNum();
+    @GET("app/message/system_message/no_read_num/")
+    Observable<BaseMessage> getMessageUnReadNum();
+
+    /**
+     * 获取邀请图片列表
+     *
+     * @return
+     */
+    @GET("app/user/promotions/")
+    Observable<BaseMessage> getSharePicture();
 
     /**
      * @return ,
@@ -899,11 +907,13 @@ public interface ApiService {
      */
     @GET("app/gift_bag")
     Observable<BaseMessage> getGiftBagList(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 我的福利——我的礼包
      */
     @GET("app/gift_bag/my_gift_bag")
     Observable<BaseMessage> getMyGiftBagList(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 领取礼包
      */
@@ -914,21 +924,25 @@ public interface ApiService {
      */
     @GET("app/release_task/hot_welfare")
     Observable<BaseMessage> getHotWelfareList(/*@Query("page") int page, @Query("per_page") int per_page*/);
+
     /**
      * 下载福利
      */
     @GET("app/release_task/down_welfare")
     Observable<BaseMessage> getDownWelfareList(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 我的福利——下载福利
      */
     @GET("app/game_consumption/my_voucher")
     Observable<BaseMessage> getMyWelfareList(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 我的福利——使用记录
      */
     @GET("app/game_consumption/voucher_use_log")
     Observable<BaseMessage> getMyWelfareLogList(@Query("page") int page, @Query("per_page") int per_page);
+
     /**
      * 绑定qq或微信
      */

+ 143 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/MessageCenterDetailEntity.java

@@ -0,0 +1,143 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * created on:2018/9/5 on 14:07
+ * created by: YSL
+ * 描述:消息中心详情
+ */
+public class MessageCenterDetailEntity {
+
+    /**
+     * Id : 0
+     * abstracts : string
+     * content : string
+     * created_at : 0
+     * is_look : 0
+     * platform : 0
+     * recipient : 0
+     * recipient_invitation_code : string
+     * send_time : 0
+     * send_type : 0
+     * title : string
+     * type : 0
+     * updated_at : 0
+     */
+
+    private int Id;
+    private String abstracts;
+    private String content;
+    private int created_at;
+    private int is_look;
+    private int platform;
+    private int recipient;
+    private String recipient_invitation_code;
+    private int send_time;
+    private int send_type;
+    private String title;
+    private int type;
+    private int updated_at;
+
+    public int getId() {
+        return Id;
+    }
+
+    public void setId(int Id) {
+        this.Id = Id;
+    }
+
+    public String getAbstracts() {
+        return abstracts;
+    }
+
+    public void setAbstracts(String abstracts) {
+        this.abstracts = abstracts;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getCreated_at() {
+        return created_at;
+    }
+
+    public void setCreated_at(int created_at) {
+        this.created_at = created_at;
+    }
+
+    public int getIs_look() {
+        return is_look;
+    }
+
+    public void setIs_look(int is_look) {
+        this.is_look = is_look;
+    }
+
+    public int getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(int platform) {
+        this.platform = platform;
+    }
+
+    public int getRecipient() {
+        return recipient;
+    }
+
+    public void setRecipient(int recipient) {
+        this.recipient = recipient;
+    }
+
+    public String getRecipient_invitation_code() {
+        return recipient_invitation_code;
+    }
+
+    public void setRecipient_invitation_code(String recipient_invitation_code) {
+        this.recipient_invitation_code = recipient_invitation_code;
+    }
+
+    public int getSend_time() {
+        return send_time;
+    }
+
+    public void setSend_time(int send_time) {
+        this.send_time = send_time;
+    }
+
+    public int getSend_type() {
+        return send_type;
+    }
+
+    public void setSend_type(int send_type) {
+        this.send_type = send_type;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public int getUpdated_at() {
+        return updated_at;
+    }
+
+    public void setUpdated_at(int updated_at) {
+        this.updated_at = updated_at;
+    }
+}

+ 123 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/MessageReplyDetailEntity.java

@@ -0,0 +1,123 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * created on:2018/9/5 on 14:26
+ * created by: YSL
+ * 描述:
+ */
+public class MessageReplyDetailEntity {
+
+    /**
+     * user_feedback_id : 41
+     * faq_feedback_id : 0
+     * title : 用户反馈
+     * id : 9
+     * user_contet : 就
+     * created_at : 1536112184
+     * user_create_time : 1536112165
+     * is_look : 1
+     * content : 1111111111111111111111111111
+     * type : 2
+     * user_id : 63033
+     */
+
+    private int user_feedback_id;
+    private int faq_feedback_id;
+    private String title;
+    private int id;
+    private String user_contet;
+    private int created_at;
+    private int user_create_time;
+    private int is_look;
+    private String content;
+    private int type;
+    private int user_id;
+
+    public int getUser_feedback_id() {
+        return user_feedback_id;
+    }
+
+    public void setUser_feedback_id(int user_feedback_id) {
+        this.user_feedback_id = user_feedback_id;
+    }
+
+    public int getFaq_feedback_id() {
+        return faq_feedback_id;
+    }
+
+    public void setFaq_feedback_id(int faq_feedback_id) {
+        this.faq_feedback_id = faq_feedback_id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getUser_contet() {
+        return user_contet;
+    }
+
+    public void setUser_contet(String user_contet) {
+        this.user_contet = user_contet;
+    }
+
+    public int getCreated_at() {
+        return created_at;
+    }
+
+    public void setCreated_at(int created_at) {
+        this.created_at = created_at;
+    }
+
+    public int getUser_create_time() {
+        return user_create_time;
+    }
+
+    public void setUser_create_time(int user_create_time) {
+        this.user_create_time = user_create_time;
+    }
+
+    public int getIs_look() {
+        return is_look;
+    }
+
+    public void setIs_look(int is_look) {
+        this.is_look = is_look;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public int getUser_id() {
+        return user_id;
+    }
+
+    public void setUser_id(int user_id) {
+        this.user_id = user_id;
+    }
+}

+ 125 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/MessageUserFeedbackEntity.java

@@ -0,0 +1,125 @@
+package com.sheep.gamegroup.model.entity;
+
+import java.io.Serializable;
+
+/**
+ * created on:2018/9/4 on 9:57
+ * created by: YSL
+ * 描述:
+ */
+public class MessageUserFeedbackEntity implements Serializable{
+
+    /**
+     * user_feedback_id : 39
+     * faq_feedback_id : 0
+     * title : 用户反馈
+     * id : 3
+     * user_contet : 哈哈哈
+     * created_at : 1535507567
+     * user_create_time : 1535449387
+     * is_look : 1
+     * content : 123
+     * type : 2
+     * user_id : 63075
+     */
+
+    private int user_feedback_id;
+    private int faq_feedback_id;
+    private String title;
+    private int id;
+    private String user_contet;
+    private int created_at;
+    private int user_create_time;
+    private int is_look;
+    private String content;
+    private int type;
+    private int user_id;
+
+    public int getUser_feedback_id() {
+        return user_feedback_id;
+    }
+
+    public void setUser_feedback_id(int user_feedback_id) {
+        this.user_feedback_id = user_feedback_id;
+    }
+
+    public int getFaq_feedback_id() {
+        return faq_feedback_id;
+    }
+
+    public void setFaq_feedback_id(int faq_feedback_id) {
+        this.faq_feedback_id = faq_feedback_id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getUser_contet() {
+        return user_contet;
+    }
+
+    public void setUser_contet(String user_contet) {
+        this.user_contet = user_contet;
+    }
+
+    public int getCreated_at() {
+        return created_at;
+    }
+
+    public void setCreated_at(int created_at) {
+        this.created_at = created_at;
+    }
+
+    public int getUser_create_time() {
+        return user_create_time;
+    }
+
+    public void setUser_create_time(int user_create_time) {
+        this.user_create_time = user_create_time;
+    }
+
+    public int getIs_look() {
+        return is_look;
+    }
+
+    public void setIs_look(int is_look) {
+        this.is_look = is_look;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public int getUser_id() {
+        return user_id;
+    }
+
+    public void setUser_id(int user_id) {
+        this.user_id = user_id;
+    }
+}

+ 172 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/PictureInvitationEntity.java

@@ -0,0 +1,172 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * created on:2018/9/4 on 10:54
+ * created by: YSL
+ * 描述:
+ */
+public class PictureInvitationEntity {
+
+    /**
+     * click_count : 0
+     * created_at : string
+     * flag : string
+     * id : 0
+     * link : string
+     * name : string
+     * picture : string
+     * register_count : 0
+     * remark : string
+     * share_count : 0
+     * status : 0
+     * type : 0
+     * updated_at : string
+     */
+    /**
+     * 点击数量
+     */
+    private int click_count;
+    /**
+     *
+     */
+    private String created_at;
+    /**
+     * 唯一code
+     */
+    private String flag;
+    private int id;
+    /**
+     * 推广的二维码链接
+     */
+    private String link;
+    private String name;
+    /**
+     * 二维码背景图片
+     */
+    private String picture;
+    /**
+     * 注册数量
+     */
+    private int register_count;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 分享数量
+     */
+    private int share_count;
+    /**
+     * 1:开启 2:关闭
+     */
+    private int status;
+    /**
+     * 1:APP推广 2:广告商
+     */
+    private int type;
+    private String updated_at;
+
+    public int getClick_count() {
+        return click_count;
+    }
+
+    public void setClick_count(int click_count) {
+        this.click_count = click_count;
+    }
+
+    public String getCreated_at() {
+        return created_at;
+    }
+
+    public void setCreated_at(String created_at) {
+        this.created_at = created_at;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPicture() {
+        return picture;
+    }
+
+    public void setPicture(String picture) {
+        this.picture = picture;
+    }
+
+    public int getRegister_count() {
+        return register_count;
+    }
+
+    public void setRegister_count(int register_count) {
+        this.register_count = register_count;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public int getShare_count() {
+        return share_count;
+    }
+
+    public void setShare_count(int share_count) {
+        this.share_count = share_count;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getUpdated_at() {
+        return updated_at;
+    }
+
+    public void setUpdated_at(String updated_at) {
+        this.updated_at = updated_at;
+    }
+}

+ 33 - 25
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -763,12 +763,13 @@ public class CommonUtil {
         s = null;
         timerHashMap.clear();
     }
+
     /**
-     *
      * 分享
+     *
      * @param activity
      * @param url
-     * @param type qq wx all
+     * @param type        qq wx all
      * @param description
      */
     public void popShare(Activity activity, final String url, @DialogShare.SHARE_TYPE String type, String description) {
@@ -808,6 +809,9 @@ public class CommonUtil {
                 share_media = SHARE_MEDIA.WEIXIN_CIRCLE;
                 break;
         }
+        if (type == DialogShare.QQ) {
+            UMImage umImage = new UMImage(activity, R.mipmap.icon);
+        }
         UMImage umImage = new UMImage(activity, R.mipmap.icon);
         UMWeb umWeb = new UMWeb(realUrl);
         umWeb.setTitle(activity.getResources().getString(R.string.app_name));
@@ -822,6 +826,7 @@ public class CommonUtil {
 
     /**
      * 分享
+     *
      * @param activity
      * @param url
      * @param type
@@ -830,7 +835,7 @@ public class CommonUtil {
         popShare(activity, url, type, null);
     }
 
-    class UMShareListener implements com.umeng.socialize.UMShareListener {
+   public static class UMShareListener implements com.umeng.socialize.UMShareListener {
 
         @Override
         public void onStart(SHARE_MEDIA share_media) {
@@ -845,7 +850,7 @@ public class CommonUtil {
         @Override
         public void onError(SHARE_MEDIA share_media, Throwable throwable) {
             String msg = throwable.getMessage();
-            G.showToast(msg != null && msg.contains("没有安装应用") ? "没有安装应用": msg);
+            G.showToast(msg != null && msg.contains("没有安装应用") ? "没有安装应用" : msg);
             LogUtil.println("UMShareListener", "error", share_media.getName() +
                     ",msg:" + throwable.getMessage());
         }
@@ -922,13 +927,13 @@ public class CommonUtil {
                     .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
                         @Override
                         public void onError(BaseMessage baseMessage) {
-                            if(action1 != null)
+                            if (action1 != null)
                                 action1.call(null);
                         }
 
                         @Override
                         public void onNext(BaseMessage baseMessage) {
-                            if(action1 != null){
+                            if (action1 != null) {
                                 if (name == null) {
                                     return;
                                 }
@@ -944,7 +949,7 @@ public class CommonUtil {
                     });
         } else {
             String url = url_config.getString(name);
-            if(action1 != null)
+            if (action1 != null)
                 action1.call(url);
         }
     }
@@ -1616,14 +1621,14 @@ public class CommonUtil {
                 return;
             }
             if (NetUtil.isConnected(SheepApp.getInstance())) {
-                if(isNetImg){
+                if (isNetImg) {
                     GlideImageLoader.setImage(empty_view_img, ViewUtil.getNetImgByName("wushuju"));
                 } else {
                     empty_view_img.setImageResource(R.mipmap.wushuju);
                 }
                 empty_view_msg.setText(R.string.wushuju);
             } else {
-                if(isNetImg){
+                if (isNetImg) {
                     GlideImageLoader.setImage(empty_view_img, ViewUtil.getNetImgByName("wushuju_net_error"));
                 } else {
                     empty_view_img.setImageResource(R.mipmap.wushuju_net_error);
@@ -1778,8 +1783,8 @@ public class CommonUtil {
     /**
      * 分享 url type 拼接
      */
-    public String jointString(String url,@DialogShare.SHARE_TYPE String type) {
-        if(url.contains("&type="))
+    public String jointString(String url, @DialogShare.SHARE_TYPE String type) {
+        if (url.contains("&type="))
             return url;
         switch (type) {
             case "qq":
@@ -1794,7 +1799,7 @@ public class CommonUtil {
     /**
      * js 下载
      */
-    public void showDownLoad(final Activity activity, String url, final String name){
+    public void showDownLoad(final Activity activity, String url, final String name) {
         OkHttpUtils.get()
                 .url(url)
                 .build()
@@ -1816,10 +1821,11 @@ public class CommonUtil {
                     }
                 });
     }
+
     /**
      * 获取用户未做任务金额
      */
-    public void getUserNoDoingTaskMoney(final Action1<BaseMessage> action1){
+    public void getUserNoDoingTaskMoney(final Action1<BaseMessage> action1) {
 
         SheepApp.getInstance().getNetComponent().getApiService().getCanREceiveAwar()
                 .subscribeOn(Schedulers.io())
@@ -1844,7 +1850,7 @@ public class CommonUtil {
     /**
      * 任务审核
      */
-    public void staticAudit(final Action1<BaseMessage> action1){
+    public void staticAudit(final Action1<BaseMessage> action1) {
 
         SheepApp.getInstance().getNetComponent().getApiService().staticAudit()
                 .subscribeOn(Schedulers.io())
@@ -1869,7 +1875,7 @@ public class CommonUtil {
     /**
      * 获取任务记录列表
      */
-    public void getAudit(final Action1<BaseMessage> action1,int page, int pre_page, int type){
+    public void getAudit(final Action1<BaseMessage> action1, int page, int pre_page, int type) {
         SheepApp.getInstance().getNetComponent().getApiService().acceptedTask(page, pre_page, type)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -1906,6 +1912,7 @@ public class CommonUtil {
 
     /**
      * 设置游戏标识文本,如:现金,福利
+     *
      * @param textView
      * @param taskReleaseEty
      */
@@ -1915,21 +1922,21 @@ public class CommonUtil {
         textView.setBackgroundResource(R.drawable.shape_red_stroke_rectangle_no_lb);
         textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
         int padding = textView.getContext().getResources().getDimensionPixelSize(R.dimen.content_padding_2);
-        textView.setPadding(4*padding, padding, 4*padding, padding);
+        textView.setPadding(4 * padding, padding, 4 * padding, padding);
     }
 
     /**
      * 唤醒业务打开app内容成功后回调
      */
-    public void awakenDetail(RouserArticlesEntity item){
-        long longTime = AppUsageManager.getInstance().getAppLastUseTime(item.getPackage_name(),0);
+    public void awakenDetail(RouserArticlesEntity item) {
+        long longTime = AppUsageManager.getInstance().getAppLastUseTime(item.getPackage_name(), 0);
         int status = 2;
-        if(longTime <= 0){
+        if (longTime <= 0) {
             status = 1;
-        }else {
-            for(int i=0;i<31;i++){
-                if(item.getType() == i){
-                    if (System.currentTimeMillis() - i * 24 * 60 * 60 * 1000 >longTime) {
+        } else {
+            for (int i = 0; i < 31; i++) {
+                if (item.getType() == i) {
+                    if (System.currentTimeMillis() - i * 24 * 60 * 60 * 1000 > longTime) {
                         status = 2;
                     } else {
                         status = 1;
@@ -1941,7 +1948,7 @@ public class CommonUtil {
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("awaken_articles_id", item.getId());
         jsonObject.put("invitation_code", DataUtil.getInstance().getInvitationCode());
-        jsonObject.put("status",status);
+        jsonObject.put("status", status);
         SheepApp.getInstance().getNetComponent().getApiService().awakenDetail(jsonObject)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -1957,8 +1964,9 @@ public class CommonUtil {
                     }
                 });
     }
+
     public void clickBanner(Activity activity, int position, List<SlideshowEty> slideshowEtyLists) {
-        SlideshowEty clickedGameObj =  ListUtil.getItem(slideshowEtyLists, position);
+        SlideshowEty clickedGameObj = ListUtil.getItem(slideshowEtyLists, position);
         if (clickedGameObj == null) {
             return;
         }

+ 19 - 34
app/src/main/java/com/sheep/gamegroup/util/DataUtil.java

@@ -411,39 +411,24 @@ public class DataUtil {
                 });
 
     }
-//    //正在运行的任务
-//    List<TaskAcceptedEty> taskAcceptedEtyList = ListUtil.emptyList();
-//    public void addTaskAcceptedEtyList(List<TaskAcceptedEty> list) {
-//        isInitTaskAcceptedList = true;
-//        taskAcceptedEtyList.clear();
-//        taskAcceptedEtyList.addAll(list);
-//        LogUtil.println("DataUtil", "taskAcceptedEtyList", taskAcceptedEtyList.size());
-//    }
-//
-//    /**
-//     * 通过包名从内存中正在运行的任务列表中获取正在运行的任务
-//     * @param pacageName
-//     * @return
-//     */
-//    public TaskAcceptedEty getTaskAcceptedEtyFromPackageName(String pacageName) {
-//        if(!TextUtils.isEmpty(pacageName))
-//            for (TaskAcceptedEty taskAcceptedEty : taskAcceptedEtyList) {
-//                if(taskAcceptedEty != null && taskAcceptedEty.getRelease_task() != null && taskAcceptedEty.getRelease_task().getTask() != null
-//                        && TextUtils.equals(taskAcceptedEty.getRelease_task().getTask().getPackage_names(), pacageName)){
-//                    return taskAcceptedEty;
-//                }
-//            }
-//        return null;
-//    }
-//
-//    private boolean isInitTaskAcceptedList = false;
-//
-//    public boolean isInitTaskAcceptedList() {
-//        return isInitTaskAcceptedList;
-//    }
-//
-//    public List<TaskAcceptedEty> getTaskAcceptedEtyList() {
-//        return taskAcceptedEtyList;
-//    }
+
     //-----------------------------------------其它数据部分-----------------------------------------------------结束
+    //-----------------------------------------引导页中用到的是否为新版部分-----------------------------------------------------开始
+    private int versionType = 0;
+    public boolean notInitVersion() {
+        return versionType == 0;
+    }
+
+    public void setIsNewSmallSheep(boolean isNewSmallSheep) {
+        versionType = isNewSmallSheep ? 1 : 2;
+    }
+
+    public boolean isNewSmallSheep() {
+        return versionType == 1;
+    }
+    public void resetIsNewSmallSheep() {
+        versionType = 0;
+    }
+
+    //-----------------------------------------引导页中用到的是否为新版部分-----------------------------------------------------结束
 }

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

@@ -5,6 +5,7 @@ import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.net.Uri;
 import android.text.TextUtils;
+import android.util.Log;
 import android.widget.ImageView;
 
 import com.bumptech.glide.Glide;
@@ -108,6 +109,7 @@ public class GlideImageLoader {
      * @param w
      */
     public static void saveAndSetRqImage(final ImageView imageView, String link, int w) {
+        LogUtil.logI("二维码链接-----"+link);
         String fileName = String.format(Locale.CHINA, "%d.png", link.hashCode());
         File file = new File(ClassFileHelper.DIR, fileName);
         if(!file.exists()){

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

@@ -1182,7 +1182,7 @@ public class Jump2View {
     }
 
     public void gotoGuide(final Activity activity) {
-        if(SysAppUtil.isNewSmallSheep(false)){
+        if(SysAppUtil.isNewSmallSheep()){
             Intent intent = new Intent(activity, ActGuide.class);
             activity.startActivity(intent);
             activity.finish();
@@ -1202,7 +1202,7 @@ public class Jump2View {
     }
 
     public void tryShowHalfScreenAd(final Activity activity, final Container<Action1<Integer>> container) {
-        if(SysAppUtil.isNewSmallSheep(true)){//新版本只显示引导页面,不展示弹窗和开屏广告
+        if(SysAppUtil.isNewSmallSheep()){//新版本只显示引导页面,不展示弹窗和开屏广告
             return;
         }
         SheepApp.getInstance().getNetComponent().getApiService().getAdvertising(2)

+ 8 - 6
app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java

@@ -114,17 +114,19 @@ public class SysAppUtil {
 
     /**
      * 是否第一次运行新的小绵羊
-     * @param isSetNew 是否保存最新版本号,清除数据后保存的数据无效(注:有且只有最后一步操作要设置其为true)
      * @return
      */
-    public static boolean isNewSmallSheep(boolean isSetNew) {
-        int version_code = ForeverCacheUtil.getInstance().getVersionCode();
-        int cur_version_code = ApkUtils.getCurrentPkgVersionCode(SheepApp.getInstance());
-        if(isSetNew)
+    public static boolean isNewSmallSheep() {
+        if(DataUtil.getInstance().notInitVersion()){
+            int version_code = ForeverCacheUtil.getInstance().getVersionCode();
+            int cur_version_code = 3000005;//要想发新版本后让用户显示引导页面,就直接修改为一个更大的值
             ForeverCacheUtil.getInstance().saveVersionCode(cur_version_code);
-        return version_code < cur_version_code
+            boolean isNewSmallSheep = version_code != cur_version_code
 //                || BuildConfig.DEBUG
                 ;
+            DataUtil.getInstance().setIsNewSmallSheep(isNewSmallSheep);
+        }
+        return DataUtil.getInstance().isNewSmallSheep();
     }
 
     public static void clearCache(final Action1<Object> action1) {

+ 52 - 95
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -22,6 +22,7 @@ import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.OrientationHelper;
 import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.TextUtils;
@@ -67,6 +68,7 @@ import com.sheep.gamegroup.model.entity.GiftBag;
 import com.sheep.gamegroup.model.entity.GiftBagApp;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
 import com.sheep.gamegroup.model.entity.PayEntity;
+import com.sheep.gamegroup.model.entity.PictureInvitationEntity;
 import com.sheep.gamegroup.model.entity.RobTask;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
@@ -75,6 +77,7 @@ import com.sheep.gamegroup.view.activity.PersonalInfoAct;
 import com.sheep.gamegroup.view.activity.SplashAct;
 import com.sheep.gamegroup.view.activity.TaskDetailAct;
 import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
+import com.sheep.gamegroup.view.adapter.InvitationPictureAdapter;
 import com.sheep.gamegroup.view.dialog.DialogAddAccount;
 import com.sheep.gamegroup.view.dialog.DialogModifyAccount;
 import com.sheep.gamegroup.view.dialog.DialogOrienteeringDetails;
@@ -100,6 +103,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
 
+import rx.Scheduler;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
 import rx.schedulers.Schedulers;
@@ -226,15 +230,11 @@ public class ViewUtil {
                     public void onNext(BaseMessage baseMessage) {
                         try {
                             mRobTask = baseMessage.getData(RobTask.class);
-                            LogUtil.logI(SpUtils.getOrder("order") + "保存后的order");
                             SpUtils.saveOrder("order", mRobTask.getOrder());
-                            LogUtil.logI("---mRobTask" + new Gson().toJson(mRobTask));
-                            LogUtil.logI("---" + new Gson().toJson(baseMessage));
                             tvDutyMoney.setText(mRobTask.getM().getBonus() + "元");//设置任务奖励金额
                             tvTitel.setText(mRobTask.getM().getTask().getTask_name());//设置任务名字
                             GlideImageLoader.setImage(ivIcon, mRobTask.getM().getTask().getIcon());//设置任务图标
                         } catch (Exception e) {
-
                         }
                     }
 
@@ -374,7 +374,7 @@ public class ViewUtil {
             public boolean onLongClick(View view) {
                 // 获取系统剪贴板
                 ClipboardManager clipboard = (ClipboardManager) mActivity.getSystemService(Context.CLIPBOARD_SERVICE);
-               // 获取剪贴板的剪贴数据集
+                // 获取剪贴板的剪贴数据集
                 ClipData clipData = clipboard.getPrimaryClip();
 
                 if (clipData != null && clipData.getItemCount() > 0) {
@@ -482,30 +482,58 @@ public class ViewUtil {
     }
 
     public static View setBottomLine(final XRecyclerView view_list) {
+        return setBottomLine(view_list, null);
+    }
+
+    public static View setBottomLine(final XRecyclerView view_list, final Action1<String> action1) {
         View view = LayoutInflater.from(SheepApp.getInstance()).inflate(R.layout.common_foot_view, null);
         view_list.setFootView(view, new CustomFooterViewCallBack() {
             @Override
             public void onLoadingMore(View yourFooterView) {
-                TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
-                bottom_line_text.setText("羊羊努力加载中...");
+                if(action1 != null) {
+                    action1.call("onLoadingMore");
+                } else {
+                    TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
+                    bottom_line_text.setText("羊羊努力加载中...");
+                }
             }
 
             @Override
             public void onLoadMoreComplete(View yourFooterView) {
-                TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
-                bottom_line_text.setText("加载完成");
+                if(action1 != null) {
+                    action1.call("onLoadMoreComplete");
+                } else {
+                    TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
+                    bottom_line_text.setText(canScrollToTop() ? "加载完成,点击我回到顶部" : "加载完成");
+                    yourFooterView.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            if(canScrollToTop())
+                                view_list.scrollToPosition(0);
+                        }
+                    });
+                }
             }
 
             @Override
             public void onSetNoMore(View yourFooterView, boolean noMore) {
-                TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
-                bottom_line_text.setText(canScrollToTop() ? "我是有底线的,点击我回到顶部" : "我是有底线的");
-                yourFooterView.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        view_list.scrollToPosition(0);
-                    }
-                });
+                if(action1 != null) {
+                    action1.call("onSetNoMore");
+                } else {
+                    yourFooterView.setVisibility(isEmpty() ? View.GONE : View.VISIBLE);
+                    TextView bottom_line_text = yourFooterView.findViewById(R.id.bottom_line_text);
+                    bottom_line_text.setText(canScrollToTop() ? "我是有底线的,点击我回到顶部" : "我是有底线的");
+                    yourFooterView.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            if(canScrollToTop())
+                                view_list.scrollToPosition(0);
+                        }
+                    });
+                }
+            }
+            private boolean isEmpty(){
+                return view_list.getAdapter().getItemCount() == 0;
             }
             private boolean canScrollToTop(){
                 return view_list.getAdapter().getItemCount() > 10;
@@ -1348,78 +1376,6 @@ public class ViewUtil {
 
     }
 
-    /**
-     * 初始化画廊
-     *
-     * @param mRecyclerView ,recycleView
-     * @param mBlurView     显示的ImageView
-     * @param mList         图片文件地址集合,
-     * @param context       。。。
-     */
-    private static void init(SpeedRecyclerView mRecyclerView, ImageView mBlurView, List<Integer> mList, Context context) {
-        if (mList == null) {
-            mList = new ArrayList<>();
-        }
-        for (int i = 0; i < 10; i++) {
-            mList.add(R.drawable.kaipin);
-            mList.add(R.drawable.kaipin);
-            mList.add(R.drawable.kaipin);
-        }
-
-        final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
-        mRecyclerView.setLayoutManager(linearLayoutManager);
-        mRecyclerView.setAdapter(new CardAdapter(mList));
-        // mRecyclerView绑定scale效果
-        mCardScaleHelper.setCurrentItemPos(2);
-        mCardScaleHelper.attachToRecyclerView(mRecyclerView);
-
-        initBlurBackground(mBlurView, mRecyclerView, mList, context);
-    }
-
-    /**
-     * 给画廊设置背景
-     *
-     * @param mBlurView
-     * @param mRecyclerView
-     * @param mList
-     * @param context
-     */
-    private static void initBlurBackground(ImageView mBlurView, RecyclerView mRecyclerView, final List<Integer> mList, final Context context) {
-        final ImageView finalMBlurView = mBlurView;
-        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
-            @Override
-            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-                super.onScrollStateChanged(recyclerView, newState);
-                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
-                    notifyBackgroundChange(finalMBlurView, mList, context);
-                }
-            }
-        });
-
-        notifyBackgroundChange(mBlurView, mList, context);
-    }
-
-    /**
-     * 检测画廊图片变化
-     *
-     * @param mBlurView
-     * @param mList
-     * @param context
-     */
-    private static void notifyBackgroundChange(final ImageView mBlurView, List<Integer> mList, final Context context) {
-        if (mLastPos == mCardScaleHelper.getCurrentItemPos()) return;
-        mLastPos = mCardScaleHelper.getCurrentItemPos();
-        final int resId = mList.get(mCardScaleHelper.getCurrentItemPos());
-        mBlurView.removeCallbacks(mBlurRunnable);
-        mBlurRunnable = new Runnable() {
-            @Override
-            public void run() {
-                Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resId);
-                ViewSwitchUtils.startSwitchBackgroundAnim(mBlurView, BlurBitmapUtils.getBlurBitmap(mBlurView.getContext(), bitmap, 15));
-            }
-        };
-        mBlurView.postDelayed(mBlurRunnable, 500);
-    }
 
     /**
      * 添加游戏账户
@@ -1429,7 +1385,7 @@ 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);
+        View dialog_parent = View.inflate(activity, R.layout.activity_invitation, null);
         final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.AppTheme_Dialog_Alert)
                 .setView(dialog_parent).setCancelable(true)
                 .create();
@@ -1441,11 +1397,12 @@ public class ViewUtil {
         windows.setWindowAnimations(R.style.Rising);//设置动画效果
         View viewEmpty = dialog_parent.findViewById(R.id.empty_view);
         //SpeedRecyclerView speedRecyclerView = dialog_parent.findViewById(R.id.recyclerView);
-       // ImageView card = dialog_parent.findViewById(R.id.blurView);
-       // List<Integer> mList = new ArrayList<>();
-       // init(speedRecyclerView, card, mList, activity);
-//        TextView ask_share_title = dialog_parent.findViewById(R.id.ask_share_title);
-        RecyclerView ask_share_list = dialog_parent.findViewById(R.id.ask_share_list);
+        // ImageView card = dialog_parent.findViewById(R.id.blurView);
+        // List<Integer> mList = new ArrayList<>();
+
+        TextView tv_invitation_code = dialog_parent.findViewById(R.id.tv_invitation_code);//邀请码
+        RecyclerView recycle_picture = dialog_parent.findViewById(R.id.recycle_picture);//邀请码的recycleview
+        RecyclerView ask_share_list = dialog_parent.findViewById(R.id.ask_share_list);//分享链接
         GridLayoutManager gridLayoutManager = new GridLayoutManager(activity, 5);
         ask_share_list.setLayoutManager(gridLayoutManager);
 //        ask_share_list.setHasFixedSize(true);

+ 510 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/InvitationActivity.java

@@ -0,0 +1,510 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Message;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.OrientationHelper;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import com.kfzs.duanduan.cardview.CardScaleHelper;
+import com.sheep.gamegroup.helper.DownloadUtil;
+import com.sheep.gamegroup.helper.ScalableCardHelper;
+import com.sheep.gamegroup.helper.ZXingHelper;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.DialogConfig;
+import com.sheep.gamegroup.model.entity.FriendAndAwardEntity;
+import com.sheep.gamegroup.model.entity.PictureInvitationEntity;
+import com.sheep.gamegroup.model.entity.UserEntity;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.FastJsonUtils;
+import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.StringUtils;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
+import com.sheep.gamegroup.view.adapter.MyAdapter;
+import com.sheep.gamegroup.view.dialog.DialogShare;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
+import com.sheep.jiuyan.samllsheep.utils.G;
+import com.umeng.socialize.ShareAction;
+import com.umeng.socialize.bean.SHARE_MEDIA;
+import com.umeng.socialize.media.UMImage;
+import com.umeng.socialize.media.UMWeb;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.LINK_SHARE;
+import static com.sheep.gamegroup.util.UMConfigUtils.Event.QR_COPY;
+import static com.sheep.gamegroup.util.ViewUtil.getNetImgByName;
+
+/**
+ * created on:2018/9/4 on 15:09
+ * created by: YSL
+ * 描述:
+ */
+public class InvitationActivity extends AppCompatActivity implements ScalableCardHelper.OnPageChangeListener {
+    @BindView(R.id.ask_share_list)
+    RecyclerView ask_share_list;
+    @BindView(R.id.recyclerView)
+    RecyclerView mRecyclerView;
+    @BindView(R.id.blurView)
+    ImageView mBlurView;
+    @BindView(R.id.img_baseactivity_title)
+    ImageView ivBack;
+    @BindView(R.id.txt_baseactivity_title)
+    TextView tvTitle;
+    private List<Integer> mList = new ArrayList<>();
+    private CardScaleHelper mCardScaleHelper = null;
+    private Runnable mBlurRunnable;
+    private int mLastPos = -1;//滑动当前的位置
+    private List<String> localPathList = new ArrayList<>();
+    private List<String> RxPathList = new ArrayList<>();
+    private String localPicturePath = Environment.getDataDirectory().getAbsolutePath() + "/pic/+pic";
+    private String localRxPath = Environment.getDataDirectory().getAbsolutePath() + "/rx/+rx";
+
+    GridLayoutManager gridLayoutManager;
+    UserEntity userEntity = DataUtil.getInstance().getUserEntity();
+    private FriendAndAwardEntity mEntity;
+    private String url;
+    private String description;
+    private Bitmap mBitmap;
+    private List<PictureInvitationEntity> mPictureList = new ArrayList<>();
+    private List<File> mPictureFileList = new ArrayList<>();
+    private List<File> mRxFileList = new ArrayList<>();
+    String localPath = "";
+    String localRx = "";
+    private int position = 0;
+    private List<Bitmap> listBitmap = new ArrayList<>();
+    private List<Bitmap> listBitmap1 = new ArrayList<>();
+    private List<Bitmap> listBitmap2 = new ArrayList<>();
+    private MyAdapter adapter;
+    private int size = 0;
+    private View view = null;
+
+    @Override
+
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_invitation);
+        ButterKnife.bind(this);
+        initView();
+        initData();
+        // initPicture();
+        cerateAdapter(listBitmap1, this);
+        getPicetureList();
+    }
+
+    private void initView() {
+        tvTitle.setText("邀请赚钱");
+        ivBack.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                InvitationActivity.this.finish();
+            }
+        });
+    }
+
+    /**
+     * @param list    Bitmap集合
+     * @param context
+     */
+    private void cerateAdapter(List<Bitmap> list, Context context) {
+        adapter = new MyAdapter(context, list, listBitmap2);
+        LinearLayoutManager layoutManager = new LinearLayoutManager(context);
+        layoutManager.setOrientation(OrientationHelper.HORIZONTAL);
+        mRecyclerView.setLayoutManager(layoutManager);
+        // recyclerView.addItemDecoration(new InvitationPictureAdapter.SpacesItemDecoration(15));
+        mRecyclerView.setAdapter(adapter);
+        ScalableCardHelper cardHelper = new ScalableCardHelper(this);
+        cardHelper.attachToRecyclerView(mRecyclerView);
+    }
+
+
+    private void init(final String url, final String description) {
+        gridLayoutManager = new GridLayoutManager(this, 5);
+        ask_share_list.setLayoutManager(gridLayoutManager);
+        final List<String> list = ListUtil.emptyList();
+        list.add(DialogShare.FACE_TO_FACE);
+        list.add(DialogShare.WX);
+        list.add(DialogShare.QQ);
+        list.add(DialogShare.WEIXIN_CIRCLE);
+        list.add(DialogShare.COPY_SHARE_LINK);
+        final List<String> imgList = ListUtil.emptyList();
+        imgList.add("share_face_to_face");
+        imgList.add("share_wx");
+        imgList.add("share_qq");
+        imgList.add("share_weixin_circle");
+        imgList.add("share_copy_share_link");
+        final List<String> nameList = ListUtil.emptyList();
+        nameList.add("面对面");
+        nameList.add("微信");
+        nameList.add("QQ好友");
+        nameList.add("朋友圈");
+        nameList.add("复制链接");
+        AdbCommonRecycler<String> adapter = new AdbCommonRecycler<String>(this, list) {
+            @Override
+            public int getViewIdByType(int type) {
+                return R.layout.ask_to_share_item;
+            }
+
+            @Override
+            public void convert(ViewHolder holder, final String item) {
+                View itemView = holder.itemView;
+                if (item == null)
+                    return;
+                ImageView ask_to_share_item_img = itemView.findViewById(R.id.ask_to_share_item_img);
+                TextView ask_to_share_item_name = itemView.findViewById(R.id.ask_to_share_item_name);
+                final int position = holder.getAdapterPosition();
+                GlideImageLoader.setImage(ask_to_share_item_img, getNetImgByName(imgList.get(position)));
+                ask_to_share_item_name.setText(nameList.get(position));
+                itemView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        if (position == 1 || position == 2) {
+                            popShare(InvitationActivity.this, url, item, description, mBitmap);
+                        } else {
+                            popShare(InvitationActivity.this, url, item, description, null);
+                        }
+                    }
+                });
+            }
+        };
+        ask_share_list.setAdapter(adapter);
+    }
+
+
+    /**
+     * 分享 url type 拼接
+     */
+    public String jointString(String url, @DialogShare.SHARE_TYPE String type) {
+        if (url.contains("&type="))
+            return url;
+        switch (type) {
+            case "qq":
+                return url + "&type=2";
+            case "wx":
+                return url + "&type=1";
+            default:
+                return url + "&type=4";
+        }
+    }
+
+    /**
+     * 分享
+     *
+     * @param activity
+     * @param url
+     * @param type        qq wx all
+     * @param description
+     */
+    public void popShare(Activity activity, final String url, @DialogShare.SHARE_TYPE String type, String description, Bitmap bitmap) {
+        if (activity == null || TextUtils.isEmpty(type) || TextUtils.isEmpty(url)) {
+            return;
+        }
+        final String realUrl = jointString(url, type);
+        SHARE_MEDIA share_media;
+        switch (type) {
+            case DialogShare.ALL:
+                ViewUtil.newInstance().showShare(activity, realUrl, description);
+                return;
+            case DialogShare.FACE_TO_FACE:
+                ViewUtil.showQR(activity, realUrl);
+                return;
+            case DialogShare.COPY_SHARE_LINK:
+                LINK_SHARE.onEvent();
+                ViewUtil.showMsgDialog(activity, new DialogConfig().setTitle("分享链接").setMsg(realUrl)
+                        .setMsgMore("他人通过该链接加入小绵羊即可成为你的好友").setMsgMoreColor(R.color.txt_black_9e9c9c)
+                        .setBtnLeftText("复制链接").setBtnLeftOnClickListener(new View.OnClickListener() {
+                            @Override
+                            public void onClick(View view) {
+                                QR_COPY.onEvent();
+                                StringUtils.CopyText(realUrl);
+                                G.showToast("复制链接成功");
+                            }
+                        }));
+                return;
+            case DialogShare.QQ:
+                share_media = SHARE_MEDIA.QQ;
+                break;
+            case DialogShare.WX:
+                share_media = SHARE_MEDIA.WEIXIN;
+                break;
+            case DialogShare.WEIXIN_CIRCLE:
+            default:
+                share_media = SHARE_MEDIA.WEIXIN_CIRCLE;
+                break;
+        }
+        UMImage umImage = null;
+
+        if (type == DialogShare.QQ || type == DialogShare.WX) {
+            umImage = new UMImage(activity, bitmap);
+        } else {
+            umImage = new UMImage(activity, R.mipmap.icon);
+        }
+        UMWeb umWeb = new UMWeb(realUrl);
+        umWeb.setTitle(activity.getResources().getString(R.string.app_name));
+        umWeb.setThumb(umImage);
+        umWeb.setDescription(TextUtils.isEmpty(description) ? activity.getResources().getString(R.string.app_name) : description);
+        if (type == DialogShare.QQ || type == DialogShare.WX) {
+            new ShareAction(activity)
+                    .setPlatform(share_media)
+                    .withMedia(umImage)
+                    .setCallback(new CommonUtil.UMShareListener())
+                    .share();
+        } else {
+            new ShareAction(activity)
+                    .setPlatform(share_media)
+                    .withMedia(umWeb)
+                    .setCallback(new CommonUtil.UMShareListener())
+                    .share();
+        }
+    }
+
+    public void initData() {
+        ViewUtil.newInstance().showProgress(this);
+        SheepApp.getInstance().getNetComponent().getApiService().FriendCountAndAward()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        ViewUtil.newInstance().hideProgress(InvitationActivity.this);
+                        if (BuildConfig.DEBUG)
+                            G.showToast(baseMessage);
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        if (baseMessage != null) {
+                            mEntity = FastJsonUtils.toBean(JSONObject.toJSONString(baseMessage.getData()), FriendAndAwardEntity.class);
+                            description = mEntity.getShare_desc();
+                            ViewUtil.newInstance().hideProgress(InvitationActivity.this);
+                            getmEntity();
+                            runOnUiThread(new Runnable() {
+                                @Override
+                                public void run() {
+                                   /* tvSize.setText(mEntity.getFriend_count() + "");
+                                    tvMoney.setText(mEntity.getAward());*/
+                                }
+                            });
+                        } else {
+                            /* ViewUtil.newInstance().hideProgress(activity);*/
+                        }
+
+                    }
+                });
+
+
+    }
+
+    private void getmEntity() {
+        CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
+            @Override
+            public void call(UserEntity result) {
+                if (result != null) {
+                    userEntity = result;
+                    String audit_total_audit = String.format(getResources().getString(R.string.my_invitation_str), userEntity.getInvitation_code());
+                    /*  my_invitation_tv.setText(audit_total_audit);*/
+                    url = userEntity.getShareLink();
+                    init(url, description);
+                }
+            }
+        });
+    }
+
+
+    @Override
+    public void onPageSelected(int position) {
+        mBitmap=getViewBitmap(adapter.getView());
+        Log.i("aaaa", "当前位置" + position);
+    }
+
+    /**
+     * 来获取邀请图片,
+     */
+    private void getPicetureList() {
+        ArrayList<PictureInvitationEntity> list = new ArrayList<>();
+        SheepApp
+                .getInstance()
+                .getNetComponent()
+                .getApiService()
+                .getSharePicture()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        LogUtil.logI("onNext__getPicetureList--" + new Gson().toJson(baseMessage));
+                        mPictureList.addAll(baseMessage.getDataList(PictureInvitationEntity.class));
+                        downloadPictures();
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        LogUtil.logI("onError__getPicetureList--" + new Gson().toJson(baseMessage));
+                    }
+                });
+    }
+
+    /**
+     * @param url ,,图片地址
+     * @return /storage/emulated/0/sheep/aaa
+     */
+    private String getSavePath(String url) {
+        return Environment.getExternalStorageDirectory() + "/sheep/" + url.substring(url.lastIndexOf("/") + 1);
+    }
+    private void downloadPictures() {
+        for (int i = 0; i < mPictureList.size(); i++) {
+            position = i;
+            DownloadUtil.get().download(mPictureList.get(position).getPicture(), "sheep", new DownloadUtil.OnDownloadListener() {
+                @Override
+                public void onDownloadSuccess() {
+                    Log.i("aaaa", "下载成功");
+                    if (position == mPictureList.size()-1) {
+                        Log.i("aaaa", "下载成功"+"---"+size+"-----"+mPictureList.size());
+                        createBitmapList(position);
+                    }
+                }
+
+                @Override
+                public void onDownloading(int progress) {
+                }
+
+                @Override
+                public void onDownloadFailed() {
+                    Log.i("aaaa", "下载失败");
+                }
+            });
+        }
+    }
+
+    private void createBitmapList(int y) {
+        for (int i = 0; i < mPictureList.size(); i++) {
+            listBitmap1.add(BitmapFactory.decodeFile(getSavePath(mPictureList.get(i).getPicture())));
+            Bitmap logo = BitmapFactory.decodeResource(getResources(), R.mipmap.sheep_logo);
+            Bitmap bitmapx = ZXingHelper.createQRCodeWithLogo(mPictureList.get(y).getLink(), logo);
+            listBitmap2.add(bitmapx);
+        }
+        handler.sendEmptyMessage(1);
+    }
+
+    @SuppressLint("HandlerLeak")
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch (msg.what) {
+                case 1:
+                  /*  for (int i = 0; i < size; i++) {
+                        listBitmap.add(mergeBitmap(listBitmap1.get(i), listBitmap2.get(i)));
+                    }*/
+                    adapter.notifyDataSetChanged();
+
+                    break;
+                case 2:
+                    break;
+                default:
+
+                    break;
+            }
+        }
+    };
+
+    /**
+     * @param addViewContent
+     * @return
+     */
+    private Bitmap getViewBitmap(View addViewContent) {
+        if (addViewContent==null){
+            return null;
+        }
+        addViewContent.setDrawingCacheEnabled(true);
+        addViewContent.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
+        addViewContent.layout(0, 0, addViewContent.getMeasuredWidth(), addViewContent.getMeasuredHeight());
+        addViewContent.buildDrawingCache();
+        Bitmap cacheBitmap = addViewContent.getDrawingCache();
+        Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
+        return bitmap;
+    }
+
+
+    /**
+     * 合成图片
+     * @param firstBitmap
+     * @param secondBitmap
+     * @return
+     */
+    private Bitmap mergeBitmap(Bitmap firstBitmap, Bitmap secondBitmap) {
+        Bitmap bitmap = Bitmap.createBitmap(firstBitmap.getWidth(), firstBitmap.getHeight(), firstBitmap.getConfig());
+        Canvas canvas = new Canvas(bitmap);
+        float w = firstBitmap.getWidth();
+        float h = firstBitmap.getHeight();
+        Matrix matrix = new Matrix();
+        //确定secondBitmap大小比例
+        matrix.setScale(secondBitmap.getWidth(), h / secondBitmap.getHeight());
+        canvas.drawBitmap(firstBitmap, new Matrix(), null);
+        canvas.drawBitmap(zoomImage(secondBitmap, 50, 50), 320, 320, null);
+        LogUtil.logI("bitmap----first---" + firstBitmap.getWidth() + "--" + firstBitmap.getHeight());
+        LogUtil.logI("bitmap----secound---" + secondBitmap.getWidth() + "--" + secondBitmap.getHeight());
+        return bitmap;
+    }
+
+    public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) {
+        // 获取这个图片的宽和高
+        float width = bgimage.getWidth();
+        float height = bgimage.getHeight();
+        // 创建操作图片用的matrix对象
+        Matrix matrix = new Matrix();
+        // 计算宽高缩放率
+        float scaleWidth = ((float) newWidth) / width;
+        float scaleHeight = ((float) newHeight) / height;
+        // 缩放图片动作
+        matrix.postScale(scaleWidth, scaleHeight);
+        Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width,
+                (int) height, matrix, true);
+        return bitmap;
+    }
+
+}

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

@@ -8,6 +8,7 @@ import android.widget.TextView;
 
 import com.google.gson.Gson;
 import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.MessageCenterDetailEntity;
 import com.sheep.gamegroup.model.entity.MessageCenterEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.LogUtil;
@@ -40,6 +41,7 @@ public class MessageCenterDetailActivity extends AppCompatActivity{
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_messagesystem);
         ButterKnife.bind(this);
+        tvBaseTitle.setText("消息中心");
         position=getIntent().getIntExtra("position",-1);
         loadData(position+"");
     }
@@ -68,7 +70,7 @@ public class MessageCenterDetailActivity extends AppCompatActivity{
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                         LogUtil.logI("消息中心详细内容----"+new Gson().toJson(baseMessage));
-                        MessageCenterEntity entity =baseMessage.getData(MessageCenterEntity.class);
+                        MessageCenterDetailEntity entity =baseMessage.getData(MessageCenterDetailEntity.class);
                         tvContent.setText(entity.getContent());
                         tvTitle.setText(entity.getTitle());
 

+ 15 - 11
app/src/main/java/com/sheep/gamegroup/view/activity/MessageInteractionDetailActivity.java

@@ -12,6 +12,7 @@ import android.widget.TextView;
 
 import com.google.gson.Gson;
 import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.MessageReplyDetailEntity;
 import com.sheep.gamegroup.model.entity.MessageReplyEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.LogUtil;
@@ -39,9 +40,10 @@ public class MessageInteractionDetailActivity extends AppCompatActivity {
     TextView tvTitle;
     @BindView(R.id.recycle_view)
     RecyclerView recyclerView;
+    @BindView(R.id.tv_title)
+    TextView title;
     private MessageInteractionAdapter adapter;
-    private List<MessageReplyEntity> mList = new ArrayList<>();
-    private MessageReplyEntity entity=null;
+    private MessageReplyDetailEntity entity;
     private String id="";
 
     @Override
@@ -49,13 +51,8 @@ public class MessageInteractionDetailActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_message_interaction);
         ButterKnife.bind(this);
-        tvTitle.setText("回复详情");
-        LinearLayoutManager manager = new LinearLayoutManager(this);
-        manager.setOrientation(OrientationHelper.VERTICAL);
-        recyclerView.setLayoutManager(manager);
-        adapter = new MessageInteractionAdapter(this, mList);
-        recyclerView.setAdapter(adapter);
-        entity = (MessageReplyEntity) getIntent().getSerializableExtra("message");
+        tvTitle.setText("消息互动");
+
         id=getIntent().getIntExtra("position",-1)+"";
         loadData(id + "");
     }
@@ -82,8 +79,15 @@ public class MessageInteractionDetailActivity extends AppCompatActivity {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                         LogUtil.logI("loadData-onNext----"+new Gson().toJson(baseMessage));
-                        mList.addAll(baseMessage.getDataList(MessageReplyEntity.class));
-                        tvTitle.setText(entity.getTitle());
+                        entity=baseMessage.getData(MessageReplyDetailEntity.class);
+                        title.setText(entity.getTitle());
+                        LogUtil.logI("loadData-onNext---entity---"+new Gson().toJson(entity));
+                        adapter = new MessageInteractionAdapter(MessageInteractionDetailActivity.this, entity);
+                        LinearLayoutManager manager = new LinearLayoutManager(MessageInteractionDetailActivity.this);
+                        manager.setOrientation(OrientationHelper.VERTICAL);
+                        recyclerView.setLayoutManager(manager);
+                        recyclerView.setAdapter(adapter);
+
                     }
 
                     @Override

+ 13 - 9
app/src/main/java/com/sheep/gamegroup/view/activity/MessageReplyDetailActivity.java

@@ -6,10 +6,14 @@ import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.TextView;
 
+import com.google.gson.Gson;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.MessageCenterEntity;
 import com.sheep.gamegroup.model.entity.MessageReplyEntity;
+import com.sheep.gamegroup.model.entity.MessageUnReadEntity;
+import com.sheep.gamegroup.model.entity.MessageUserFeedbackEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
@@ -35,17 +39,17 @@ public class MessageReplyDetailActivity extends AppCompatActivity {
     @BindView(R.id.txt_baseactivity_title)
     TextView tvBaseTitle;
 
-    private int position;
-    private List<MessageReplyEntity> mList = new ArrayList<>();
-    private MessageReplyEntity entity=null;
+    private MessageUserFeedbackEntity userFeedbackEntity;
+    private MessageReplyEntity entity = null;
+    private String id = "";
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_messagesystem);
         ButterKnife.bind(this);
-        position = getIntent().getIntExtra("position", -1);
-        loadData(position + "");
+        id = getIntent().getIntExtra("position", -1) + "";
+        loadData(id + "");
     }
 
     @OnClick({R.id.img_baseactivity_title})
@@ -71,14 +75,14 @@ public class MessageReplyDetailActivity extends AppCompatActivity {
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
                     @Override
                     public void onNext(BaseMessage baseMessage) {
-                        mList.addAll(baseMessage.getDataList(MessageReplyEntity.class));
-                        tvContent.setText(entity.getContent());
-                        tvTitle.setText(entity.getTitle());
+                        LogUtil.logI("loadData-onNext----" + new Gson().toJson(baseMessage));
+                        userFeedbackEntity = baseMessage.getData(MessageUserFeedbackEntity.class);
+                        tvTitle.setText(userFeedbackEntity.getTitle());
                     }
 
                     @Override
                     public void onError(BaseMessage baseMessage) {
-
+                        LogUtil.logI("loadData-onError----" + new Gson().toJson(baseMessage));
                     }
                 });
     }

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

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.view.activity;
 import android.annotation.SuppressLint;
 import android.graphics.Color;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 import android.support.v7.app.AppCompatActivity;
@@ -11,8 +12,23 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.MessageCenterEntity;
+import com.sheep.gamegroup.model.entity.MessageReplyEntity;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.view.adapter.MessageAdapter;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+import org.xutils.view.annotation.Event;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
 
 
 /**
@@ -24,7 +40,11 @@ public class MessagesActivity extends AppCompatActivity {
     private String[] mTitle = new String[]{"消息中心", "回复互动"};
     private TabLayout tabLayout = null;
     private ViewPager viewPager = null;
+    private ImageView imageViewLeft;
+    private ImageView imageViewRight;
 
+    private List<MessageCenterEntity> mListleft = new ArrayList<>();
+    private List<MessageReplyEntity> mListRight = new ArrayList<>();
 
     @SuppressLint("WrongViewCast")
     @Override
@@ -33,6 +53,12 @@ public class MessagesActivity extends AppCompatActivity {
         setContentView(R.layout.activity_messages);
         viewPager = findViewById(R.id.message_view_pager_grd);
         tabLayout = findViewById(R.id.tab_layout);
+        findViewById(R.id.iv_back).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                MessagesActivity.this.finish();
+            }
+        });
         tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
             @Override
             public void onTabSelected(TabLayout.Tab tab) {
@@ -42,8 +68,9 @@ public class MessagesActivity extends AppCompatActivity {
                         tabView = getCustomView(i);
                         tabLayout.getTabAt(i).setCustomView(tabView);
                     }
+                    imageViewLeft = getCustomView(0).findViewById(R.id.iv_message);
+                    imageViewRight = getCustomView(1).findViewById(R.id.iv_message);
                     TextView tvtable = tabView.findViewById(R.id.tv_message);
-                    ImageView ivtable = tabView.findViewById(R.id.iv_message);
                     if (i == tab.getPosition()) {
                         tvtable.setTextColor(Color.parseColor("#ff333333"));
                     } else {
@@ -65,7 +92,7 @@ public class MessagesActivity extends AppCompatActivity {
         });
         viewPager.setAdapter(new MessageAdapter(getSupportFragmentManager(), this));
         tabLayout.setupWithViewPager(viewPager);
-        //返回
+
         findViewById(R.id.iv_back).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -74,6 +101,20 @@ public class MessagesActivity extends AppCompatActivity {
         });
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void changeView(String flag) {
+        if (flag.equals("left_unread")) {
+            imageViewLeft.setVisibility(View.VISIBLE);
+        } else if (flag.equals("left_read")) {
+            imageViewLeft.setVisibility(View.GONE);
+        } else if (flag.equals("right_unread")) {
+            imageViewRight.setVisibility(View.VISIBLE);
+        } else if (flag.equals("right_read")) {
+            imageViewRight.setVisibility(View.GONE);
+        }
+    }
+
+
     /**
      * 、
      * 设置每个tab的view,可根据position的不同,针对性的对每个tab做处理,这里消息互动和消息中心的tab布局一样,所以就统一设置

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

@@ -125,7 +125,7 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
                         sendHandlerMessages(100);
                     break;
                 case 1:
-                    if(SysAppUtil.isNewSmallSheep(false)){//新版本只显示引导页面,不展示弹窗和开屏广告
+                    if(SysAppUtil.isNewSmallSheep()){//新版本只显示引导页面,不展示弹窗和开屏广告
                         isLoaddingData = false;
                         sendHandlerMessages(200);
                     } else {
@@ -191,11 +191,12 @@ public class SplashAct extends BaseActivity implements EasyPermissions.Permissio
     public void initView() {
         activity = this;
         GlideImageLoader.setImage(login_bg_img, "http://cdngame.kuaifazs.com/login_bg_img.png");
-        if(BuildConfig.DEBUG){
-            Jump2View.getInstance().goHomePageView(activity, null);
-        } else {
-            mHandler.sendEmptyMessageDelayed(1, 500);
-        }
+//        if(BuildConfig.DEBUG){
+//            Jump2View.getInstance().goHomePageView(activity, null);
+//        } else {
+//            mHandler.sendEmptyMessageDelayed(1, 500);
+//        }
+        mHandler.sendEmptyMessageDelayed(1, 500);
     }
 
     @Override

+ 119 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/InvitationPictureAdapter.java

@@ -0,0 +1,119 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Rect;
+import android.graphics.drawable.BitmapDrawable;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.sheep.gamegroup.model.entity.PictureInvitationEntity;
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.List;
+
+/**
+ * created on:2018/9/4 on 10:57
+ * created by: YSL
+ * 描述:
+ */
+public class InvitationPictureAdapter extends RecyclerView.Adapter<InvitationPictureAdapter.MyHolder> {
+    private Context mContet;
+    private List<PictureInvitationEntity> mList;
+    private ItemOnClickListener itemOnClickListener;
+    private int position;
+
+    public InvitationPictureAdapter(Context mContet, List<PictureInvitationEntity> mList) {
+        this.mContet = mContet;
+        this.mList = mList;
+
+    }
+
+    @NonNull
+    @Override
+    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+        View view = LayoutInflater.from(mContet).inflate(R.layout.adapter_invitationpictureadapter, null);
+        return new MyHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull MyHolder viewHolder, int i) {
+        position = i;
+        viewHolder.tvPosition.setText("邀请" + (i + 1));
+        // GlideImageLoader.centerImage(viewHolder.ivPicture, mList.get(i).getPicture());
+        viewHolder.ivPicture.setImageResource(R.drawable.kaipin);
+        viewHolder.ivPicture.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                itemOnClickListener.itemClick(position);
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return 5;
+    }
+
+
+    private Bitmap mergeBitmap(ImageView imageFirst, ImageView imageSecound) {
+        Bitmap firstBitmap = ((BitmapDrawable) imageFirst.getDrawable()).getBitmap();
+        Bitmap secondBitmap = ((BitmapDrawable) imageFirst.getDrawable()).getBitmap();
+        Bitmap bitmap = Bitmap.createBitmap(firstBitmap.getWidth(), firstBitmap.getHeight(), firstBitmap.getConfig());
+        Canvas canvas = new Canvas(bitmap);
+        canvas.drawBitmap(firstBitmap, new Matrix(), null);
+        canvas.drawBitmap(secondBitmap, 0, 0, null);
+        return bitmap;
+    }
+
+
+    class MyHolder extends RecyclerView.ViewHolder {
+        private ImageView ivPicture;
+        private TextView tvPosition;
+
+        public MyHolder(View itemView) {
+            super(itemView);
+            ivPicture = itemView.findViewById(R.id.iv_picture);
+            tvPosition = itemView.findViewById(R.id.tv_position);
+        }
+    }
+
+    /**
+     * 设置recycleview item间距辅助类
+     */
+    public static class SpacesItemDecoration extends RecyclerView.ItemDecoration {
+        /**
+         * 设置间距
+         */
+        private int space;
+
+        public SpacesItemDecoration(int space) {
+            this.space = space;
+        }
+
+        @Override
+        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+            outRect.left = space;
+            outRect.right = space;
+            //outRect.bottom = space;
+            /*if (parent.getChildPosition(view) == 0)
+                outRect.top = space;*/
+        }
+    }
+
+    /**
+     * 图片点击事件回调
+     */
+    public interface ItemOnClickListener {
+        void itemClick(int position);
+    }
+
+
+}

+ 22 - 13
app/src/main/java/com/sheep/gamegroup/view/adapter/MessageInteractionAdapter.java

@@ -1,6 +1,7 @@
 package com.sheep.gamegroup.view.adapter;
 
 import android.content.Context;
+import android.graphics.Color;
 import android.support.annotation.NonNull;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
@@ -10,7 +11,15 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.google.gson.Gson;
+import com.sheep.gamegroup.model.entity.MessageReplyDetailEntity;
+import com.sheep.gamegroup.model.entity.MessageReplyEntity;
+import com.sheep.gamegroup.model.entity.UserEntity;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.jiuyan.samllsheep.R;
 
 import java.util.List;
@@ -22,37 +31,37 @@ import java.util.List;
  */
 public class MessageInteractionAdapter extends RecyclerView.Adapter<MessageInteractionAdapter.MyHolder> {
     private Context mContext;
-    private List<?> mList;
+    private MessageReplyDetailEntity entity;
+    private UserEntity userEntity = DataUtil.getInstance().getUserEntity();
 
-    public MessageInteractionAdapter(Context mContext, List<?> mList) {
+    public MessageInteractionAdapter(Context mContext, MessageReplyDetailEntity entity) {
         this.mContext = mContext;
-        this.mList = mList;
+        this.entity = entity;
     }
 
     @NonNull
     @Override
     public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
         View view = null;
-        if (mList == null || mList.isEmpty()) {
-            view = LayoutInflater.from(mContext).inflate(R.layout.empty_view, null);
-        } else {
-            view = LayoutInflater.from(mContext).inflate(R.layout.adapter_message_interaction, null);
-        }
+        view = LayoutInflater.from(mContext).inflate(R.layout.adapter_message_interaction, null);
         return new MyHolder(view);
     }
 
     @Override
     public void onBindViewHolder(@NonNull MyHolder viewHolder, int i) {
-            GlideImageLoader.centerImage(viewHolder.ivIcon, "");
-            viewHolder.tvPeople.setText("");
-            viewHolder.tvTime.setText("");
-            viewHolder.tvContent.setText("");
+
+        GlideImageLoader.setAvatar(viewHolder.ivIcon, userEntity.getAvatar(), Color.argb(128, 255, 255, 255));
+        viewHolder.tvPeople.setText(entity.getType() == 1 ? "官方回复" : "我");
+        viewHolder.tvTime.setText("" + TimeUtil.TimeStamp2Date(entity.getUser_create_time(), "yyyy-MM-dd HH:mm"));
+        viewHolder.tvContent.setText(entity.getUser_contet());
+
 
     }
 
     @Override
     public int getItemCount() {
-        return mList == null ? 0 : mList.size();
+        LogUtil.logI("size------"+(entity == null ? 0 : 1));
+        return entity == null ? 0 : 1;
     }
 
     class MyHolder extends RecyclerView.ViewHolder {

+ 9 - 4
app/src/main/java/com/sheep/gamegroup/view/adapter/MessageLeftAdapter.java

@@ -13,6 +13,7 @@ import android.widget.TextView;
 import com.sheep.gamegroup.model.entity.MessageCenterEntity;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.jiuyan.samllsheep.R;
 
 
@@ -50,20 +51,24 @@ public class MessageLeftAdapter extends RecyclerView.Adapter<MessageLeftAdapter.
     }
 
     @Override
-    public void onBindViewHolder(@NonNull Myholder viewHolder, int i) {
+    public void onBindViewHolder(@NonNull Myholder viewHolder, final int i) {
         if (i == mList.size() - 1) {
             viewHolder.viewLine.setVisibility(View.GONE);//最后一条数据隐藏线条
         }
         //  GlideImageLoader.centerImage(viewHolder.ivIcon, "");
-        viewHolder.ivIcon.setImageResource(R.mipmap.message_unread);
         viewHolder.tvTitle.setText(mList.get(i).getTitle() + "");
-        viewHolder.tvTime.setText(mList.get(i).getCreated_at() + "");
+        viewHolder.tvTime.setText(TimeUtil.TimeStamp2Date(mList.get(i).getCreated_at(), "yyyy-MM-dd HH:mm"));
         viewHolder.tvContent.setText(mList.get(i).getContent() + "");
+        if (mList.get(i).getIs_look()==1){
+            viewHolder.ivIcon.setImageResource(R.mipmap.icon_unread);//已读
+        }else {
+            viewHolder.ivIcon.setImageResource(R.mipmap.message_unread);//未读
+        }
         position = i;
         viewHolder.itemLayout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                itemClick.itemClick(position);
+                itemClick.itemClick(mList.get(i).getId());
             }
         });
     }

+ 11 - 5
app/src/main/java/com/sheep/gamegroup/view/adapter/MessageRightAdapter.java

@@ -12,6 +12,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.sheep.gamegroup.model.entity.MessageReplyEntity;
+import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.jiuyan.samllsheep.R;
 
 import java.util.List;
@@ -46,20 +47,25 @@ public class MessageRightAdapter extends RecyclerView.Adapter<MessageRightAdapte
     }
 
     @Override
-    public void onBindViewHolder(@NonNull MyHolder viewHolder, int i) {
+    public void onBindViewHolder(@NonNull MyHolder viewHolder, final int i) {
         if (i == mList.size() - 1) {
             viewHolder.viewLine.setVisibility(View.GONE);//最后一条数据隐藏线条
         }
         //GlideImageLoader.centerImage(viewHolder.ivIcon, "");
         viewHolder.ivIcon.setImageResource(R.mipmap.message_unread);
         viewHolder.tvTitle.setText(mList.get(i).getTitle()+"");
-        viewHolder.tvTime.setText(mList.get(i).getCreated_at()+"");
+        viewHolder.tvTime.setText(TimeUtil.TimeStamp2Date(mList.get(i).getCreated_at(), "yyyy-MM-dd HH:mm"));
         viewHolder.tvContent.setText(mList.get(i).getContent());
+        if (mList.get(i).getIs_look()==1){
+            viewHolder.ivIcon.setImageResource(R.mipmap.icon_unread);//已读
+        }else {
+            viewHolder.ivIcon.setImageResource(R.mipmap.message_unread);//未读
+        }
         position = i;
         viewHolder.itemLayout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                itemClick.itemClick(mList.get(position),position);
+                itemClick.itemClick(mList.get(i).getId());
             }
         });
     }
@@ -93,8 +99,8 @@ public class MessageRightAdapter extends RecyclerView.Adapter<MessageRightAdapte
      */
     public interface ItemOnClickListener {
         /**
-         * @param entity
+         * @param position
          */
-        void itemClick(MessageReplyEntity entity,int position);
+        void itemClick(int position);
     }
 }

+ 82 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/MyAdapter.java

@@ -0,0 +1,82 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.List;
+
+/**
+ * created on:2018/9/5 on 9:18
+ * created by: YSL
+ * 描述:
+ */
+public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> {
+    private Context mContext;
+    private List<Bitmap> mList;
+    private List<Bitmap> list;
+    private View view;
+
+    public MyAdapter(Context mContext, List<Bitmap> mList, List<Bitmap> list) {
+        this.mContext = mContext;
+        this.mList = mList;
+        this.list = list;
+    }
+
+    @NonNull
+    @Override
+    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(mContext).inflate(R.layout.view_image, parent, false);
+        return new MyHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull MyHolder holder, int position) {
+        //   holder.imageView.setImageResource(ress[position]);
+
+        // holder.imageView.setImageBitmap(mergeBitmap(bitmap1, bitmap2));
+        if (mList.size() == 0 || list.size() == 0) {
+            return;
+        }
+        holder.imageView.setImageBitmap(mList.get(position));
+        holder.iv_er.setImageBitmap(list.get(position));
+        setView(holder.relativeLayout);
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList == null ? 0 : mList.size();
+    }
+
+    public View getView() {
+        return view;
+    }
+
+    private void setView(RelativeLayout relativeLayout) {
+        this.view = relativeLayout;
+    }
+
+    class MyHolder extends RecyclerView.ViewHolder {
+
+        com.sheep.gamegroup.helper.CustomRoundAngleImageView imageView;
+        ImageView iv_er;
+        RelativeLayout relativeLayout;
+
+        public MyHolder(View itemView) {
+            super(itemView);
+            imageView = itemView.findViewById(R.id.image);
+            iv_er = itemView.findViewById(R.id.iv_er);
+            relativeLayout = itemView.findViewById(R.id.layout_view);
+        }
+    }
+}
+

+ 24 - 11
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtTryMakeMoney.java

@@ -50,6 +50,7 @@ import javax.inject.Inject;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.Unbinder;
+import rx.functions.Action1;
 
 
 /**
@@ -73,6 +74,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     private List<TaskReleaseEty> releaseEtyListsBegin = new ArrayList<>();
     private int about_to_begin = 0;
     private String show_type;//有值代表来自主页
+    private boolean isFromHome = false;//来自主页
     private int is_succession;//0:一般任务 1:连续任务
 
     private void checkAndInitView() {
@@ -107,13 +109,13 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         recyclerview.refreshComplete();
         recyclerview.loadMoreComplete();
         notifyBottomLine(false);
-        if (!TextUtils.isEmpty(show_type))
+        if (isFromHome)
             EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_SHEEP_REFRESH_H));
     }
 
     private void notifyBottomLine(boolean noMore) {
         if(bottomLine != null) {
-            if (!TextUtils.isEmpty(show_type)){//主页不展示底线,用主页自带的底线
+            if (isFromHome){//主页不展示底线,用主页自带的底线
                 bottomLine.setVisibility(View.GONE);
                 return;
             }
@@ -162,6 +164,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         if (bundle != null) {
             about_to_begin = bundle.getInt("type", 0);
             show_type = bundle.getString("show_type", "");
+            isFromHome = !TextUtils.isEmpty(show_type);
             switch (show_type){
                 case "is_hot":
                     isGetRelease = true;
@@ -216,14 +219,20 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         tryMakeMoneyAdp = new TryMakeMoneyAdp(activity);
         tryMakeMoneyAdp.addType(about_to_begin);
         tryMakeMoneyAdp.addShowType(show_type);
-        tryMakeMoneyAdp.setIs_succession(TextUtils.isEmpty(show_type) ? is_succession : 3);
+        tryMakeMoneyAdp.setIs_succession(getIs_succession());
         tryMakeMoneyAdp.addPresenter(presenter);
         for (int i = 0; i < LIST_COUNT; i++) {
             tryMakeMoneyAdp.add(NULL);
         }
         recyclerview.setAdapter(tryMakeMoneyAdp);
 
-        bottomLine = ViewUtil.setBottomLine(recyclerview);
+        bottomLine = ViewUtil.setBottomLine(recyclerview, new Action1<String>() {
+            @Override
+            public void call(String msg) {
+                if (isFromHome)
+                    EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_SHEEP_FOOT_VIEW_CALL_BACK).setData(msg));
+            }
+        });
 
     }
     private View bottomLine;
@@ -264,7 +273,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                     recyclerview.setNoMore(true);
                     noMore = true;
                     notifyBottomLine(true);
-                    if (!TextUtils.isEmpty(show_type))
+                    if (isFromHome)
                         EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_SHEEP_SET_BOTTOM_LINE));
                 }
             }
@@ -283,7 +292,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     public void refreshData() {
         isFirstCache = false;
         noMore = false;
-        if (!TextUtils.isEmpty(show_type))
+        if (isFromHome)
             EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.FGT_SHEEP_SET_BOTTOM_LINE));
         releasePage = 1;
         releaseBeginPage = 1;
@@ -313,7 +322,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
             if (isGameTask) {
                 cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.run_game_task, TaskAcceptedEty.class);
             } else {
-                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(TextUtils.isEmpty(show_type) ? is_succession : 3, 0), TaskAcceptedEty.class);
+                cacheTaskAcceptedEtyList = DataUtil.getInstance().getCacheList(ApiKey.new_run_task(getIs_succession(), 0), TaskAcceptedEty.class);
             }
             if (ListUtil.isEmpty(cacheTaskAcceptedEtyList)) {
                 acceptedEtyList.clear();
@@ -410,9 +419,13 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
         }
     }
 
+    public int getIs_succession() {
+        return isFromHome ? 3 : is_succession;
+    }
+
     @Override
     public void returnTaskTaskUpdateView(Object object) {
-        boolean isNewData = DataUtil.getInstance().isNewData(isGameTask ? ApiKey.run_game_task : ApiKey.new_run_task(TextUtils.isEmpty(show_type) ? is_succession : 3, 0));
+        boolean isNewData = DataUtil.getInstance().isNewData(isGameTask ? ApiKey.run_game_task : ApiKey.new_run_task(getIs_succession(), 0));
         if (isNewData) {
             if (object instanceof BaseMessage) {
                 List<TaskAcceptedEty> taskAcceptedEty = ((BaseMessage) object).getDataList(TaskAcceptedEty.class);
@@ -442,7 +455,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
      */
     @Override
     public void releaseTaskTaskUpdateView(BaseMessage baseMessage, int about_to_begin) {
-        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, TextUtils.isEmpty(show_type) ? is_succession : 3));
+        boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, getIs_succession()));
         if (isNewData) {
             List<TaskReleaseEty> releaseEtyList = baseMessage.getDataList(TaskReleaseEty.class);
             switch (about_to_begin) {
@@ -484,7 +497,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
     //从ACache获取发布的任务列表
     private void getReleaseFromACache(int about_to_begin) {
         try {
-            List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, TextUtils.isEmpty(show_type) ? is_succession : 3), TaskReleaseEty.class);
+            List<TaskReleaseEty> cacheTaskReleaseEtyList = DataUtil.getInstance().getCacheList(ApiKey.release_task(about_to_begin == 0 ? releasePage : releaseBeginPage, per_page, about_to_begin, task_type, getIs_succession()), TaskReleaseEty.class);
             switch (about_to_begin) {
                 case 0:
                     ListUtil.addAll(releaseEtyLists, cacheTaskReleaseEtyList);
@@ -511,7 +524,7 @@ public class FgtTryMakeMoney extends BaseFragment implements TryMakeMoneyContrac
                                 0,
                                 about_to_begin,
                                 task_type,
-                                TextUtils.isEmpty(show_type) ? is_succession : 3));
+                                getIs_succession()));
         presenter.releaseTask(paramEty);
     }
 

+ 7 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/MessageCenterFragment.java

@@ -35,6 +35,8 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
+import org.greenrobot.eventbus.EventBus;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -124,9 +126,11 @@ public class MessageCenterFragment extends Fragment implements MessageLeftAdapte
                     public void onNext(BaseMessage baseMessage) {
                         mList.addAll(baseMessage.getDataList(MessageCenterEntity.class));
                         if (mList.isEmpty()) {
+                            EventBus.getDefault().post("left_read");
                             emptyView.setVisibility(View.VISIBLE);
                             recyclerView.setVisibility(View.GONE);
                         } else {
+                            EventBus.getDefault().post("left_unread");
                             emptyView.setVisibility(View.GONE);
                             recyclerView.setVisibility(View.VISIBLE);
                         }
@@ -157,9 +161,11 @@ public class MessageCenterFragment extends Fragment implements MessageLeftAdapte
                     public void onNext(BaseMessage baseMessage) {
                         if (!mList.isEmpty()) {
                             mList.clear();
+                            EventBus.getDefault().post("left_unread");
                         }
                         mList.addAll(baseMessage.getDataList(MessageCenterEntity.class));
                         if (mList.isEmpty()) {
+                            EventBus.getDefault().post("left_read");
                             emptyView.setVisibility(View.VISIBLE);
                             recyclerView.setVisibility(View.GONE);
                         } else {
@@ -191,6 +197,7 @@ public class MessageCenterFragment extends Fragment implements MessageLeftAdapte
 
     @Override
     public void itemClick(int position) {
+        refreshData(1,20);
         if (getActivity() != null) {
             Intent intent = new Intent(getActivity(), MessageCenterDetailActivity.class);
             intent.putExtra("position", position);

+ 16 - 10
app/src/main/java/com/sheep/gamegroup/view/fragment/MessageReplyFragment.java

@@ -28,6 +28,8 @@ import com.sheep.gamegroup.view.adapter.MessageRightAdapter;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
+import org.greenrobot.eventbus.EventBus;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -45,7 +47,7 @@ public class MessageReplyFragment extends Fragment implements MessageRightAdapte
     private Context mContext;
     private XRecyclerView recyclerView;
     private MessageRightAdapter adapter;
-    private List<MessageReplyEntity> mList=new ArrayList<>();
+    private List<MessageReplyEntity> mList = new ArrayList<>();
     private View emptyView;
     private int per_page;
     private int page;
@@ -73,7 +75,7 @@ public class MessageReplyFragment extends Fragment implements MessageRightAdapte
         recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
             @Override
             public void onRefresh() {
-                refreshData(1,20);
+                refreshData(1, 20);
             }
 
             @Override
@@ -99,7 +101,7 @@ public class MessageReplyFragment extends Fragment implements MessageRightAdapte
     /**
      * 刷新
      */
-    private void refreshData(int page,int per_page) {
+    private void refreshData(int page, int per_page) {
         SheepApp.getInstance()
                 .getNetComponent()
                 .getApiService()
@@ -110,11 +112,13 @@ public class MessageReplyFragment extends Fragment implements MessageRightAdapte
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                         LogUtil.logI("返回格式---" + new Gson().toJson(baseMessage));
-                        if (!mList.isEmpty()){
+                        if (!mList.isEmpty()) {
+                            EventBus.getDefault().post("right_unread");
                             mList.clear();
                             mList.addAll(baseMessage.getDataList(MessageReplyEntity.class));
                         }
                         if (mList.isEmpty()) {
+                            EventBus.getDefault().post("right_read");
                             emptyView.setVisibility(View.VISIBLE);
                             recyclerView.setVisibility(View.GONE);
                         } else {
@@ -158,11 +162,13 @@ public class MessageReplyFragment extends Fragment implements MessageRightAdapte
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                         LogUtil.logI("返回格式---" + new Gson().toJson(baseMessage));
-                            mList.addAll(baseMessage.getDataList(MessageReplyEntity.class));
+                        mList.addAll(baseMessage.getDataList(MessageReplyEntity.class));
                         if (mList.isEmpty()) {
                             emptyView.setVisibility(View.VISIBLE);
                             recyclerView.setVisibility(View.GONE);
+                            EventBus.getDefault().post("right_read");
                         } else {
+                            EventBus.getDefault().post("right_unread");
                             emptyView.setVisibility(View.GONE);
                             recyclerView.setVisibility(View.VISIBLE);
                         }
@@ -179,12 +185,12 @@ public class MessageReplyFragment extends Fragment implements MessageRightAdapte
     }
 
     @Override
-    public void itemClick(MessageReplyEntity entity,int position) {
+    public void itemClick(int position) {
+        refreshData(1, 20);
         if (getActivity() != null) {
-            Intent intent=new Intent(getActivity(), MessageInteractionDetailActivity.class);
-            intent.putExtra("message",entity);
-            intent.putExtra("position",position);
-            LogUtil.logI("loadData-----id---post--"+position);
+            Intent intent = new Intent(getActivity(), MessageInteractionDetailActivity.class);
+            intent.putExtra("position", position);
+            LogUtil.logI("loadData-----id---post--" + position);
             startActivity(new Intent(intent));
         }
     }

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

@@ -233,6 +233,7 @@ public class SheepApp extends BaseApplication {
         public void onActivityDestroyed(Activity activity) {
             if(mActivityCount == 0) {
                 LogUtil.println("SheepApp onActivityDestroyed", mActivityCount);
+                DataUtil.getInstance().resetIsNewSmallSheep();
                 stopService(new Intent(SheepApp.this, DownloadService.class));
                 stopService(new Intent(SheepApp.this, FloatService.class));
                 if(DataUtil.IS_USE_SCREEN_SHOT)

+ 123 - 0
app/src/main/res/layout/activity_invitation.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+   >
+
+    <RelativeLayout
+        android:id="@+id/layout_f"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="#ffffffff">
+
+        <TextView
+            android:id="@+id/ask_share_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="10dp"
+            android:text="邀请好友"
+            android:textColor="#ff333333"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/tv_copy"
+            android:layout_width="40dp"
+            android:layout_height="20dp"
+            android:layout_alignParentEnd="true"
+            android:layout_marginEnd="15dp"
+            android:layout_marginTop="20dp"
+            android:background="@drawable/shape_blue_stroke_withe_radius_5"
+            android:gravity="center"
+            android:text="复制"
+            android:visibility="invisible"
+            android:textColor="@color/white" />
+
+        <TextView
+            android:id="@+id/tv_invitation_code"
+            android:layout_width="wrap_content"
+            android:layout_height="30dp"
+            android:layout_marginRight="5dp"
+            android:layout_marginTop="15dp"
+            android:layout_toLeftOf="@id/tv_copy"
+            android:gravity="center"
+            android:text="12332"
+            android:visibility="invisible"
+            android:textColor="#ff333333" />
+
+        <TextView
+            android:id="@+id/tv_f_invatation"
+            android:layout_width="wrap_content"
+            android:layout_height="30dp"
+            android:layout_marginRight="5dp"
+            android:layout_marginTop="15dp"
+            android:layout_toLeftOf="@id/tv_invitation_code"
+            android:gravity="center"
+            android:text="你的邀请码:"
+            android:visibility="invisible"
+            android:textColor="#ff333333" />
+
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/ask_share_list"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@+id/ask_share_title"
+            android:layout_marginStart="@dimen/content_padding_15"
+            android:layout_marginTop="20dp"
+            android:layout_marginBottom="15dp"/>
+    </RelativeLayout>
+
+    <include
+        android:id="@+id/title_layout"
+        layout="@layout/title"
+        android:layout_width="match_parent"
+        android:layout_height="60dp"
+        android:layout_alignParentTop="true" />
+
+    <RelativeLayout
+        android:id="@+id/layout_f1"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_above="@id/layout_f"
+        android:layout_below="@id/title_layout"
+        android:background="#F0F0F0">
+
+
+        <TextView
+            android:id="@+id/tv_flags"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="10dp"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:text="左右滑动选择推广页" />
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_above="@id/tv_flags">
+            <ImageView
+                android:id="@+id/blurView"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:scaleType="centerCrop"
+                android:visibility="gone"/>
+
+            <com.kfzs.duanduan.cardview.SpeedRecyclerView
+                android:id="@+id/recyclerViews"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginBottom="30dp"
+                android:layout_marginTop="30dp"
+                android:visibility="gone"/>
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/recyclerView"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </RelativeLayout>
+    </RelativeLayout>
+
+
+</RelativeLayout>

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

@@ -39,8 +39,8 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_toLeftOf="@id/iv_right"
-            android:layout_marginStart="60dp"
-            android:layout_marginEnd="60dp"
+            android:layout_marginStart="30dp"
+            android:layout_marginEnd="30dp"
             android:layout_toRightOf="@+id/iv_back"
             app:tabIndicatorHeight="0dp" />
 

+ 1 - 3
app/src/main/res/layout/activity_messagesystem.xml

@@ -12,18 +12,16 @@
         android:layout_height="wrap_content"
         android:layout_marginStart="16dp"
         android:layout_marginTop="10dp"
-        android:text="xxxx任务上线"
         android:textColor="#ff333333"
         android:textSize="18sp" />
 
     <TextView
         android:id="@+id/tv_content"
-        android:layout_width="328dp"
+        android:layout_width="match_parent"
         android:layout_height="48dp"
         android:layout_marginEnd="16dp"
         android:layout_marginStart="16dp"
         android:layout_marginTop="15dp"
-        android:text="xx任务上线,限量1000分,任务奖励1元,赶紧去领取吧~!xx任务上线,限量1000分,任务奖励1元,赶紧去领取吧~!"
         android:textColor="#ff666666"
         android:textSize="13sp" />
 </LinearLayout>

+ 21 - 0
app/src/main/res/layout/adapter_invitationpictureadapter.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ImageView
+        android:id="@+id/iv_picture"
+        android:layout_width="200dp"
+        android:layout_height="350dp"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="10dp"/>
+
+    <TextView
+        android:id="@+id/tv_position"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="10dp"
+        android:text="1232312" />
+</LinearLayout>

+ 1 - 2
app/src/main/res/layout/adapter_message_left_fragment.xml

@@ -16,8 +16,7 @@
             android:layout_height="40dp"
             android:layout_marginBottom="15dp"
             android:layout_marginStart="17dp"
-            android:layout_marginTop="15dp"
-            android:src="@mipmap/add_black_img" />
+            android:layout_marginTop="15dp" />
 
         <RelativeLayout
             android:layout_width="match_parent"

+ 13 - 15
app/src/main/res/layout/ask_to_share.xml

@@ -14,7 +14,7 @@
             android:id="@+id/ask_share_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:padding="@dimen/content_padding_15"
+            android:padding="10dp"
             android:text="邀请好友"
             android:textColor="#ff333333"
             android:textSize="14sp" />
@@ -29,7 +29,6 @@
             android:background="@drawable/shape_blue_stroke_withe_radius_5"
             android:gravity="center"
             android:text="复制"
-            android:visibility="gone"
             android:textColor="@color/white" />
 
         <TextView
@@ -41,7 +40,6 @@
             android:layout_toLeftOf="@id/tv_copy"
             android:gravity="center"
             android:text="12332"
-            android:visibility="gone"
             android:textColor="#ff333333" />
 
         <TextView
@@ -53,7 +51,6 @@
             android:layout_toLeftOf="@id/tv_invitation_code"
             android:gravity="center"
             android:text="你的邀请码:"
-            android:visibility="gone"
             android:textColor="#ff333333" />
 
 
@@ -72,20 +69,21 @@
        android:layout_height="450dp"
        android:id="@+id/layout_f1"
        android:layout_above="@id/layout_f"
-       android:visibility="gone">
-       <ImageView
-           android:id="@+id/blurView"
-           android:layout_width="match_parent"
-           android:layout_height="match_parent"
-           android:background="#3f000000"
-           android:scaleType="centerCrop"/>
+       android:background="@color/white">
+
 
-       <com.kfzs.duanduan.cardview.SpeedRecyclerView
-           android:id="@+id/recyclerView"
+       <TextView
+           android:id="@+id/tv_flags"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:text="左右滑动选择推广页"
+           android:layout_alignParentBottom="true"
+           android:layout_centerHorizontal="true"/>
+       <android.support.v7.widget.RecyclerView
+           android:id="@+id/recycle_picture"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
-           android:layout_marginBottom="30dp"
-           android:layout_marginTop="30dp"/>
+           android:layout_above="@id/tv_flags"/>
    </RelativeLayout>
 
     <View

+ 7 - 11
app/src/main/res/layout/fgt_try_makemoney_layout.xml

@@ -3,22 +3,18 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="@dimen/content_padding_10"
-    android:paddingStart="4dp"
-    android:paddingEnd="4dp">
+    android:paddingEnd="4dp"
+    android:paddingStart="4dp">
 
     <include
         android:id="@+id/empty_view"
         layout="@layout/empty_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
-    <!--<com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout-->
-        <!--android:id="@+id/refresh"-->
-        <!--android:layout_width="match_parent"-->
-        <!--android:layout_height="wrap_content">-->
 
-        <com.jcodecraeer.xrecyclerview.XRecyclerView
-            android:id="@+id/recyclerview"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
-    <!--</com.sheep.gamegroup.view.customview.SheepmSwipeRefreshLayout>-->
+    <com.jcodecraeer.xrecyclerview.XRecyclerView
+        android:id="@+id/recyclerview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:descendantFocusability="blocksDescendants" />
 </RelativeLayout>

+ 3 - 1
app/src/main/res/layout/layout_fragment_mseeages.xml

@@ -16,6 +16,7 @@
             android:gravity="center_vertical"
             android:textColor="#ff666666"
             android:textSize="15sp"
+            android:textStyle="bold"
             android:text="消息中心" />
 
         <ImageView
@@ -25,7 +26,8 @@
            android:layout_marginTop="20dp"
             android:layout_marginStart="-5dp"
             android:layout_toRightOf="@id/tv_message"
-            android:src="@drawable/shape_litter_red_circle" />
+            android:src="@drawable/shape_litter_red_circle"
+            android:visibility="gone"/>
     </RelativeLayout>
 
 

+ 29 - 0
app/src/main/res/layout/view_image.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="350dp"
+    android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:id="@+id/layout_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <com.sheep.gamegroup.helper.CustomRoundAngleImageView
+            android:id="@+id/image"
+            android:layout_width="350dp"
+            android:layout_height="match_parent"
+            android:layout_centerInParent="true"
+            android:layout_marginBottom="20dp"
+            android:layout_marginTop="20dp"
+            android:scaleType="centerCrop" />
+
+        <ImageView
+            android:id="@+id/iv_er"
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:layout_marginBottom="60dp"
+            android:src="@mipmap/sheep_logo" />
+    </RelativeLayout>
+</RelativeLayout>

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


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