xiongzhu 7 ani în urmă
părinte
comite
4e6b714a2d
66 a modificat fișierele cu 1304 adăugiri și 521 ștergeri
  1. 18 2
      app/build.gradle
  2. BIN
      app/debug.jks
  3. 9 7
      app/src/main/java/com/android/chmo/app/ChmoApplication.java
  4. 13 0
      app/src/main/java/com/android/chmo/http/response/CanChatResponse.java
  5. 22 0
      app/src/main/java/com/android/chmo/http/response/TransferCoinResponse.java
  6. 13 0
      app/src/main/java/com/android/chmo/http/response/WithdrawResponse.java
  7. 12 1
      app/src/main/java/com/android/chmo/http/service/PayService.java
  8. 16 0
      app/src/main/java/com/android/chmo/http/service/UserService.java
  9. 42 39
      app/src/main/java/com/android/chmo/model/ModelInfo.java
  10. 37 7
      app/src/main/java/com/android/chmo/ui/activity/MyWalletActivity.java
  11. 125 67
      app/src/main/java/com/android/chmo/ui/activity/WithdrawActivity.java
  12. 174 98
      app/src/main/java/com/android/chmo/ui/activity/model/ModelDetailActivity.java
  13. 17 17
      app/src/main/java/com/android/chmo/ui/activity/order/SubmitOrderActivity.java
  14. 26 1
      app/src/main/java/com/android/chmo/ui/activity/promote/PromoteActivity.java
  15. 39 3
      app/src/main/java/com/android/chmo/ui/activity/promote/ShareActivity.java
  16. 1 1
      app/src/main/java/com/android/chmo/ui/adpater/MyWalletAdapter.java
  17. 9 7
      app/src/main/java/com/android/chmo/ui/dialog/ConfirmDialog.java
  18. 2 2
      app/src/main/java/com/android/chmo/ui/dialog/PickMonthDialog.java
  19. 6 7
      app/src/main/java/com/android/chmo/ui/dialog/SelectDialog.java
  20. 2 0
      app/src/main/java/com/android/chmo/ui/dialog/ShareDialog.java
  21. 17 13
      app/src/main/java/com/android/chmo/wxapi/WXEntryActivity.java
  22. 14 14
      app/src/main/java/com/android/chmo/wxapi/WeChatManager.java
  23. 5 0
      app/src/main/res/drawable/bg_btn_follow.xml
  24. 5 0
      app/src/main/res/drawable/bg_btn_follow_selected.xml
  25. 5 0
      app/src/main/res/drawable/bg_btn_follow_selector.xml
  26. 5 0
      app/src/main/res/drawable/bg_btn_video.xml
  27. 5 0
      app/src/main/res/drawable/bg_model_info_header.xml
  28. 5 0
      app/src/main/res/drawable/btn_follow_icon_selector.xml
  29. 5 0
      app/src/main/res/drawable/follow_text_size_selector.xml
  30. 8 0
      app/src/main/res/drawable/title_indicator.xml
  31. 162 79
      app/src/main/res/layout/activity_model_detail.xml
  32. 42 33
      app/src/main/res/layout/activity_submit_order.xml
  33. 5 5
      app/src/main/res/layout/activity_withdraw.xml
  34. 33 0
      app/src/main/res/layout/item_model_honor.xml
  35. 41 0
      app/src/main/res/layout/item_model_info.xml
  36. 0 27
      app/src/main/res/layout/item_model_skill.xml
  37. 260 0
      app/src/main/res/layout/model_info_header.xml
  38. 73 58
      app/src/main/res/layout/model_info_layout.xml
  39. BIN
      app/src/main/res/mipmap-hdpi/icon_guanzhu.png
  40. BIN
      app/src/main/res/mipmap-hdpi/icon_guanzhu_pre.png
  41. BIN
      app/src/main/res/mipmap-hdpi/icon_jubao_02.png
  42. BIN
      app/src/main/res/mipmap-hdpi/icon_pingbi.png
  43. BIN
      app/src/main/res/mipmap-hdpi/icon_shipin.png
  44. BIN
      app/src/main/res/mipmap-hdpi/icon_shipin_caise.png
  45. BIN
      app/src/main/res/mipmap-xhdpi/icon_guanzhu.png
  46. BIN
      app/src/main/res/mipmap-xhdpi/icon_guanzhu_pre.png
  47. BIN
      app/src/main/res/mipmap-xhdpi/icon_jubao_02.png
  48. BIN
      app/src/main/res/mipmap-xhdpi/icon_pingbi.png
  49. BIN
      app/src/main/res/mipmap-xhdpi/icon_shipin.png
  50. BIN
      app/src/main/res/mipmap-xhdpi/icon_shipin_caise.png
  51. BIN
      app/src/main/res/mipmap-xxhdpi/icon_guanzhu.png
  52. BIN
      app/src/main/res/mipmap-xxhdpi/icon_guanzhu_pre.png
  53. BIN
      app/src/main/res/mipmap-xxhdpi/icon_jubao_02.png
  54. BIN
      app/src/main/res/mipmap-xxhdpi/icon_pingbi.png
  55. BIN
      app/src/main/res/mipmap-xxhdpi/icon_shipin.png
  56. BIN
      app/src/main/res/mipmap-xxhdpi/icon_shipin_caise.png
  57. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_guanzhu.png
  58. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_guanzhu_pre.png
  59. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_jubao_02.png
  60. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_pingbi.png
  61. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_shipin.png
  62. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_shipin_caise.png
  63. 1 1
      gradle.properties
  64. 11 12
      uikit/res/layout/nim_message_fragment.xml
  65. 10 9
      uikit/src/com/netease/nim/uikit/business/session/fragment/MessageFragment.java
  66. 9 11
      uikit/src/com/netease/nim/uikit/common/util/StatusBarUtil.java

+ 18 - 2
app/build.gradle

@@ -51,9 +51,24 @@ android {
         sourceCompatibility = '1.8'
         targetCompatibility = '1.8'
     }
-
-
+    signingConfigs {
+        debug {
+            storeFile file('debug.jks')
+        }
+        release {
+            storeFile file('release.jks')
+            storePassword "123456"
+            keyAlias "chmo"
+            keyPassword "123456"
+        }
+    }
+    buildTypes {
+        release {
+            signingConfig signingConfigs.release
+        }
+    }
 }
+
 task copyDownloadableDepsToLibs(type: Copy) {
     from configurations.compile
     into 'libs'
@@ -93,4 +108,5 @@ dependencies {
     implementation 'com.github.kenglxn.QRGen:android:2.5.0'
     implementation 'com.android.support:recyclerview-v7:26.1.0'
     implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.2'
+    implementation 'com.google.android:flexbox:1.0.0'
 }

BIN
app/debug.jks


+ 9 - 7
app/src/main/java/com/android/chmo/app/ChmoApplication.java

@@ -1,6 +1,7 @@
 package com.android.chmo.app;
 
 import android.content.Context;
+import android.content.IntentFilter;
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
@@ -14,6 +15,7 @@ import com.android.chmo.im.SessionHelper;
 import com.android.chmo.im.location.ChmoLocationProvider;
 import com.android.chmo.mixpush.ChmoMixPushMessageHandler;
 import com.android.chmo.model.LoginUser;
+import com.android.chmo.receiver.VChatReceiver;
 import com.android.chmo.ui.activity.WelcomeActivity;
 import com.android.chmo.utils.LoginUtils;
 import com.android.chmo.utils.NotifyUtils;
@@ -76,13 +78,13 @@ public class ChmoApplication extends BaseApplication {
             initAVChatKit();
         }
 
-//        IntentFilter filter = new IntentFilter();
-//        filter.addAction("android.chmo.action.CALL");
-//        filter.addAction("android.chmo.action.INCOMING");
-//        filter.addAction("android.chmo.action.BEGIN_VIDEO");
-//        filter.addAction("android.chmo.action.END_VIDEO");
-//        VChatReceiver receiver = new VChatReceiver();
-//        registerReceiver(receiver, filter);
+        IntentFilter filter = new IntentFilter();
+        filter.addAction("android.chmo.action.CALL");
+        filter.addAction("android.chmo.action.INCOMING");
+        filter.addAction("android.chmo.action.BEGIN_VIDEO");
+        filter.addAction("android.chmo.action.END_VIDEO");
+        VChatReceiver receiver = new VChatReceiver();
+        registerReceiver(receiver, filter);
     }
 
     public static ChmoApplication getApp() {

+ 13 - 0
app/src/main/java/com/android/chmo/http/response/CanChatResponse.java

@@ -0,0 +1,13 @@
+package com.android.chmo.http.response;
+
+public class CanChatResponse {
+    private boolean canChat;
+
+    public boolean isCanChat() {
+        return canChat;
+    }
+
+    public void setCanChat(boolean canChat) {
+        this.canChat = canChat;
+    }
+}

+ 22 - 0
app/src/main/java/com/android/chmo/http/response/TransferCoinResponse.java

@@ -0,0 +1,22 @@
+package com.android.chmo.http.response;
+
+public class TransferCoinResponse {
+    private boolean success;
+    private String  error;
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public String getError() {
+        return error;
+    }
+
+    public void setError(String error) {
+        this.error = error;
+    }
+}

+ 13 - 0
app/src/main/java/com/android/chmo/http/response/WithdrawResponse.java

@@ -0,0 +1,13 @@
+package com.android.chmo.http.response;
+
+public class WithdrawResponse {
+    private String msg;
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 12 - 1
app/src/main/java/com/android/chmo/http/service/PayService.java

@@ -19,7 +19,7 @@ public class PayService {
     }
 
     // 发红包
-    public static Callback.Cancelable sendRedPkg(String modelPk,String coin, RequestCallback callback) {
+    public static Callback.Cancelable sendRedPkg(String modelPk, String coin, RequestCallback callback) {
         LoginUser user = ChmoApplication.getApp().getLoginUser();
         RequestParams params = getRequestParams();
         params.addQueryStringParameter("action", "giveRed");
@@ -28,4 +28,15 @@ public class PayService {
         params.addQueryStringParameter("coin", coin);
         return HttpApi.GET(params, callback);
     }
+
+    public static Callback.Cancelable withdraw(String fee, String name, String account, RequestCallback callback) {
+        LoginUser user = ChmoApplication.getApp().getLoginUser();
+        RequestParams params = getRequestParams();
+        params.addQueryStringParameter("action", "alipayoutcash");
+        params.addQueryStringParameter("memberpk", user.pk);
+        params.addQueryStringParameter("fee", fee);
+        params.addQueryStringParameter("name", name);
+        params.addQueryStringParameter("account", account);
+        return HttpApi.GET(params, callback);
+    }
 }

+ 16 - 0
app/src/main/java/com/android/chmo/http/service/UserService.java

@@ -145,4 +145,20 @@ public class UserService {
         params.addQueryStringParameter("memberpk", user.pk);
         return HttpApi.GET(params, callback);
     }
+
+    public static Callback.Cancelable transferCoin(RequestCallback callback) {
+        LoginUser user = ChmoApplication.getApp().getLoginUser();
+        RequestParams params = getRequestParams();
+        params.addQueryStringParameter("action", "transferShareCoin");
+        params.addQueryStringParameter("memberpk", user.pk);
+        return HttpApi.GET(params, callback);
+    }
+
+    public static Callback.Cancelable canChat(RequestCallback callback) {
+        LoginUser user = ChmoApplication.getApp().getLoginUser();
+        RequestParams params = getRequestParams();
+        params.addQueryStringParameter("action", "canChat");
+        params.addQueryStringParameter("memberpk", user.pk);
+        return HttpApi.GET(params, callback);
+    }
 }

+ 42 - 39
app/src/main/java/com/android/chmo/model/ModelInfo.java

@@ -7,44 +7,47 @@ import java.util.List;
  * Created by Administrator on 2018/8/1.
  */
 
-public class ModelInfo implements Serializable{
-    public String modelpk;
-    public String name;
-    public int isattention;
-    public String hphoto;
-    public String occupation;  // 工作
-    public String lname; //签名
-    public String hei; // 身高
-    public String wei; // 体重
-    public String bust; //三围
-    public String wai;
-    public String hip;
-    public int star;
-    public float vprice; // 视频价格
-    public int fcount; // 粉丝数
+public class ModelInfo implements Serializable {
+    public String           modelpk;
+    public String           name;
+    public int              isattention;
+    public String           hphoto;
+    public String           occupation;  // 工作
+    public String           lname; //签名
+    public String           hei; // 身高
+    public String           wei; // 体重
+    public String           bust; //三围
+    public String           wai;
+    public String           hip;
+    public int              star;
+    public float            vprice; // 视频价格
+    public int              fcount; // 粉丝数
     public List<ModelPhoto> modelphoto;
-    public int is_a; // 是否在线
-    public String ucount;
-    public String sex;
-    public String is_v;
-    public String tel;
-    public String areaname;
-    public String addr;
-    public String ratio_r;
-    public String stage;
-    public String ratio_s;
-    public String memberpk;
-    public String dcount;
-    public String shoe;
-    public String eye;
-    public int hair;
-    public String nominate;
-    public String bmemberpk;
-
-    public String ratio_v;
-    public String brokepk;
-    public String cardpk;
-
-    public String skillnames;
-
+    public int              is_a; // 是否在线
+    public String           ucount;
+    public String           sex;
+    public String           is_v;
+    public String           tel;
+    public String           areaname;
+    public String           addr;
+    public String           ratio_r;
+    public String           stage;
+    public String           ratio_s;
+    public String           memberpk;
+    public String           dcount;
+    public String           shoe;
+    public String           eye;
+    public int              hair;
+    public String           nominate;
+    public String           bmemberpk;
+    public String           ratio_v;
+    public String           brokepk;
+    public String           cardpk;
+    public String           skillnames;
+    public String           totalOrder;
+    public String           orderRate;
+    public String           hobby;
+    public String           college;
+    public String           constellation;
+    public String           age;
 }

+ 37 - 7
app/src/main/java/com/android/chmo/ui/activity/MyWalletActivity.java

@@ -16,6 +16,9 @@ import com.android.chmo.model.WalletRecord;
 import com.android.chmo.ui.activity.me.RechargeActivity;
 import com.android.chmo.ui.adpater.MyWalletAdapter;
 import com.android.chmo.ui.dialog.PickMonthDialog;
+import com.bigkoo.pickerview.configure.PickerOptions;
+import com.bigkoo.pickerview.listener.OnTimeSelectListener;
+import com.bigkoo.pickerview.view.TimePickerView;
 import com.google.gson.Gson;
 import com.scwang.smartrefresh.header.WaterDropHeader;
 import com.scwang.smartrefresh.layout.SmartRefreshLayout;
@@ -26,12 +29,13 @@ import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
 
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 import butterknife.BindView;
 import butterknife.OnClick;
 
-public class MyWalletActivity extends BaseActivity implements OnRefreshListener, OnLoadMoreListener, PickMonthDialog.OnPickYearMonthListener {
+public class MyWalletActivity extends BaseActivity implements OnRefreshListener, OnLoadMoreListener, PickMonthDialog.OnPickYearMonthListener, OnTimeSelectListener {
     @BindView(R.id.tv_coin)
     TextView           tvCoin;
     @BindView(R.id.refresh_layout)
@@ -44,7 +48,7 @@ public class MyWalletActivity extends BaseActivity implements OnRefreshListener,
     private int                page = 1;
     private int                year;
     private int                month;
-    private PickMonthDialog    dialog;
+    private TimePickerView     timePicker;
 
     @Override
     protected int getContentResId() {
@@ -68,7 +72,24 @@ public class MyWalletActivity extends BaseActivity implements OnRefreshListener,
         Calendar calendar = Calendar.getInstance();
         year = calendar.get(Calendar.YEAR);
         month = calendar.get(Calendar.MONTH) + 1;
-        dialog = new PickMonthDialog(this);
+
+        PickerOptions pickerOptions = new PickerOptions(PickerOptions.TYPE_PICKER_TIME);
+        pickerOptions.context = this;
+        pickerOptions.textContentConfirm = "确定";
+        pickerOptions.textContentCancel = "取消";
+        pickerOptions.textColorConfirm = this.getResources().getColor(R.color.pink);
+        pickerOptions.textColorCancel = this.getResources().getColor(R.color.gray);
+        pickerOptions.type = new boolean[]{true, true, false, false, false, false};
+        Calendar start = Calendar.getInstance();
+        start.set(Calendar.YEAR, start.get(Calendar.YEAR) - 5);
+        start.set(Calendar.MONTH, 0);
+        pickerOptions.startDate = start;
+        pickerOptions.endDate = Calendar.getInstance();
+        pickerOptions.textSizeContent = 16;
+        pickerOptions.timeSelectListener = this;
+        timePicker = new TimePickerView(pickerOptions);
+        timePicker.setDate(Calendar.getInstance());
+
         getData();
     }
 
@@ -82,10 +103,9 @@ public class MyWalletActivity extends BaseActivity implements OnRefreshListener,
                 if ("success".equals(response.getMsg())) {
                     tvCoin.setText(String.valueOf(response.getAllcoin()));
                     if (page == 1) {
-                        data = response.getData().getData();
-                    } else {
-                        data.addAll(response.getData().getData());
+                        data.clear();
                     }
+                    data.addAll(response.getData().getData());
                     adapter.notifyDataSetChanged();
                     if (response.getData().getCount() == data.size() || response.getData().getCount() == 0) {
                         refreshLayout.setNoMoreData(true);
@@ -112,7 +132,7 @@ public class MyWalletActivity extends BaseActivity implements OnRefreshListener,
                 openPage(RechargeActivity.class);
                 break;
             case R.id.iv_calendar:
-                dialog.show();
+                timePicker.show();
                 break;
         }
     }
@@ -133,5 +153,15 @@ public class MyWalletActivity extends BaseActivity implements OnRefreshListener,
     public void onPickYearMonth(int year, int month) {
         this.year = year;
         this.month = month;
+        refreshLayout.autoRefresh();
+    }
+
+    @Override
+    public void onTimeSelect(Date date, View v) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        this.year = calendar.get(Calendar.YEAR);
+        this.month = calendar.get(Calendar.MONTH) + 1;
+        refreshLayout.autoRefresh();
     }
 }

+ 125 - 67
app/src/main/java/com/android/chmo/ui/activity/WithdrawActivity.java

@@ -1,14 +1,21 @@
 package com.android.chmo.ui.activity;
 
+import android.content.Context;
+import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.text.InputFilter;
 import android.text.Spanned;
 import android.text.TextUtils;
 import android.widget.EditText;
+import android.widget.TextView;
 
 import com.android.chmo.R;
 import com.android.chmo.base.BaseActivity;
+import com.android.chmo.http.RequestCallback;
+import com.android.chmo.http.response.WithdrawResponse;
+import com.android.chmo.http.service.PayService;
+import com.google.gson.Gson;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -23,6 +30,16 @@ public class WithdrawActivity extends BaseActivity {
     EditText etAccount;
     @BindView(R.id.et_amount)
     EditText etAmount;
+    @BindView(R.id.tv_available)
+    TextView tvAvailable;
+
+    private double availableAmount;
+
+    public static void open(Context context, double availableAmount) {
+        Intent intent = new Intent(context, WithdrawActivity.class);
+        intent.putExtra("availableAmount", availableAmount);
+        context.startActivity(intent);
+    }
 
     @Override
     protected int getContentResId() {
@@ -31,90 +48,131 @@ public class WithdrawActivity extends BaseActivity {
 
     @Override
     public void initView() {
-        etAmount.setFilters(new InputFilter[]{new InputFilter() {
-
-            @Override
-
-            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
-                String sourceText = source.toString();
-                String destText = dest.toString();
-                //验证删除等按键
-                if (TextUtils.isEmpty(sourceText)) {
+        availableAmount = getIntent().getDoubleExtra("availableAmount", 0);
+        tvAvailable.setText("最多可提现" + availableAmount + "元");
+        etAmount.setFilters(new InputFilter[]{(source, start, end, dest, dstart, dend) -> {
+            String sourceText = source.toString();
+            String destText = dest.toString();
+            //验证删除等按键
+            if (TextUtils.isEmpty(sourceText)) {
+                return "";
+            }
+            Pattern mPattern = Pattern.compile("([0-9]|\\.)*");
+            Matcher matcher = mPattern.matcher(source);
+            // 已经输入小数点的情况下,只能输入数字
+            if (destText.contains(".")) {
+                if (!matcher.matches()) {
                     return "";
-                }
-                Pattern mPattern = Pattern.compile("([0-9]|\\.)*");
-                Matcher matcher = mPattern.matcher(source);
-                // 已经输入小数点的情况下,只能输入数字
-                if (destText.contains(".")) {
-                    if (!matcher.matches()) {
+                } else {
+                    if (".".contentEquals(source)) {  //只能输入一个小数点
                         return "";
-                    } else {
-                        if (".".equals(source)) {  //只能输入一个小数点
-                            return "";
-                        }
                     }
-                    double sumText = Double.parseDouble(destText + sourceText);
-                    if (sumText > 10000) {
-                        return dest.subSequence(dstart, dend);
-                    }
-                    //验证小数点精度,保证小数点后只能输入2位
-                    int index = destText.indexOf(".");
-                    int length = dend - index;
-                    if (dest.toString() != null && dest.toString().length() > 0 && dest.toString().contains(".")) {
-                        String[] amoArr = (dest.toString()).split("\\.");
-                        int indexPoint = dest.toString().indexOf(".");
-                        if (dstart <= indexPoint) {
-                            if (dend > 0) {
-                                String temp = amoArr[0].substring(0, dend - 1) + sourceText + amoArr[0].substring(dend - 1, amoArr[0].length());
-                                if (Double.parseDouble(temp) > 10000) {
-                                    return "";
-                                }
+                }
+                double sumText = Double.parseDouble(destText + sourceText);
+                if (sumText > 10000) {
+                    return dest.subSequence(dstart, dend);
+                }
+                //验证小数点精度,保证小数点后只能输入2位
+                int index = destText.indexOf(".");
+                int length = dend - index;
+                if (dest.toString() != null && dest.toString().length() > 0 && dest.toString().contains(".")) {
+                    String[] amoArr = (dest.toString()).split("\\.");
+                    int indexPoint = dest.toString().indexOf(".");
+                    if (dstart <= indexPoint) {
+                        if (dend > 0) {
+                            String temp = amoArr[0].substring(0, dend - 1) + sourceText + amoArr[0].substring(dend - 1, amoArr[0].length());
+                            if (Double.parseDouble(temp) > 10000) {
+                                return "";
                             }
-                        } else if (amoArr.length > 1 && amoArr[amoArr.length - 1].length() >= 2) {
-                            return "";
                         }
+                    } else if (amoArr.length > 1 && amoArr[amoArr.length - 1].length() >= 2) {
+                        return "";
                     }
-                    if (length > 10) {
-                        return dest.subSequence(dstart, dend);
+                }
+                if (length > 10) {
+                    return dest.subSequence(dstart, dend);
+                }
+            } else { // 还没有输入小数点.的情况
+                if (".".contentEquals(source) && dest.toString().length() == 0) {
+                    return "0.";
+                } else {
+                    if (dest.toString() != null && dest.toString().length() > 0) {
+                        double sumDou = Double.parseDouble(dest.toString());
+                        if (sumDou > 10000) {
+                            return "";
+                        }
                     }
-                } else { // 还没有输入小数点.的情况
-                    if (source.equals(".") && dest.toString().length() == 0) {
-                        return "0.";
-                    } else {
+                    String[] amoArr = (dest.toString()).split("\\.");
+                    int indexPoint = dest.toString().indexOf(".");
+                    if (dstart <= indexPoint) {
                         if (dest.toString() != null && dest.toString().length() > 0) {
                             double sumDou = Double.parseDouble(dest.toString());
                             if (sumDou > 10000) {
-                                return "";
-                            }
-                        }
-                        String[] amoArr = (dest.toString()).split("\\.");
-                        int indexPoint = dest.toString().indexOf(".");
-                        if (dstart <= indexPoint) {
-                            if (dest.toString() != null && dest.toString().length() > 0) {
-                                double sumDou = Double.parseDouble(dest.toString());
-                                if (sumDou > 10000) {
-                                    return dest.subSequence(dstart, dend);
-                                }
+                                return dest.subSequence(dstart, dend);
                             }
-                        } else if (amoArr.length > 1 && amoArr[amoArr.length - 1].length() >= 2) {
-                            return "";
-                        } else if (source.equals(".") && dest.toString().length() - dstart > 2) {
-                            return "";
                         }
+                    } else if (amoArr.length > 1 && amoArr[amoArr.length - 1].length() >= 2) {
+                        return "";
+                    } else if (".".contentEquals(source) && dest.toString().length() - dstart > 2) {
+                        return "";
                     }
                 }
-                if ((destText + sourceText).length() > 10) {
-                    return dest.subSequence(dstart, dend);
-                }
-                //验证输入金额的大小
-                double sumText = Double.parseDouble(destText + sourceText);
-                if (sumText > 10000) {
-                    return dest.subSequence(dstart, dend);
-                }
-                return dest.subSequence(dstart, dend) + sourceText;
             }
+            if ((destText + sourceText).length() > 10) {
+                return dest.subSequence(dstart, dend);
+            }
+            //验证输入金额的大小
+            double sumText = Double.parseDouble(destText + sourceText);
+            if (sumText > 10000) {
+                return dest.subSequence(dstart, dend);
+            }
+            return dest.subSequence(dstart, dend) + sourceText;
         }});
     }
 
+    @OnClick(R.id.btn_submit)
+    void onClick() {
+        if (TextUtils.isEmpty(etName.getText())) {
+            showToast("请输入姓名");
+        } else if (TextUtils.isEmpty(etAccount.getText())) {
+            showToast("请输入支付宝账号");
+        } else if (TextUtils.isEmpty(etAmount.getText())) {
+            showToast("请输入提现金额");
+        } else {
+            try {
+                double fee = Double.parseDouble(etAmount.getText().toString());
+                String name = etName.getText().toString();
+                String account = etAccount.getText().toString();
+                if (fee <= 0) {
+                    showToast("请输入正确的提现金额");
+                } else if (fee > availableAmount) {
+                    showToast("最多可提现" + availableAmount + "元");
+                } else {
+                    showLoading();
+                    PayService.withdraw(String.valueOf(fee), name, account, new RequestCallback() {
+                        @Override
+                        public void onSuccess(String result) {
+                            hideLoading();
+                            WithdrawResponse response = new Gson().fromJson(result, WithdrawResponse.class);
+                            if ("success".equals(response.getMsg())) {
+                                openPage(WithdrawSuccessActivity.class);
+                                finish();
+                            } else {
+                                showToast("提交失败,请稍后再试");
+                            }
+                        }
+
+                        @Override
+                        public void onFailure(String error) {
+                            hideLoading();
+                            showToast("提交失败,请稍后再试");
+                        }
+                    });
+                }
+            } catch (Exception e) {
+                showToast("请输入正确的提现金额");
+            }
+        }
+    }
 
 }

+ 174 - 98
app/src/main/java/com/android/chmo/ui/activity/model/ModelDetailActivity.java

@@ -3,6 +3,7 @@ package com.android.chmo.ui.activity.model;
 import android.app.Dialog;
 import android.content.Intent;
 import android.support.v4.view.ViewPager;
+import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -17,6 +18,7 @@ import com.android.chmo.app.ChmoApplication;
 import com.android.chmo.app.VChatManager;
 import com.android.chmo.base.BaseActivity;
 import com.android.chmo.http.RequestCallback;
+import com.android.chmo.http.response.CanChatResponse;
 import com.android.chmo.http.response.ModelDetailRes;
 import com.android.chmo.http.response.ModelListRes;
 import com.android.chmo.http.response.Res;
@@ -29,6 +31,7 @@ import com.android.chmo.model.ModelInfo;
 import com.android.chmo.model.ModelLabel;
 import com.android.chmo.model.ModelPhoto;
 import com.android.chmo.model.ModelSkill;
+import com.android.chmo.ui.activity.me.RechargeActivity;
 import com.android.chmo.ui.adpater.ImagePagerAdapter;
 import com.android.chmo.ui.dialog.CallRewardDialog;
 import com.android.chmo.ui.dialog.ConfirmDialog;
@@ -50,44 +53,50 @@ import butterknife.OnClick;
 
 public class ModelDetailActivity extends BaseActivity {
     private ModelInfo model;
-    private String modelPk;
+    private String    modelPk;
 
     private List<ModelSkill> skillList = new ArrayList<>();
-    private List<String> honorList = new ArrayList<>();
-    public List<ModelLabel> labelList = new ArrayList<>();
+    private List<String>     honorList = new ArrayList<>();
+    public  List<ModelLabel> labelList = new ArrayList<>();
 
     @BindView(R.id.images)
-    ViewPager imagePager;
+    ViewPager     imagePager;
     @BindView(R.id.imgIndex)
     PageIndexView imgIndexView;
     @BindView(R.id.status)
-    ImageView statusView;
+    ImageView     statusView;
     @BindView(R.id.name)
-    TextView nameView;
+    TextView      nameView;
     @BindView(R.id.star)
-    StarView starView;
+    StarView      starView;
+    @BindView(R.id.tv_skills)
+    TextView      tvSkills;
     @BindView(R.id.fansCount)
-    TextView fansCountView;
+    TextView      fansCountView;
     @BindView(R.id.follow_btn)
-    Button followBtn;
+    LinearLayout  followBtn;
+    @BindView(R.id.tv_follow)
+    TextView      tvFollow;
     @BindView(R.id.works)
-    TextView worksView;
+    TextView      worksView;
     @BindView(R.id.video_price)
-    TextView videoPice;
+    TextView      videoPice;
     @BindView(R.id.sign)
-    TextView signView;
+    TextView      signView;
     @BindView(R.id.height)
-    TextView heightView;
+    TextView      heightView;
     @BindView(R.id.weight)
-    TextView weightView;
+    TextView      weightView;
     @BindView(R.id.three)
-    TextView threeView;
+    TextView      threeView;
     @BindView(R.id.skill_container)
-    LinearLayout skillContainer;
+    LinearLayout  skillContainer;
     @BindView(R.id.honor_container)
-    LinearLayout honorContainer;
+    LinearLayout  honorContainer;
     @BindView(R.id.label_container)
-    LinearLayout labelContainer;
+    LinearLayout  labelContainer;
+    @BindView(R.id.profile_container)
+    LinearLayout  profileContainer;
 
 
     @OnClick(R.id.back)
@@ -102,17 +111,17 @@ public class ModelDetailActivity extends BaseActivity {
 
     @Override
     public void initView() {
-        if(getIntent().hasExtra("model")) {
-            model = (ModelInfo)getIntent().getSerializableExtra("model");
+        if (getIntent().hasExtra("model")) {
+            model = (ModelInfo) getIntent().getSerializableExtra("model");
             modelPk = model.modelpk;
-        }else if(getIntent().hasExtra("modelPk")) {
+        } else if (getIntent().hasExtra("modelPk")) {
             modelPk = getIntent().getStringExtra("modelPk");
         }
-        int width = PixelUtils.getWindowWidth();
-        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)imagePager.getLayoutParams();
-        lp.width = width;
-        lp.height = width;
-        imagePager.setLayoutParams(lp);
+//        int width = PixelUtils.getWindowWidth();
+//        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imagePager.getLayoutParams();
+//        lp.width = width;
+//        lp.height = width;
+//        imagePager.setLayoutParams(lp);
 
         getModelInfo(modelPk);
 
@@ -121,8 +130,13 @@ public class ModelDetailActivity extends BaseActivity {
         loadDetail();
     }
 
+    @Override
+    protected int getStatusBarStyle() {
+        return STATUS_BAR_STYLE_LIGHT_CONTENT;
+    }
+
     private void fillModelInfo() {
-        if(null == model) {
+        if (null == model) {
             return;
         }
         modelPk = model.modelpk;
@@ -130,26 +144,40 @@ public class ModelDetailActivity extends BaseActivity {
         nameView.setText(model.name);
         signView.setText(model.lname);
         worksView.setText(model.occupation);
+        tvSkills.setText(model.skillnames);
 
-        videoPice.setText(model.vprice + "币/分钟");
-        heightView.setText(model.hei+"cm");
-        weightView.setText(model.wei+"kg");
-        threeView.setText(model.bust + "/" + model.wai + "/" + model.hip);
+        videoPice.setText(model.vprice + "M币/分钟");
+        heightView.setText(model.hei + "cm");
+        weightView.setText(model.wei + "kg");
+        threeView.setText(model.bust + "-" + model.wai + "-" + model.hip);
         starView.setStar(model.star);
-        if(model.is_a == 0) {
+        if (model.is_a == 0) {
             statusView.setImageResource(R.mipmap.status_outline);
-        }else if (model.is_a == 1) {
+        } else if (model.is_a == 1) {
             statusView.setImageResource(R.mipmap.status_online);
-        }else {
+        } else {
             statusView.setImageResource(R.mipmap.status_calling);
         }
         fillFollowBtn();
         fillModelPic(model.modelphoto);
+
+        profileContainer.removeAllViews();
+        addProfile("接单总数", model.totalOrder);
+        addProfile("接听率", model.orderRate + "%");
+        addProfile("城市", model.areaname);
+        addProfile("年龄", model.age);
+        addProfile("职业", model.occupation);
+        addProfile("星座", model.constellation);
+        addProfile("毕业院校", model.college);
+        addProfile("兴趣爱好", model.hobby);
+
     }
 
     private void fillFollowBtn() {
-        fansCountView.setText(model.fcount + "粉丝");
-        followBtn.setBackgroundResource(model.isattention == 1 ? R.mipmap.cancel_follow : R.mipmap.add_follow);
+        fansCountView.setText("粉丝" + model.fcount);
+        followBtn.setSelected(model.isattention == 1);
+        tvFollow.setText(model.isattention == 1 ? "已关注" : "关注");
+        tvFollow.setTextSize(TypedValue.COMPLEX_UNIT_SP, model.isattention == 1 ? 12 : 13);
     }
 
     private void fillModelPic(List<ModelPhoto> photos) {
@@ -167,10 +195,12 @@ public class ModelDetailActivity extends BaseActivity {
             @Override
             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
             }
+
             @Override
             public void onPageSelected(int position) {
                 imgIndexView.setCurIndex(position);
             }
+
             @Override
             public void onPageScrollStateChanged(int state) {
             }
@@ -179,12 +209,12 @@ public class ModelDetailActivity extends BaseActivity {
 
     private void fillModelSkill() {
         skillContainer.removeAllViews();
-        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        lp.topMargin = 2;
+        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+                (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics()));
         for (ModelSkill skill : skillList) {
-            View view = LayoutInflater.from(this).inflate(R.layout.item_model_skill,null);
-            TextView skillText = (TextView) view.findViewById(R.id.skill);
-            TextView priceText = (TextView) view.findViewById(R.id.price);
+            View view = LayoutInflater.from(this).inflate(R.layout.item_model_info, null);
+            TextView skillText = view.findViewById(R.id.skill);
+            TextView priceText = view.findViewById(R.id.price);
             skillText.setText(skill.name);
             priceText.setText(skill.price + "元/小时");
 
@@ -194,28 +224,38 @@ public class ModelDetailActivity extends BaseActivity {
 
     private void fillModelHonor() {
         honorContainer.removeAllViews();
-        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        lp.topMargin = 2;
+        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+                (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics()));
         for (String honor : honorList) {
-            View view = LayoutInflater.from(this).inflate(R.layout.item_model_skill,null);
-            TextView skillText = (TextView) view.findViewById(R.id.skill);
-            skillText.setText(honor);
+            View view = LayoutInflater.from(this).inflate(R.layout.item_model_honor, null);
+            TextView tvName = view.findViewById(R.id.name);
+            tvName.setText(honor);
             honorContainer.addView(view, lp);
         }
     }
 
     private void fillModelLabel() {
         labelContainer.removeAllViews();
-        int[] labelBgs = new int[]{R.drawable.label1, R.drawable.label2,R.drawable.label3};
+        int[] labelBgs = new int[]{R.drawable.label1, R.drawable.label2, R.drawable.label3};
         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 60);
-        lp.rightMargin =15;
-        for (int i=0; i < labelList.size(); i++) {
-            TextView view = (TextView)LayoutInflater.from(this).inflate(R.layout.label_item,null);
+        lp.rightMargin = 15;
+        for (int i = 0; i < labelList.size(); i++) {
+            TextView view = (TextView) LayoutInflater.from(this).inflate(R.layout.label_item, null);
             view.setText(labelList.get(i).name);
             view.setBackgroundResource(labelBgs[i]);
-            labelContainer.addView(view,lp);
+            labelContainer.addView(view, lp);
         }
+    }
 
+    private void addProfile(String name, String value) {
+        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+                (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics()));
+        View view = LayoutInflater.from(this).inflate(R.layout.item_model_info, null);
+        TextView tvName = view.findViewById(R.id.skill);
+        TextView tvValue = view.findViewById(R.id.price);
+        tvName.setText(name);
+        tvValue.setText(value);
+        profileContainer.addView(view, lp);
     }
 
     private void getModelInfo(String modelPk) {
@@ -223,15 +263,16 @@ public class ModelDetailActivity extends BaseActivity {
             @Override
             public void onSuccess(String result) {
                 ModelListRes res = new Gson().fromJson(result, ModelListRes.class);
-                if(res.data != null && res.data.size()>0) {
+                if (res.data != null && res.data.size() > 0) {
                     model = res.data.get(0);
                     fillModelInfo();
                     loadVideoPrice();
-                }else {
+                } else {
                     showToast("模特信息获取失败");
                     finish();
                 }
             }
+
             @Override
             public void onFailure(String error) {
                 showToast("模特信息获取失败");
@@ -245,7 +286,7 @@ public class ModelDetailActivity extends BaseActivity {
             @Override
             public void onSuccess(String result) {
                 ModelDetailRes res = new Gson().fromJson(result, ModelDetailRes.class);
-                if(res.dogetprice != null) {
+                if (res.dogetprice != null) {
                     skillList = res.dogetprice;
                     fillModelSkill();
                 }
@@ -258,6 +299,7 @@ public class ModelDetailActivity extends BaseActivity {
                     fillModelLabel();
                 }
             }
+
             @Override
             public void onFailure(String error) {
             }
@@ -269,12 +311,13 @@ public class ModelDetailActivity extends BaseActivity {
         ModelService.getModelVideoPrice(model.memberpk, new RequestCallback() {
             @Override
             public void onSuccess(String result) {
-                VideoPriceRes res = new Gson().fromJson(result,VideoPriceRes.class);
-                if(res.msg.equals("success")) {
+                VideoPriceRes res = new Gson().fromJson(result, VideoPriceRes.class);
+                if (res.msg.equals("success")) {
                     model.vprice = res.vprice;
-                    videoPice.setText(model.vprice + "币/分钟");
+                    videoPice.setText(model.vprice + "M币/分钟");
                 }
             }
+
             @Override
             public void onFailure(String error) {
             }
@@ -284,7 +327,7 @@ public class ModelDetailActivity extends BaseActivity {
 
     @OnClick(R.id.privateZone)
     public void privateZone() {
-        Intent intent = new Intent(this,ModelZoneActivity.class);
+        Intent intent = new Intent(this, ModelZoneActivity.class);
         intent.putExtra("model", model);
         openPage(intent);
     }
@@ -292,37 +335,69 @@ public class ModelDetailActivity extends BaseActivity {
     @OnClick(R.id.follow_btn)
     public void clickFollow() {
         showLoading();
-        int type = model.isattention == 1 ? 2: 1;
+        int type = model.isattention == 1 ? 2 : 1;
         ModelService.setFollow(model.modelpk, type, new RequestCallback() {
             @Override
             public void onSuccess(String result) {
                 hideLoading();
-                Res res = new Gson().fromJson(result,Res.class);
-                if(res.msg.equals("success")) {
-                    if(model.isattention == 1) {
+                Res res = new Gson().fromJson(result, Res.class);
+                if (res.msg.equals("success")) {
+                    if (model.isattention == 1) {
                         model.isattention = 0;
                         model.fcount--;
-                    }else {
+                    } else {
                         model.isattention = 1;
                         model.fcount++;
                     }
                     fillFollowBtn();
                     EventBus.getDefault().post("followChange");
-                }else {
-                    showToast(model.isattention == 1 ? "取消失败":"关注失败");
+                } else {
+                    showToast(model.isattention == 1 ? "取消失败" : "关注失败");
                 }
             }
 
             @Override
             public void onFailure(String error) {
                 hideLoading();
-                showToast(model.isattention == 1 ? "取消失败":"关注失败");
+                showToast(model.isattention == 1 ? "取消失败" : "关注失败");
             }
         });
     }
 
     @OnClick(R.id.talk)
     public void talk() {
+        showLoading();
+        UserService.canChat(new RequestCallback() {
+            @Override
+            public void onSuccess(String result) {
+                hideLoading();
+                CanChatResponse response = new Gson().fromJson(result, CanChatResponse.class);
+                if (response.isCanChat()) {
+                    NimUIKit.startP2PSession(ModelDetailActivity.this, model.memberpk);
+                } else {
+                    new ConfirmDialog(ModelDetailActivity.this)
+                            .setButton("立即充值", "取消")
+                            .setMsg("聊天功能仅对充值用户开放,立即充值即可聊天")
+                            .setDialogListener(new ConfirmDialog.DialogListener() {
+                                @Override
+                                public void onOk(Dialog dialog) {
+                                    openPage(RechargeActivity.class);
+                                }
+
+                                @Override
+                                public void onCancel(Dialog dialog) {
+                                    dialog.dismiss();
+                                }
+                            })
+                            .show();
+                }
+            }
+
+            @Override
+            public void onFailure(String error) {
+                hideLoading();
+            }
+        });
         NimUIKit.startP2PSession(this, model.memberpk);
     }
 
@@ -350,13 +425,13 @@ public class ModelDetailActivity extends BaseActivity {
     // 视频
     @OnClick(R.id.sendVideo)
     public void sendVideo() {
-        VChatManager.getInstance().startVChat(this,model.memberpk, model.name, model.vprice);
+        VChatManager.getInstance().startVChat(this, model.memberpk, model.name, model.vprice);
     }
 
     // 预约
     @OnClick(R.id.reserve)
     public void reserve() {
-        Intent intent = new Intent(this,ModelReserveActivty.class);
+        Intent intent = new Intent(this, ModelReserveActivty.class);
         intent.putExtra("model", model);
         openPage(intent);
     }
@@ -364,7 +439,7 @@ public class ModelDetailActivity extends BaseActivity {
 
     private void reward(final int value) {
         new ConfirmDialog(this)
-                .setMsg("确定要打赏"+ value+"元?")
+                .setMsg("确定要打赏" + value + "元?")
                 .setDialogListener(new ConfirmDialog.DialogListener() {
                     @Override
                     public void onOk(Dialog dialog) {
@@ -374,11 +449,11 @@ public class ModelDetailActivity extends BaseActivity {
                             @Override
                             public void onSuccess(String result) {
                                 hideLoading();
-                                Res res = new Gson().fromJson(result,Res.class);
+                                Res res = new Gson().fromJson(result, Res.class);
                                 if (res.msg.equals("success")) {
                                     showToast("打赏成功");
                                     LoginUtils.refreshUser();
-                                }else {
+                                } else {
                                     showToast("打赏失败");
                                 }
                             }
@@ -390,6 +465,7 @@ public class ModelDetailActivity extends BaseActivity {
                             }
                         });
                     }
+
                     @Override
                     public void onCancel(Dialog dialog) {
                         dialog.dismiss();
@@ -400,7 +476,7 @@ public class ModelDetailActivity extends BaseActivity {
 
     @OnClick(R.id.report)
     public void report() {
-        Intent intent = new Intent(this,ModelReportActivity.class);
+        Intent intent = new Intent(this, ModelReportActivity.class);
         intent.putExtra("modelPk", model.modelpk);
         openPage(intent);
     }
@@ -409,37 +485,37 @@ public class ModelDetailActivity extends BaseActivity {
     public void shield() {
         new ConfirmDialog(this).setMsg("是否确定屏蔽该模特?")
                 .setDialogListener(new ConfirmDialog.DialogListener() {
-            @Override
-            public void onOk(Dialog dialog) {
-                dialog.dismiss();
-                showLoading();
-                UserService.shieldModel(model.modelpk, new RequestCallback() {
                     @Override
-                    public void onSuccess(String result) {
-                        hideLoading();
-                        Res res = new Gson().fromJson(result,Res.class);
-                        if (res.msg.equals("success")) {
-                            showToast("屏蔽成功");
-                            EventBus.getDefault().post("modelChange");
-                            finish();
-                        }else {
-                            showToast("屏蔽失败");
-                        }
+                    public void onOk(Dialog dialog) {
+                        dialog.dismiss();
+                        showLoading();
+                        UserService.shieldModel(model.modelpk, new RequestCallback() {
+                            @Override
+                            public void onSuccess(String result) {
+                                hideLoading();
+                                Res res = new Gson().fromJson(result, Res.class);
+                                if (res.msg.equals("success")) {
+                                    showToast("屏蔽成功");
+                                    EventBus.getDefault().post("modelChange");
+                                    finish();
+                                } else {
+                                    showToast("屏蔽失败");
+                                }
+                            }
+
+                            @Override
+                            public void onFailure(String error) {
+                                hideLoading();
+                                showToast("屏蔽失败");
+                            }
+                        });
                     }
 
                     @Override
-                    public void onFailure(String error) {
-                        hideLoading();
-                        showToast("屏蔽失败");
+                    public void onCancel(Dialog dialog) {
+                        dialog.dismiss();
                     }
-                });
-            }
-
-            @Override
-            public void onCancel(Dialog dialog) {
-                dialog.dismiss();
-            }
-        }).show();
+                }).show();
     }
 
 }

+ 17 - 17
app/src/main/java/com/android/chmo/ui/activity/order/SubmitOrderActivity.java

@@ -35,13 +35,13 @@ public class SubmitOrderActivity extends BaseActivity {
     @BindView(R.id.image)
     ImageView imageView;
     @BindView(R.id.name)
-    TextView nameView;
+    TextView  nameView;
     @BindView(R.id.work)
-    TextView workView;
+    TextView  workView;
     @BindView(R.id.time)
-    TextView timeView;
+    TextView  timeView;
     @BindView(price)
-    TextView priceView;
+    TextView  priceView;
 
     @BindView(R.id.workName)
     EditText workNameEdit;
@@ -72,7 +72,7 @@ public class SubmitOrderActivity extends BaseActivity {
     public void initView() {
         order = (ModelOrder) getIntent().getSerializableExtra("order");
 
-        int width = PixelUtils.getWindowWidth()/3;
+        int width = PixelUtils.getWindowWidth() / 3;
         LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) imageView.getLayoutParams();
         lp.width = width;
         lp.height = width;
@@ -81,14 +81,14 @@ public class SubmitOrderActivity extends BaseActivity {
     }
 
 
-    private  void  fillView() {
-        if(order.model.modelphoto != null && order.model.modelphoto.size()> 0) {
+    private void fillView() {
+        if (order.model.modelphoto != null && order.model.modelphoto.size() > 0) {
             XUtilsImage.display(imageView, HttpApi.getImgUrl(order.model.modelphoto.get(0).photo), R.mipmap.def_img2);
         }
         nameView.setText(order.model.name);
         workView.setText(order.skill.name);
         timeView.setText(DateUtils.formatDateStr(order.startTime) + "~" + DateUtils.formatDateStr(order.endTime));
-        priceView.setText("¥"+order.skill.price + "/h");
+        priceView.setText("¥" + order.skill.price + "/h");
         totalPriceViw.setText("共计:" + order.hour + "h/¥" + order.totalPrice + "元");
 
         LoginUser user = ChmoApplication.getApp().getLoginUser();
@@ -103,34 +103,34 @@ public class SubmitOrderActivity extends BaseActivity {
         String workAddr = workAddrEdit.getText().toString();
         String remark = remarkEdit.getText().toString();
 
-        if(TextUtils.isEmpty(workName)){
+        if (TextUtils.isEmpty(workName)) {
             showToast("请输入工作名称");
             return;
         }
-        if(TextUtils.isEmpty(contactName)){
+        if (TextUtils.isEmpty(contactName)) {
             showToast("请输入联系人");
             return;
         }
-        if(TextUtils.isEmpty(contactPhone)){
+        if (TextUtils.isEmpty(contactPhone)) {
             showToast("请输入联系方式");
             return;
         }
-        if(TextUtils.isEmpty(workAddr)){
+        if (TextUtils.isEmpty(workAddr)) {
             showToast("请输入工作地址");
             return;
         }
 
         showLoading();
-        OrderService.submitOrder(order, workName, contactName,contactPhone, workAddr, remark, new RequestCallback() {
+        OrderService.submitOrder(order, workName, contactName, contactPhone, workAddr, remark, new RequestCallback() {
             @Override
             public void onSuccess(String result) {
                 hideLoading();
-                OrderRes res = new Gson().fromJson(result,OrderRes.class);
+                OrderRes res = new Gson().fromJson(result, OrderRes.class);
                 if (res.orderpk != null) {
                     Intent intent = new Intent(getContext(), PayOrderActivity.class);
                     intent.putExtra("orderPk", res.orderpk);
                     openPageForResult(intent, 1);
-                }else {
+                } else {
                     showToast("订单提交失败");
                 }
             }
@@ -145,13 +145,13 @@ public class SubmitOrderActivity extends BaseActivity {
 
     @OnClick(R.id.container)
     public void containerClick() {
-        CommonUtils.closeKeybord(workNameEdit,this);
+        CommonUtils.closeKeybord(workNameEdit, this);
     }
 
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if(resultCode == RESULT_OK && requestCode == 1) {
+        if (resultCode == RESULT_OK && requestCode == 1) {
             setResult(RESULT_OK);
             finish();
         }

+ 26 - 1
app/src/main/java/com/android/chmo/ui/activity/promote/PromoteActivity.java

@@ -1,6 +1,7 @@
 package com.android.chmo.ui.activity.promote;
 
 import android.app.Dialog;
+import android.content.Intent;
 import android.view.View;
 import android.widget.TextView;
 
@@ -8,6 +9,7 @@ import com.android.chmo.R;
 import com.android.chmo.base.BaseActivity;
 import com.android.chmo.http.RequestCallback;
 import com.android.chmo.http.response.GetCurrentShareCoinResponse;
+import com.android.chmo.http.response.TransferCoinResponse;
 import com.android.chmo.http.service.UserService;
 import com.android.chmo.im.IMManager;
 import com.android.chmo.ui.activity.LoginActivity;
@@ -16,6 +18,11 @@ import com.android.chmo.ui.dialog.ConfirmDialog;
 import com.android.chmo.utils.CommonUtils;
 import com.android.chmo.utils.LoginUtils;
 import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import org.json.JSONObject;
 
 import butterknife.BindView;
 import butterknife.OnClick;
@@ -57,7 +64,8 @@ public class PromoteActivity extends BaseActivity {
                 openPage(PromoteDetailActivity.class);
                 break;
             case R.id.tv_withdraw:
-                openPage(WithdrawActivity.class);
+                WithdrawActivity.open(this, available);
+                overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);
                 break;
             case R.id.tv_transfer:
                 new ConfirmDialog(this)
@@ -101,6 +109,23 @@ public class PromoteActivity extends BaseActivity {
     }
 
     void transfer() {
+        showLoading();
+        UserService.transferCoin(new RequestCallback() {
+            @Override
+            public void onSuccess(String result) {
+                hideLoading();
+                TransferCoinResponse response = new Gson().fromJson(result, TransferCoinResponse.class);
+                if (response.isSuccess()) {
+                    showToast("转出成功");
+                } else {
+                    showToast(response.getError());
+                }
+            }
 
+            @Override
+            public void onFailure(String error) {
+                hideLoading();
+            }
+        });
     }
 }

+ 39 - 3
app/src/main/java/com/android/chmo/ui/activity/promote/ShareActivity.java

@@ -1,12 +1,23 @@
 package com.android.chmo.ui.activity.promote;
 
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 
 import com.android.chmo.R;
+import com.android.chmo.app.ChmoApplication;
 import com.android.chmo.base.BaseActivity;
+import com.android.chmo.http.HttpApi;
 import com.android.chmo.ui.dialog.ShareDialog;
+import com.android.chmo.wxapi.WeChatManager;
 import com.google.zxing.EncodeHintType;
+import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
+import com.tencent.mm.opensdk.modelmsg.WXImageObject;
+import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
+import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
+import com.tencent.mm.opensdk.openapi.IWXAPI;
 
 import net.glxn.qrgen.android.QRCode;
 
@@ -19,6 +30,7 @@ public class ShareActivity extends BaseActivity implements ShareDialog.OnShareLi
     ImageView ivQrCode;
 
     private ShareDialog shareDialog;
+    private IWXAPI      iwxapi;
 
     @Override
     protected int getContentResId() {
@@ -32,9 +44,12 @@ public class ShareActivity extends BaseActivity implements ShareDialog.OnShareLi
 
     @Override
     public void initView() {
-        ivQrCode.setImageBitmap(QRCode.from("hello").withSize(512, 512).withHint(EncodeHintType.MARGIN, 0).bitmap());
+        ivQrCode.post(() -> ivQrCode.setImageBitmap(QRCode.from(HttpApi.BASE_URL + "share.jsp?type=1&code=" + ChmoApplication.getApp().getLoginUser().qrcode).withSize(512, 512).withHint(EncodeHintType.MARGIN, 0).bitmap()));
         shareDialog = new ShareDialog(this);
         shareDialog.setOnShareListener(this);
+        WeChatManager weChatManager = WeChatManager.getInstance();
+        weChatManager.init(this);
+        iwxapi = weChatManager.getApi();
     }
 
     @OnClick({R.id.back, R.id.btn_invite})
@@ -51,11 +66,32 @@ public class ShareActivity extends BaseActivity implements ShareDialog.OnShareLi
 
     @Override
     public void onShareWechatSession() {
-
+        WXWebpageObject webpageObject = new WXWebpageObject(HttpApi.BASE_URL + "share.jsp?type=1&code=" + ChmoApplication.getApp().getLoginUser().qrcode);
+        WXMediaMessage message = new WXMediaMessage();
+        message.mediaObject = webpageObject;
+        message.title = "千模";
+        message.description = "模特,网红,空姐,校花,邀您一键视频验证";
+        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
+        message.setThumbImage(bmp);
+        SendMessageToWX.Req req = new SendMessageToWX.Req();
+        req.scene = SendMessageToWX.Req.WXSceneSession;
+        req.message = message;
+        boolean success = iwxapi.sendReq(req);
+        Log.d("success", success + "");
     }
 
     @Override
     public void onShareWechatTimeline() {
-
+        WXWebpageObject webpageObject = new WXWebpageObject(HttpApi.BASE_URL + "share.jsp?type=1&code=" + ChmoApplication.getApp().getLoginUser().qrcode);
+        WXMediaMessage message = new WXMediaMessage();
+        message.mediaObject = webpageObject;
+        message.title = "千模——模特,网红,空姐,校花,邀您一键视频验证";
+        message.description = "模特,网红,空姐,校花,邀您一键视频验证";
+        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
+        message.setThumbImage(bmp);
+        SendMessageToWX.Req req = new SendMessageToWX.Req();
+        req.scene = SendMessageToWX.Req.WXSceneTimeline;
+        req.message = message;
+        iwxapi.sendReq(req);
     }
 }

+ 1 - 1
app/src/main/java/com/android/chmo/ui/adpater/MyWalletAdapter.java

@@ -34,7 +34,7 @@ public class MyWalletAdapter extends RecyclerView.Adapter<MyWalletAdapter.MyWall
         WalletRecord record = data.get(position);
         holder.tvAmount.setText(record.getCoin());
         holder.tvName.setText(record.getAtype());
-        holder.tvTime.setText(record.getAtype());
+        holder.tvTime.setText(record.getAdate());
     }
 
     @Override

+ 9 - 7
app/src/main/java/com/android/chmo/ui/dialog/ConfirmDialog.java

@@ -16,9 +16,9 @@ import com.android.chmo.utils.PixelUtils;
 
 
 public class ConfirmDialog extends Dialog {
-    private String msg;
-    private String okStr;
-    private String cancelStr;
+    private String         msg;
+    private String         okStr;
+    private String         cancelStr;
     private DialogListener listener;
 
     public ConfirmDialog(Context context) {
@@ -26,7 +26,7 @@ public class ConfirmDialog extends Dialog {
         setOnCancelListener(new OnCancelListener() {
             @Override
             public void onCancel(DialogInterface dialog) {
-                if(listener != null) {
+                if (listener != null) {
                     listener.onCancel(ConfirmDialog.this);
                 }
             }
@@ -60,7 +60,8 @@ public class ConfirmDialog extends Dialog {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.dialog_confirm);
         Window window = getWindow();
-         WindowManager.LayoutParams lp = window.getAttributes();
+        window.setWindowAnimations(R.style.DialogAnimation);
+        WindowManager.LayoutParams lp = window.getAttributes();
         lp.width = PixelUtils.getWindowWidth();
         lp.gravity = Gravity.BOTTOM;
         window.setAttributes(lp);
@@ -80,7 +81,7 @@ public class ConfirmDialog extends Dialog {
         cancelBtn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if(listener != null) {
+                if (listener != null) {
                     listener.onCancel(ConfirmDialog.this);
                 }
             }
@@ -89,7 +90,7 @@ public class ConfirmDialog extends Dialog {
         okBtn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                if(listener != null) {
+                if (listener != null) {
                     listener.onOk(ConfirmDialog.this);
                 }
             }
@@ -98,6 +99,7 @@ public class ConfirmDialog extends Dialog {
 
     public interface DialogListener {
         void onOk(Dialog dialog);
+
         void onCancel(Dialog dialog);
     }
 }

+ 2 - 2
app/src/main/java/com/android/chmo/ui/dialog/PickMonthDialog.java

@@ -52,7 +52,7 @@ public class PickMonthDialog extends Dialog {
         window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
 
         Calendar calendar = Calendar.getInstance();
-        yearPicker.setYearEnd(calendar.get(Calendar.YEAR) - 5);
+        yearPicker.setYearStart(calendar.get(Calendar.YEAR) - 5);
         yearPicker.setYearEnd(calendar.get(Calendar.YEAR));
         yearPicker.setSelectedYear(calendar.get(Calendar.YEAR));
         monthPicker.setSelectedMonth(calendar.get(Calendar.MONTH + 1));
@@ -66,7 +66,7 @@ public class PickMonthDialog extends Dialog {
                 break;
             case R.id.tv_confirm:
                 if (onPickYearMonthListener != null) {
-                    onPickYearMonthListener.onPickYearMonth(yearPicker.getSelectedYear(), monthPicker.getSelectedMonth());
+                    onPickYearMonthListener.onPickYearMonth(yearPicker.getSelectedYear(), monthPicker.getSelectedItemPosition() + 1);
                 }
                 dismiss();
         }

+ 6 - 7
app/src/main/java/com/android/chmo/ui/dialog/SelectDialog.java

@@ -51,13 +51,13 @@ public class SelectDialog extends Dialog {
         lp.width = PixelUtils.getWindowWidth();
         lp.gravity = Gravity.BOTTOM;
         window.setAttributes(lp);
-
+        window.setWindowAnimations(R.style.DialogAnimation);
         container = (LinearLayout) findViewById(R.id.container);
 
 
-        if(items != null) {
-            for (int i=0; i < items.length; i++) {
-                container.addView(getItem(items[i],i));
+        if (items != null) {
+            for (int i = 0; i < items.length; i++) {
+                container.addView(getItem(items[i], i));
             }
         }
 
@@ -70,14 +70,14 @@ public class SelectDialog extends Dialog {
     }
 
     private View getItem(String item, final int pos) {
-        View view = LayoutInflater.from(getContext()).inflate(R.layout.select_item,null);
+        View view = LayoutInflater.from(getContext()).inflate(R.layout.select_item, null);
         TextView textView = (TextView) view.findViewById(R.id.item);
         textView.setText(item);
         textView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 dismiss();
-                if(itemListener != null) {
+                if (itemListener != null) {
                     itemListener.onSelect(pos);
                 }
             }
@@ -86,7 +86,6 @@ public class SelectDialog extends Dialog {
     }
 
 
-
     public interface ItemListener {
 
         void onSelect(int pos);

+ 2 - 0
app/src/main/java/com/android/chmo/ui/dialog/ShareDialog.java

@@ -41,11 +41,13 @@ public class ShareDialog extends Dialog {
                 if (onShareListener != null) {
                     onShareListener.onShareWechatSession();
                 }
+                dismiss();
                 break;
             case R.id.ll_wechat_timeline:
                 if (onShareListener != null) {
                     onShareListener.onShareWechatTimeline();
                 }
+                dismiss();
                 break;
             case R.id.tv_cancel:
                 dismiss();

+ 17 - 13
app/src/main/java/com/android/chmo/wxapi/WXEntryActivity.java

@@ -3,9 +3,12 @@ package com.android.chmo.wxapi;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.widget.Toast;
 
+import com.tencent.mm.opensdk.constants.ConstantsAPI;
 import com.tencent.mm.opensdk.modelbase.BaseReq;
 import com.tencent.mm.opensdk.modelbase.BaseResp;
+import com.tencent.mm.opensdk.modelmsg.SendAuth;
 import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
 
 
@@ -36,18 +39,19 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
     // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
     @Override
     public void onResp(BaseResp resp) {
-//        if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
-//            Toast.makeText(this, "code = " + ((SendAuth.Resp) resp).code, Toast.LENGTH_SHORT).show();
-//        }
-//        switch (resp.errCode) {
-//            case BaseResp.ErrCode.ERR_OK:
-//                break;
-//            case BaseResp.ErrCode.ERR_USER_CANCEL:
-//                break;
-//            case BaseResp.ErrCode.ERR_AUTH_DENIED:
-//                break;
-//            default:
-//                break;
-//        }
+        if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
+            Toast.makeText(this, "code = " + ((SendAuth.Resp) resp).code, Toast.LENGTH_SHORT).show();
+        }
+        switch (resp.errCode) {
+            case BaseResp.ErrCode.ERR_OK:
+                break;
+            case BaseResp.ErrCode.ERR_USER_CANCEL:
+                break;
+            case BaseResp.ErrCode.ERR_AUTH_DENIED:
+                break;
+            default:
+                break;
+        }
+        finish();
     }
 }

+ 14 - 14
app/src/main/java/com/android/chmo/wxapi/WeChatManager.java

@@ -11,13 +11,12 @@ import com.tencent.mm.opensdk.openapi.WXAPIFactory;
  */
 
 public class WeChatManager {
-    private final String APP_ID = "wx2d60e82cb3df6926";
-    private static  WeChatManager wcManager;
+    private final  String        APP_ID = "wx2d60e82cb3df6926";
+    private static WeChatManager wcManager;
 
     private IWXAPI api = null;
 
-
-    private WeChatManager(){
+    private WeChatManager() {
 
     }
 
@@ -30,22 +29,23 @@ public class WeChatManager {
 
     public void init(Context context) {
         api = WXAPIFactory.createWXAPI(context, APP_ID, true);
+        api.registerApp(APP_ID);
     }
 
     public IWXAPI getApi() {
-        return  api;
+        return api;
     }
 
-    public void wxPay(String appid, String partnerid, String prepayid,String noncestr, String timestamp, String packageValue, String sign,String extData) {
+    public void wxPay(String appid, String partnerid, String prepayid, String noncestr, String timestamp, String packageValue, String sign, String extData) {
         PayReq req = new PayReq();
-        req.appId			= appid;
-        req.partnerId		= partnerid;
-        req.prepayId		= prepayid;
-        req.nonceStr		= noncestr;
-        req.timeStamp		= timestamp;
-        req.packageValue	= packageValue;
-        req.sign			= sign;
-        req.extData			= extData;
+        req.appId = appid;
+        req.partnerId = partnerid;
+        req.prepayId = prepayid;
+        req.nonceStr = noncestr;
+        req.timeStamp = timestamp;
+        req.packageValue = packageValue;
+        req.sign = sign;
+        req.extData = extData;
 
         // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
         api.registerApp(APP_ID);

+ 5 - 0
app/src/main/res/drawable/bg_btn_follow.xml

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

+ 5 - 0
app/src/main/res/drawable/bg_btn_follow_selected.xml

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

+ 5 - 0
app/src/main/res/drawable/bg_btn_follow_selector.xml

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

+ 5 - 0
app/src/main/res/drawable/bg_btn_video.xml

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

+ 5 - 0
app/src/main/res/drawable/bg_model_info_header.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#ffffffff" />
+    <corners android:topLeftRadius="20dp" android:topRightRadius="20dp" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/btn_follow_icon_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_guanzhu_pre" android:state_selected="true"/>
+    <item android:drawable="@mipmap/icon_guanzhu"/>
+</selector>

+ 5 - 0
app/src/main/res/drawable/follow_text_size_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_selected="true" android:textSize="12sp" />
+    <item android:state_selected="true" android:textSize="13sp" />
+</selector>

+ 8 - 0
app/src/main/res/drawable/title_indicator.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <size
+        android:width="6dp"
+        android:height="14dp" />
+    <corners android:radius="3dp" />
+    <solid android:color="#ffff4095" />
+</shape>

+ 162 - 79
app/src/main/res/layout/activity_model_detail.xml

@@ -1,33 +1,106 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/bg">
+    android:orientation="vertical">
+
     <ScrollView
-        android:layout_above="@+id/bottom"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:layout_above="@+id/bottom"
         android:fillViewport="true">
+
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical">
 
-            <include layout="@layout/model_info_layout"/>
+            <include layout="@layout/model_info_header" />
 
-            <TextView
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
+                android:layout_marginTop="10dp"
+                android:background="@color/white"
+                android:gravity="left|center"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="10dp"
+                    android:drawableLeft="@drawable/title_indicator"
+                    android:drawablePadding="4dp"
+                    android:text="个性签名"
+                    android:textColor="#ff000000"
+                    android:textSize="14sp"
+                    android:textStyle="bold" />
+
+                <TextView
+                    android:id="@+id/sign"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginRight="20dp"
+                    android:layout_weight="1"
+                    android:gravity="right"
+                    android:text=""
+                    android:textColor="@color/black"
+                    android:textSize="15sp" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
                 android:background="@color/white"
+                android:orientation="vertical">
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:drawableLeft="@drawable/title_indicator"
+                    android:drawablePadding="4dp"
+                    android:gravity="left|center"
+                    android:paddingLeft="10dp"
+                    android:text="我的标签"
+                    android:textColor="#ff000000"
+                    android:textSize="14sp"
+                    android:textStyle="bold" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="20dp"
+                    android:background="@color/divider" />
+
+                <LinearLayout
+                    android:id="@+id/label_container"
+                    android:layout_width="match_parent"
+                    android:layout_height="50dp"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal"
+                    android:paddingLeft="20dp"
+                    android:paddingRight="20dp">
+
+
+                </LinearLayout>
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="50dp"
                 android:layout_marginTop="10dp"
-                android:padding="13dp"
-                android:drawableLeft="@mipmap/block"
-                android:drawablePadding="5dp"
-                android:gravity="center_vertical"
-                android:textColor="@color/black"
+                android:background="@color/white"
+                android:drawableLeft="@drawable/title_indicator"
+                android:drawablePadding="4dp"
+                android:gravity="left|center"
+                android:paddingLeft="10dp"
+                android:text="技能"
+                android:textColor="#ff000000"
                 android:textSize="14sp"
-                android:text="技能"/>
+                android:textStyle="bold" />
 
             <LinearLayout
                 android:id="@+id/skill_container"
@@ -37,22 +110,22 @@
 
             </LinearLayout>
 
-
             <TextView
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:background="@color/white"
+                android:layout_height="50dp"
                 android:layout_marginTop="10dp"
-                android:padding="13dp"
-                android:drawableLeft="@mipmap/block"
-                android:drawablePadding="5dp"
-                android:gravity="center_vertical"
-                android:textColor="@color/black"
+                android:background="@color/white"
+                android:drawableLeft="@drawable/title_indicator"
+                android:drawablePadding="4dp"
+                android:gravity="left|center"
+                android:paddingLeft="10dp"
+                android:text="个人资料"
+                android:textColor="#ff000000"
                 android:textSize="14sp"
-                android:text="我的荣誉"/>
+                android:textStyle="bold" />
 
             <LinearLayout
-                android:id="@+id/honor_container"
+                android:id="@+id/profile_container"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical">
@@ -61,91 +134,101 @@
 
             <TextView
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:background="@color/white"
+                android:layout_height="50dp"
                 android:layout_marginTop="10dp"
-                android:padding="13dp"
-                android:drawableLeft="@mipmap/block"
-                android:drawablePadding="5dp"
-                android:gravity="center_vertical"
-                android:textColor="@color/black"
+                android:background="@color/white"
+                android:drawableLeft="@drawable/title_indicator"
+                android:drawablePadding="4dp"
+                android:gravity="left|center"
+                android:paddingLeft="10dp"
+                android:text="我的荣誉"
+                android:textColor="#ff000000"
                 android:textSize="14sp"
-                android:text="我的标签"/>
+                android:textStyle="bold" />
 
             <LinearLayout
-                android:id="@+id/label_container"
+                android:id="@+id/honor_container"
                 android:layout_width="match_parent"
-                android:layout_height="50dp"
-                android:paddingLeft="20dp"
-                android:paddingRight="20dp"
-                android:orientation="horizontal"
-                android:gravity="center_vertical"
-                android:layout_marginTop="0.5dp"
-                android:background="@color/white">
-
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
 
             </LinearLayout>
         </LinearLayout>
     </ScrollView>
 
-    <LinearLayout
+    <com.google.android.flexbox.FlexboxLayout
         android:id="@+id/bottom"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
+        android:layout_height="48dp"
         android:layout_alignParentBottom="true"
+        android:background="@color/white"
         android:orientation="horizontal"
-        android:background="@color/white">
-        <LinearLayout
-            android:id="@+id/sendVideo"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:foreground="@drawable/list_selector"
-            android:background="@mipmap/video_btnbg">
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:src="@mipmap/video_btnicon"
-                android:layout_marginRight="6dp"/>
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textSize="15sp"
-                android:textColor="@color/white"
-                android:text="与TA视频"/>
-        </LinearLayout>
+        app:alignItems="center"
+        app:justifyContent="space_around">
 
-        <LinearLayout
+        <Button
             android:id="@+id/reserve"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
+            style="@style/Widget.AppCompat.Button.Borderless"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:minWidth="0dp"
+            android:padding="0dp"
+            android:text="在线预约"
+            android:textColor="@color/pink"
+            android:textSize="14sp"
+            android:textStyle="bold" />
+
+        <Button
+            android:id="@+id/talk"
+            style="@style/Widget.AppCompat.Button.Borderless"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:layout_marginLeft="0.6dp"
-            android:gravity="center"
-            android:foreground="@drawable/list_selector"
-            android:background="@mipmap/reserve_btnbg">
+            android:minWidth="0dp"
+            android:padding="0dp"
+            android:text="与Ta聊天"
+            android:textAllCaps="false"
+            android:textColor="@color/pink"
+            android:textSize="14sp"
+            android:textStyle="bold" />
+
+        <LinearLayout
+            android:id="@+id/sendVideo"
+            android:layout_width="132dp"
+            android:layout_height="38dp"
+            android:background="@drawable/bg_btn_video"
+            android:gravity="center">
+
             <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:src="@mipmap/reserve_btnicon"
-                android:layout_marginRight="6dp"/>
+                android:layout_width="30dp"
+                android:layout_height="30dp"
+                android:layout_marginRight="6dp"
+                android:src="@mipmap/icon_shipin" />
 
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:textSize="15sp"
+                android:layout_marginLeft="4dp"
+                android:text="与Ta视频"
                 android:textColor="@color/white"
-                android:text="在线预约"/>
+                android:textSize="13sp"
+                android:textStyle="bold" />
         </LinearLayout>
-    </LinearLayout>
+    </com.google.android.flexbox.FlexboxLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_above="@id/bottom"
+        android:background="@color/divider" />
 
 
     <ImageView
         android:id="@+id/back"
-        android:layout_width="@dimen/top_bar_height"
-        android:layout_height="@dimen/top_bar_height"
+        android:layout_width="wrap_content"
+        android:layout_height="50dp"
         android:layout_marginTop="20dp"
-        android:padding="14dp"
-        android:src="@mipmap/ic_back_white"/>
+        android:padding="12dp"
+        android:src="@mipmap/icon_back_white" />
 </RelativeLayout>

+ 42 - 33
app/src/main/res/layout/activity_submit_order.xml

@@ -1,27 +1,31 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/container"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/bg"
-    android:orientation="vertical"
-    android:id="@+id/container">
+    android:orientation="vertical">
 
     <com.android.chmo.ui.view.TopBar
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        app:showBorder="true"
+        android:background="@color/white"
         app:topTitle="提交订单" />
 
     <com.android.chmo.ui.view.TouchScrollView
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="1"
+        android:background="@color/white"
         android:fillViewport="true">
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:orientation="vertical">
+            android:orientation="vertical"
+            android:paddingBottom="60dp">
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -86,28 +90,26 @@
 
             <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@color/white"
+                android:layout_height="wrap_content"
                 android:orientation="vertical"
                 android:padding="20dp">
 
-                <LinearLayout
-                    style="@style/HContainer">
+                <LinearLayout style="@style/HContainer">
 
                     <TextView
                         android:layout_width="80dp"
                         android:layout_height="wrap_content"
-                        android:gravity="right"
                         android:layout_marginRight="20dp"
+                        android:gravity="right"
+                        android:text="工作名称:"
                         android:textColor="@color/black"
-                        android:textSize="15sp"
-                        android:text="工作名称:"/>
+                        android:textSize="15sp" />
 
                     <EditText
                         android:id="@+id/workName"
                         style="@style/InputRect"
-                        android:maxLines="1"
-                        android:hint="请输入工作名称"/>
+                        android:hint="请输入工作名称"
+                        android:maxLines="1" />
                 </LinearLayout>
 
                 <LinearLayout
@@ -117,17 +119,17 @@
                     <TextView
                         android:layout_width="80dp"
                         android:layout_height="wrap_content"
-                        android:gravity="right"
                         android:layout_marginRight="20dp"
+                        android:gravity="right"
+                        android:text="联系人:"
                         android:textColor="@color/black"
-                        android:textSize="15sp"
-                        android:text="联系人:"/>
+                        android:textSize="15sp" />
 
                     <EditText
                         android:id="@+id/contactName"
                         style="@style/InputRect"
-                        android:maxLines="1"
-                        android:hint="联系人姓名"/>
+                        android:hint="联系人姓名"
+                        android:maxLines="1" />
                 </LinearLayout>
 
                 <LinearLayout
@@ -137,18 +139,18 @@
                     <TextView
                         android:layout_width="80dp"
                         android:layout_height="wrap_content"
-                        android:gravity="right"
                         android:layout_marginRight="20dp"
+                        android:gravity="right"
+                        android:text="联系方式:"
                         android:textColor="@color/black"
-                        android:textSize="15sp"
-                        android:text="联系方式:"/>
+                        android:textSize="15sp" />
 
                     <EditText
                         android:id="@+id/contactPhone"
                         style="@style/InputRect"
-                        android:maxLines="1"
+                        android:hint="联系人号码"
                         android:inputType="number"
-                        android:hint="联系人号码"/>
+                        android:maxLines="1" />
                 </LinearLayout>
 
                 <LinearLayout
@@ -158,19 +160,19 @@
                     <TextView
                         android:layout_width="80dp"
                         android:layout_height="wrap_content"
-                        android:gravity="right"
                         android:layout_marginRight="20dp"
+                        android:gravity="right"
+                        android:text="工作地点:"
                         android:textColor="@color/black"
-                        android:textSize="15sp"
-                        android:text="工作地点:"/>
+                        android:textSize="15sp" />
 
                     <EditText
                         android:id="@+id/workAddress"
                         style="@style/InputRect"
                         android:layout_height="80dp"
                         android:gravity="top"
-                        android:padding="10dp"
-                        android:hint="填写详细的工作地址"/>
+                        android:hint="填写详细的工作地址"
+                        android:padding="10dp" />
                 </LinearLayout>
 
                 <LinearLayout
@@ -180,23 +182,30 @@
                     <TextView
                         android:layout_width="80dp"
                         android:layout_height="wrap_content"
-                        android:gravity="right"
                         android:layout_marginRight="20dp"
+                        android:gravity="right"
+                        android:text="备注:"
                         android:textColor="@color/black"
-                        android:textSize="15sp"
-                        android:text="备注:"/>
+                        android:textSize="15sp" />
 
                     <EditText
                         android:id="@+id/remark"
                         style="@style/InputRect"
                         android:layout_height="80dp"
                         android:gravity="top"
-                        android:padding="10dp"
-                        android:hint="填写备注信息"/>
+                        android:hint="填写备注信息"
+                        android:padding="10dp" />
                 </LinearLayout>
-
             </LinearLayout>
 
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="20dp"
+                android:layout_marginRight="20dp"
+                android:text="建议您下单前,先与模特视频面试、确定是否符合您的要求,以及模特的时间安排"
+                android:textColor="#999999"
+                android:textSize="13sp" />
 
         </LinearLayout>
 

+ 5 - 5
app/src/main/res/layout/activity_withdraw.xml

@@ -108,8 +108,9 @@
                 android:textStyle="bold" />
 
             <TextView
-                android:layout_width="102dp"
-                android:layout_height="18dp"
+                android:id="@+id/tv_available"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
                 android:layout_marginTop="5dp"
                 android:text="最多可提现0元"
                 android:textColor="#ffff4095"
@@ -148,11 +149,10 @@
         android:layout_weight="1" />
 
     <Button
-        android:id="@+id/pay"
+        android:id="@+id/btn_submit"
         style="@style/largeBtn"
-        android:layout_alignParentBottom="true"
         android:layout_marginLeft="20dp"
         android:layout_marginRight="20dp"
         android:layout_marginBottom="20dp"
-        android:text="立即支付" />
+        android:text="提交申请" />
 </LinearLayout>

+ 33 - 0
app/src/main/res/layout/item_model_honor.xml

@@ -0,0 +1,33 @@
+<?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="50dp"
+    android:background="@color/white">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_alignParentTop="true"
+        android:layout_marginLeft="20dp"
+        android:background="@color/divider" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:paddingLeft="20dp"
+        android:paddingRight="20dp">
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="0dp"
+            android:layout_height="20dp"
+            android:layout_weight="1"
+            android:text="节日主持"
+            android:textColor="#333333"
+            android:textSize="14sp" />
+    </LinearLayout>
+
+
+</RelativeLayout>

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

@@ -0,0 +1,41 @@
+<?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="50dp"
+    android:background="@color/white">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_alignParentTop="true"
+        android:layout_marginLeft="20dp"
+        android:background="@color/divider" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:paddingLeft="20dp"
+        android:paddingRight="20dp">
+
+        <TextView
+            android:id="@+id/skill"
+            android:layout_width="0dp"
+            android:layout_height="20dp"
+            android:layout_weight="1"
+            android:text="节日主持"
+            android:textColor="#666666"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/price"
+            android:layout_width="wrap_content"
+            android:layout_height="21dp"
+            android:text="600元/小时"
+            android:textColor="#ff000000"
+            android:textSize="15sp" />
+    </LinearLayout>
+
+
+</RelativeLayout>

+ 0 - 27
app/src/main/res/layout/item_model_skill.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
-    android:gravity="center_vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/white"
-    android:padding="15dp"
-    android:layout_marginTop="0.5dp">
-
-    <TextView
-        android:id="@+id/skill"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:layout_marginLeft="5dp"
-        android:textColor="#555"
-        android:textSize="14sp"/>
-
-    <TextView
-        android:id="@+id/price"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textColor="#555"
-        android:textSize="14sp"/>
-
-</LinearLayout>

+ 260 - 0
app/src/main/res/layout/model_info_header.xml

@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <android.support.v4.view.ViewPager
+        android:id="@+id/images"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_marginBottom="180dp"
+        android:background="@mipmap/def_img2"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintDimensionRatio="1"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <com.android.chmo.ui.view.PageIndexView
+        android:id="@+id/imgIndex"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom|center_horizontal"
+        android:layout_marginBottom="30dp"
+        app:layout_constraintBottom_toBottomOf="@id/images"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="40dp"
+        android:layout_marginRight="17dp"
+        android:gravity="right"
+        android:orientation="vertical"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <ImageView
+            android:id="@+id/status"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@mipmap/status_outline" />
+
+        <TextView
+            android:id="@+id/report"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="15dp"
+            android:drawableTop="@mipmap/icon_jubao_02"
+            android:gravity="center"
+            android:text="举报"
+            android:textColor="@color/white"
+            android:textSize="12sp" />
+
+
+        <TextView
+            android:id="@+id/shield"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="6dp"
+            android:drawableTop="@mipmap/icon_pingbi"
+            android:gravity="center"
+            android:text="屏蔽"
+            android:textColor="@color/white"
+            android:textSize="12sp" />
+
+        <TextView
+            android:id="@+id/call"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="15dp"
+            android:drawableTop="@mipmap/video_pay"
+            android:drawablePadding="5dp"
+            android:text="直呼"
+            android:textColor="@color/white"
+            android:textSize="14sp"
+            android:visibility="gone" />
+    </LinearLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="200dp"
+        android:background="@drawable/bg_model_info_header"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="20dp"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+
+                android:gravity="center"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="28dp"
+                    android:text="夏秋雨"
+                    android:textColor="#ff000000"
+                    android:textSize="20sp"
+                    android:textStyle="bold" />
+
+                <TextView
+                    android:id="@+id/fansCount"
+                    android:layout_width="58dp"
+                    android:layout_height="17dp"
+                    android:layout_marginLeft="10dp"
+                    android:layout_marginTop="3dp"
+                    android:text="粉丝 4563"
+                    android:textColor="#ff808080"
+                    android:textSize="12sp" />
+
+                <com.android.chmo.ui.view.StarView
+                    android:id="@+id/star"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="4dp" />
+
+                <TextView
+                    android:id="@+id/works"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text=""
+                    android:textColor="@color/white"
+                    android:textSize="14sp" />
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/tv_skills"
+                android:layout_width="171dp"
+                android:layout_height="18dp"
+                android:layout_marginTop="6dp"
+                android:text="节目主持 T台走秀 时装拍摄"
+                android:textColor="#ffff4095"
+                android:textSize="13sp" />
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:gravity="center"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="30dp"
+                    android:layout_height="30dp"
+                    android:src="@mipmap/icon_shipin_caise" />
+
+                <TextView
+                    android:id="@+id/video_price"
+                    android:layout_width="90dp"
+                    android:layout_height="22dp"
+                    android:layout_marginLeft="4dp"
+                    android:text="12M币/分钟"
+                    android:textColor="#ffff4095"
+                    android:textSize="16sp" />
+            </LinearLayout>
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/follow_btn"
+            android:layout_width="60dp"
+            android:layout_height="28dp"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentRight="true"
+            android:layout_marginTop="20dp"
+            android:layout_marginRight="20dp"
+            android:background="@drawable/bg_btn_follow_selector"
+            android:gravity="center">
+
+            <ImageView
+                android:layout_width="15dp"
+                android:layout_height="15dp"
+                android:src="@drawable/btn_follow_icon_selector" />
+
+            <TextView
+                android:id="@+id/tv_follow"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="2dp"
+                android:text="关注"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+        </LinearLayout>
+
+        <com.dd.ShadowLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:layout_marginLeft="12dp"
+            android:layout_marginRight="12dp"
+            android:layout_marginBottom="20dp"
+            android:background="#ffffff"
+            app:sl_cornerRadius="8dp"
+            app:sl_dx="0dp"
+            app:sl_dy="6dp"
+            app:sl_shadowColor="#14000000"
+            app:sl_shadowRadius="8dp">
+
+            <com.google.android.flexbox.FlexboxLayout
+                android:layout_width="match_parent"
+                android:layout_height="56dp"
+                android:background="@drawable/bg_cell"
+                android:paddingLeft="15dp"
+                android:paddingRight="15dp"
+                app:alignItems="center"
+                app:flexDirection="row"
+                app:justifyContent="space_between">
+
+                <TextView
+                    android:id="@+id/height"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="175cm"
+                    android:textColor="@color/black"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:id="@+id/weight"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="50kg"
+                    android:textColor="@color/black"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:id="@+id/three"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:text="90/80/91"
+                    android:textColor="@color/black"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:id="@+id/privateZone"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:text="查看私密空间"
+                    android:textColor="@color/pink"
+                    android:textSize="13sp"
+                    android:textStyle="bold" />
+            </com.google.android.flexbox.FlexboxLayout>
+
+        </com.dd.ShadowLayout>
+    </RelativeLayout>
+
+</android.support.constraint.ConstraintLayout>

+ 73 - 58
app/src/main/res/layout/model_info_layout.xml

@@ -1,83 +1,87 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
     <FrameLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
+
         <android.support.v4.view.ViewPager
             android:id="@+id/images"
             android:layout_width="match_parent"
             android:layout_height="300dp"
-            android:background="@mipmap/def_img2"/>
+            android:background="@mipmap/def_img2" />
 
         <com.android.chmo.ui.view.PageIndexView
             android:id="@+id/imgIndex"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="bottom|center_horizontal"
-            android:layout_marginBottom="10dp"/>
+            android:layout_marginBottom="10dp" />
 
         <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:gravity="right"
             android:layout_gravity="right"
             android:layout_marginTop="40dp"
-            android:layout_marginRight="20dp">
+            android:layout_marginRight="20dp"
+            android:gravity="right"
+            android:orientation="vertical">
+
             <ImageView
                 android:id="@+id/status"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:src="@mipmap/status_outline"/>
+                android:src="@mipmap/status_outline" />
+
             <TextView
                 android:id="@+id/talk"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="15dp"
                 android:drawableTop="@mipmap/talk"
                 android:drawablePadding="5dp"
-                android:layout_marginTop="15dp"
-                android:textSize="14sp"
+                android:text="对话"
                 android:textColor="@color/white"
-                android:text="对话"/>
+                android:textSize="14sp" />
 
 
             <TextView
                 android:id="@+id/report"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
                 android:drawableTop="@mipmap/model_report"
                 android:drawablePadding="5dp"
-                android:layout_marginTop="10dp"
-                android:textSize="14sp"
+                android:text="举报"
                 android:textColor="@color/white"
-                android:text="举报"/>
+                android:textSize="14sp" />
 
 
             <TextView
                 android:id="@+id/shield"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
                 android:drawableTop="@mipmap/model_shield"
                 android:drawablePadding="5dp"
-                android:layout_marginTop="10dp"
-                android:textSize="14sp"
+                android:text="屏蔽"
                 android:textColor="@color/white"
-                android:text="屏蔽"/>
+                android:textSize="14sp" />
 
             <TextView
                 android:id="@+id/call"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="15dp"
                 android:drawableTop="@mipmap/video_pay"
                 android:drawablePadding="5dp"
-                android:layout_marginTop="15dp"
-                android:textSize="14sp"
-                android:textColor="@color/white"
                 android:text="直呼"
-                android:visibility="gone"/>
+                android:textColor="@color/white"
+                android:textSize="14sp"
+                android:visibility="gone" />
         </LinearLayout>
 
 
@@ -85,72 +89,81 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="bottom"
+            android:background="@drawable/half_trans_bg"
             android:orientation="vertical"
             android:paddingLeft="15dp"
-            android:paddingRight="15dp"
-            android:background="@drawable/half_trans_bg">
+            android:paddingRight="15dp">
+
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="horizontal"
                 android:gravity="bottom"
+                android:orientation="horizontal"
                 android:paddingBottom="10dp">
+
                 <TextView
                     android:id="@+id/name"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textSize="16sp"
+                    android:text="姓名"
                     android:textColor="@color/white"
-                    android:text="姓名"/>
+                    android:textSize="16sp" />
+
                 <com.android.chmo.ui.view.StarView
                     android:id="@+id/star"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginBottom="4dp"/>
+                    android:layout_marginBottom="4dp" />
 
                 <View
                     android:layout_width="0dp"
                     android:layout_height="1dp"
-                    android:layout_weight="1"/>
+                    android:layout_weight="1" />
+
                 <LinearLayout
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    android:gravity="center">
+                    android:gravity="center"
+                    android:orientation="vertical">
+
                     <TextView
                         android:id="@+id/fansCount"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginBottom="5dp"
-                        android:textSize="14sp"
+                        android:text="0粉丝"
                         android:textColor="@color/white"
-                        android:text="0粉丝"/>
+                        android:textSize="14sp" />
 
                     <Button
                         android:id="@+id/follow_btn"
                         android:layout_width="wrap_content"
                         android:layout_height="30dp"
-                        android:background="@mipmap/add_follow"/>
+                        android:background="@mipmap/add_follow" />
                 </LinearLayout>
             </LinearLayout>
-            <View android:layout_height="0.5dp"
+
+            <View
                 android:layout_width="match_parent"
-                android:background="@color/white"/>
+                android:layout_height="0.5dp"
+                android:background="@color/white" />
+
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="horizontal"
                 android:gravity="center_vertical"
-                android:paddingBottom="10dp"
-                android:paddingTop="10dp">
+                android:orientation="horizontal"
+                android:paddingTop="10dp"
+                android:paddingBottom="10dp">
+
                 <TextView
                     android:id="@+id/works"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_weight="1"
-                    android:textSize="14sp"
+                    android:text=""
                     android:textColor="@color/white"
-                    android:text=""/>
+                    android:textSize="14sp" />
 
                 <TextView
                     android:id="@+id/video_price"
@@ -159,9 +172,9 @@
                     android:drawableLeft="@mipmap/camera_value"
                     android:drawablePadding="15dp"
                     android:gravity="center"
-                    android:textSize="14sp"
+                    android:text="0 币/分钟"
                     android:textColor="@color/white"
-                    android:text="0 币/分钟"/>
+                    android:textSize="14sp" />
 
             </LinearLayout>
         </LinearLayout>
@@ -170,37 +183,37 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:padding="15dp"
-        android:orientation="horizontal"
+        android:background="@color/white"
         android:gravity="center_vertical"
-        android:background="@color/white">
+        android:orientation="horizontal"
+        android:padding="15dp">
 
         <TextView
             android:id="@+id/height"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="20dp"
+            android:text="175cm"
             android:textColor="@color/black"
-            android:textSize="14sp"
-            android:text="175cm"/>
+            android:textSize="14sp" />
 
         <TextView
             android:id="@+id/weight"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="20dp"
+            android:text="50kg"
             android:textColor="@color/black"
-            android:textSize="14sp"
-            android:text="50kg"/>
+            android:textSize="14sp" />
 
         <TextView
             android:id="@+id/three"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_weight="1"
+            android:text="90/80/91"
             android:textColor="@color/black"
-            android:textSize="14sp"
-            android:text="90/80/91"/>
+            android:textSize="14sp" />
 
         <TextView
             android:id="@+id/privateZone"
@@ -209,11 +222,12 @@
             android:drawableLeft="@mipmap/private_zone"
             android:drawablePadding="5dp"
             android:gravity="center"
-            android:textSize="14sp"
+            android:text="私密空间"
             android:textColor="@color/black"
-            android:text="私密空间"/>
+            android:textSize="14sp" />
     </LinearLayout>
-    <View style="@style/line"/>
+
+    <View style="@style/line" />
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -221,21 +235,22 @@
         android:background="@color/white"
         android:orientation="horizontal"
         android:padding="15dp">
+
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="10dp"
+            android:text="个人签名:"
             android:textColor="@color/black"
-            android:textSize="14sp"
-            android:text="个人签名:"/>
+            android:textSize="14sp" />
 
         <TextView
             android:id="@+id/sign"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_weight="1"
+            android:text=""
             android:textColor="@color/black"
-            android:textSize="14sp"
-            android:text=""/>
+            android:textSize="14sp" />
     </LinearLayout>
 </LinearLayout>

BIN
app/src/main/res/mipmap-hdpi/icon_guanzhu.png


BIN
app/src/main/res/mipmap-hdpi/icon_guanzhu_pre.png


BIN
app/src/main/res/mipmap-hdpi/icon_jubao_02.png


BIN
app/src/main/res/mipmap-hdpi/icon_pingbi.png


BIN
app/src/main/res/mipmap-hdpi/icon_shipin.png


BIN
app/src/main/res/mipmap-hdpi/icon_shipin_caise.png


BIN
app/src/main/res/mipmap-xhdpi/icon_guanzhu.png


BIN
app/src/main/res/mipmap-xhdpi/icon_guanzhu_pre.png


BIN
app/src/main/res/mipmap-xhdpi/icon_jubao_02.png


BIN
app/src/main/res/mipmap-xhdpi/icon_pingbi.png


BIN
app/src/main/res/mipmap-xhdpi/icon_shipin.png


BIN
app/src/main/res/mipmap-xhdpi/icon_shipin_caise.png


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


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


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


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


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


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


BIN
app/src/main/res/mipmap-xxxhdpi/icon_guanzhu.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_guanzhu_pre.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_jubao_02.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_pingbi.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_shipin.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_shipin_caise.png


+ 1 - 1
gradle.properties

@@ -9,7 +9,7 @@
 
 # Specifies the JVM arguments used for the daemon process.
 # The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx1536m -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1087
+org.gradle.jvmargs=-Xmx1536m
 
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit

+ 11 - 12
uikit/res/layout/nim_message_fragment.xml

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout android:id="@+id/messageActivityLayout"
-              xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="match_parent"
-              android:layout_height="match_parent"
-              android:background="@color/color_message_default_bg"
-              android:orientation="vertical">
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/messageActivityLayout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/color_message_default_bg"
+    android:orientation="vertical">
 
     <FrameLayout
         android:id="@+id/message_activity_list_view_container"
@@ -15,7 +15,7 @@
         <com.netease.nim.uikit.business.session.helper.MsgBkImageView
             android:id="@+id/message_activity_background"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
+            android:layout_height="match_parent" />
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -33,8 +33,7 @@
                 android:id="@+id/messageListView"
                 style="@style/recycler_view"
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                />
+                android:layout_height="match_parent" />
         </LinearLayout>
 
         <FrameLayout
@@ -52,7 +51,7 @@
                 android:layout_gravity="center"
                 android:text="@string/timer_default"
                 android:textColor="@color/white"
-                android:textSize="45sp"/>
+                android:textSize="45sp" />
 
             <LinearLayout
                 android:id="@+id/timer_tip_container"
@@ -68,12 +67,12 @@
                     android:layout_gravity="center"
                     android:text="@string/recording_cancel"
                     android:textColor="@color/white"
-                    android:textSize="20sp"/>
+                    android:textSize="20sp" />
             </LinearLayout>
         </FrameLayout>
 
     </FrameLayout>
 
-    <include layout="@layout/nim_message_activity_bottom_layout"/>
+    <include layout="@layout/nim_message_activity_bottom_layout" />
 
 </LinearLayout>

+ 10 - 9
uikit/src/com/netease/nim/uikit/business/session/fragment/MessageFragment.java

@@ -72,7 +72,7 @@ public class MessageFragment extends TFragment implements ModuleProxy {
     protected SessionTypeEnum sessionType;
 
     // modules
-    protected InputPanel inputPanel;
+    protected InputPanel         inputPanel;
     protected MessageListPanelEx messageListPanel;
 
     protected AitManager aitManager;
@@ -109,6 +109,10 @@ public class MessageFragment extends TFragment implements ModuleProxy {
         messageListPanel.onResume();
         NIMClient.getService(MsgService.class).setChattingAccount(sessionId, sessionType);
         getActivity().setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); // 默认使用听筒播放
+
+        if ("system".equals(sessionId)) {
+            findView(R.id.messageActivityBottomLayout).setVisibility(View.GONE);
+        }
     }
 
     @Override
@@ -236,7 +240,7 @@ public class MessageFragment extends TFragment implements ModuleProxy {
             message.setContent("该消息无法发送");
             message.setStatus(MsgStatusEnum.success);
             NIMClient.getService(MsgService.class).saveMessageToLocal(message, false);
-        }else {
+        } else {
             appendTeamMemberPush(message);
             message = changeToRobotMsg(message);
             final IMMessage msg = message;
@@ -261,7 +265,6 @@ public class MessageFragment extends TFragment implements ModuleProxy {
         }
 
 
-
         messageListPanel.onMsgSend(message);
 
         if (aitManager != null) {
@@ -340,7 +343,7 @@ public class MessageFragment extends TFragment implements ModuleProxy {
         if (customConfig != null) {
             String content = customConfig.getPushContent(message);
             Map<String, Object> payload = customConfig.getPushPayload(message);
-            if(!TextUtils.isEmpty(content)){
+            if (!TextUtils.isEmpty(content)) {
                 message.setPushContent(content);
             }
             if (payload != null) {
@@ -414,12 +417,10 @@ public class MessageFragment extends TFragment implements ModuleProxy {
     }
 
 
-
-
     public void checkAudioPermission() {
         MPermission.with(this)
                 .setRequestCode(AUDIO_PERMISSION_REQUEST_CODE)
-                .permissions( new String[] {
+                .permissions(new String[]{
                         Manifest.permission.RECORD_AUDIO}).request();
     }
 
@@ -430,12 +431,12 @@ public class MessageFragment extends TFragment implements ModuleProxy {
     }
 
     @OnMPermissionGranted(AUDIO_PERMISSION_REQUEST_CODE)
-    public void onAudioPermissionSuccess(){
+    public void onAudioPermissionSuccess() {
         inputPanel.audioBiginTouch();
     }
 
     @OnMPermissionDenied(AUDIO_PERMISSION_REQUEST_CODE)
-    public void onAudioPermissionFailed(){
+    public void onAudioPermissionFailed() {
         Toast.makeText(getContext(), "录音所需权限未授权", Toast.LENGTH_SHORT).show();
     }
 }

+ 9 - 11
uikit/src/com/netease/nim/uikit/common/util/StatusBarUtil.java

@@ -33,15 +33,13 @@ public class StatusBarUtil {
             window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
         }
 
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前是不是6.0以上的系统
+            //判断是不是小米系统
+            if (MIUISetStatusBarLightMode(activity.getWindow(), !lightContent)) {
+            } else if (FlymeSetStatusBarLightMode(activity.getWindow(), !lightContent)) {//判断是不是魅族系统
+            } else if (OPPOSetStatusBarLightMode(activity.getWindow(), !lightContent)) {//判断是不是OPPO系统
+            }
 
-        //判断是不是小米系统
-        if (MIUISetStatusBarLightMode(activity.getWindow(), !lightContent)) {
-            return;
-        } else if (FlymeSetStatusBarLightMode(activity.getWindow(), !lightContent)) {//判断是不是魅族系统
-            return;
-        } else if (OPPOSetStatusBarLightMode(activity.getWindow(), !lightContent)) {//判断是不是OPPO系统
-            return;
-        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前是不是6.0以上的系统
             int flag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
             if (lightContent) {
                 flag &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
@@ -49,11 +47,11 @@ public class StatusBarUtil {
                 flag |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
             }
             activity.getWindow().getDecorView().setSystemUiVisibility(flag);
-            return;
-        } else {//如果以上都不符合就只能加个半透明的背景色了
+        } else {
             setTranslucentForCoordinatorLayout(activity, 70);
-            return;
         }
+
+
     }
 
     //带有透明颜色的状态栏