xiongzhu пре 7 година
родитељ
комит
afe7ca3ae3
43 измењених фајлова са 592 додато и 24 уклоњено
  1. 2 2
      app/build.gradle
  2. 1 0
      app/src/main/java/com/android/chmo/http/response/TopActivityRes.java
  3. 12 0
      app/src/main/java/com/android/chmo/http/service/PayService.java
  4. 2 2
      app/src/main/java/com/android/chmo/model/ActivityInfo.java
  5. 99 12
      app/src/main/java/com/android/chmo/ui/activity/WebViewActivity.java
  6. 14 1
      app/src/main/java/com/android/chmo/ui/activity/model/ModelDetailActivity.java
  7. 156 0
      app/src/main/java/com/android/chmo/ui/dialog/SendGiftDialog.java
  8. 1 1
      app/src/main/java/com/android/chmo/ui/fragment/home/ActivitiesFragment.java
  9. 4 0
      app/src/main/java/com/android/chmo/ui/view/TopBar.java
  10. 5 0
      app/src/main/res/drawable/bg_btn_send_gift.xml
  11. 9 0
      app/src/main/res/drawable/bg_dialog_send_gift.xml
  12. 7 0
      app/src/main/res/drawable/bg_gift.xml
  13. 4 0
      app/src/main/res/drawable/bg_gift_selector.xml
  14. 7 6
      app/src/main/res/layout/dialog_loading.xml
  15. 269 0
      app/src/main/res/layout/dialog_send_gift.xml
  16. BIN
      app/src/main/res/mipmap-hdpi/icon_bofang.png
  17. BIN
      app/src/main/res/mipmap-hdpi/liwu_icon_bijini.png
  18. BIN
      app/src/main/res/mipmap-hdpi/liwu_icon_hunsha.png
  19. BIN
      app/src/main/res/mipmap-hdpi/liwu_icon_lanseyaoji.png
  20. BIN
      app/src/main/res/mipmap-hdpi/liwu_icon_meigui.png
  21. BIN
      app/src/main/res/mipmap-hdpi/liwu_icon_youting.png
  22. BIN
      app/src/main/res/mipmap-hdpi/liwu_icon_zuanjie.png
  23. BIN
      app/src/main/res/mipmap-xhdpi/icon_bofang.png
  24. BIN
      app/src/main/res/mipmap-xhdpi/liwu_icon_bijini.png
  25. BIN
      app/src/main/res/mipmap-xhdpi/liwu_icon_hunsha.png
  26. BIN
      app/src/main/res/mipmap-xhdpi/liwu_icon_lanseyaoji.png
  27. BIN
      app/src/main/res/mipmap-xhdpi/liwu_icon_meigui.png
  28. BIN
      app/src/main/res/mipmap-xhdpi/liwu_icon_youting.png
  29. BIN
      app/src/main/res/mipmap-xhdpi/liwu_icon_zuanjie.png
  30. BIN
      app/src/main/res/mipmap-xxhdpi/icon_bofang.png
  31. BIN
      app/src/main/res/mipmap-xxhdpi/liwu_icon_bijini.png
  32. BIN
      app/src/main/res/mipmap-xxhdpi/liwu_icon_hunsha.png
  33. BIN
      app/src/main/res/mipmap-xxhdpi/liwu_icon_lanseyaoji.png
  34. BIN
      app/src/main/res/mipmap-xxhdpi/liwu_icon_meigui.png
  35. BIN
      app/src/main/res/mipmap-xxhdpi/liwu_icon_youting.png
  36. BIN
      app/src/main/res/mipmap-xxhdpi/liwu_icon_zuanjie.png
  37. BIN
      app/src/main/res/mipmap-xxxhdpi/icon_bofang.png
  38. BIN
      app/src/main/res/mipmap-xxxhdpi/liwu_icon_bijini.png
  39. BIN
      app/src/main/res/mipmap-xxxhdpi/liwu_icon_hunsha.png
  40. BIN
      app/src/main/res/mipmap-xxxhdpi/liwu_icon_lanseyaoji.png
  41. BIN
      app/src/main/res/mipmap-xxxhdpi/liwu_icon_meigui.png
  42. BIN
      app/src/main/res/mipmap-xxxhdpi/liwu_icon_youting.png
  43. BIN
      app/src/main/res/mipmap-xxxhdpi/liwu_icon_zuanjie.png

+ 2 - 2
app/build.gradle

@@ -7,8 +7,8 @@ android {
         applicationId "com.android.chmo"
         minSdkVersion 15
         targetSdkVersion 28
-        versionCode 106
-        versionName "1.0.6"
+        versionCode 107
+        versionName "1.0.7"
         ndk {
             abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
         }

+ 1 - 0
app/src/main/java/com/android/chmo/http/response/TopActivityRes.java

@@ -7,6 +7,7 @@ public class TopActivityRes extends Res {
     public List<TopActivity> data;
 
     public class TopActivity {
+        public String PK;
         public String url;
         public String banner;
         public String Pic;

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

@@ -39,4 +39,16 @@ public class PayService {
         params.addQueryStringParameter("account", account);
         return HttpApi.GET(params, callback);
     }
+
+    public static Callback.Cancelable sendGift(String modelpk, String activitypk, String price, String name, RequestCallback callback) {
+        LoginUser user = ChmoApplication.getApp().getLoginUser();
+        RequestParams params = getRequestParams();
+        params.addQueryStringParameter("action", "sendgift");
+        params.addQueryStringParameter("memberpk", user.pk);
+        params.addQueryStringParameter("activitypk", activitypk);
+        params.addQueryStringParameter("modelpk", modelpk);
+        params.addQueryStringParameter("coin", price);
+        params.addQueryStringParameter("giftname", name);
+        return HttpApi.GET(params, callback);
+    }
 }

+ 2 - 2
app/src/main/java/com/android/chmo/model/ActivityInfo.java

@@ -12,6 +12,6 @@ public class ActivityInfo {
     public String  Ent;
     public String  banner;
     public String  url;
-    public boolean isTop;
-    public boolean IsBanner;
+    public int isTop;
+    public int IsBanner;
 }

+ 99 - 12
app/src/main/java/com/android/chmo/ui/activity/WebViewActivity.java

@@ -7,6 +7,7 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.os.Build;
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
@@ -35,9 +36,17 @@ 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.http.RequestCallback;
+import com.android.chmo.http.response.ModelListRes;
+import com.android.chmo.http.service.ModelService;
+import com.android.chmo.model.ModelInfo;
+import com.android.chmo.ui.activity.model.FansActivity;
+import com.android.chmo.ui.activity.model.ModelDetailActivity;
+import com.android.chmo.ui.dialog.SendGiftDialog;
 import com.android.chmo.ui.dialog.ShareDialog;
 import com.android.chmo.ui.view.TopBar;
 import com.android.chmo.wxapi.WeChatManager;
+import com.google.gson.Gson;
 import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
 import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
 import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
@@ -54,15 +63,19 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
     TopBar      topBar;
 
     private String      url;
+    private String      activitypk;
+    private String      modelpk;
     private ShareDialog shareDialog;
     private IWXAPI      iwxapi;
-    private String      shareUrl   = HttpApi.BASE_URL + "share.jsp?type=1&code=" + ChmoApplication.getApp().getLoginUser().qrcode;
-    private String      shareTitle = "千模通告";
-    private String      shareDesc  = "模特,网红,空姐,校花,邀您一键视频验证";
+    private String      shareUrl;
+    private String      shareTitle;
+    private String      shareDesc;
 
-    public static void start(Context context, String url) {
+    public static void start(@NonNull Context context, @NonNull String url, @NonNull String activitypk, @NonNull String modelpk) {
         Intent intent = new Intent(context, WebViewActivity.class);
         intent.putExtra("url", url);
+        intent.putExtra("activitypk", activitypk);
+        intent.putExtra("modelpk", modelpk);
         context.startActivity(intent);
         ((Activity) context).overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);
     }
@@ -75,6 +88,8 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
     @Override
     public void initView() {
         url = getIntent().getStringExtra("url");
+        modelpk = getIntent().getStringExtra("modelpk");
+        activitypk = getIntent().getStringExtra("activitypk");
 
         ImageView imageView = new ImageView(this);
         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, getResources().getDimensionPixelSize(R.dimen.top_bar_height));
@@ -108,6 +123,18 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
         webSettings.setSupportZoom(false);
         webSettings.setDisplayZoomControls(false);
 
+        if (!url.contains("?")) {
+            url += "?";
+        }
+        if (!TextUtils.isEmpty(activitypk)) {
+            url += "activitypk=" + activitypk + "&";
+        }
+        if (!TextUtils.isEmpty(modelpk)) {
+            url += "modelpk=" + modelpk + "&";
+        }
+        if (ChmoApplication.isLogin()) {
+            url += "memberpk=" + ChmoApplication.getApp().getLoginUser().getPk();
+        }
         webView.loadUrl(url);
 
         shareDialog = new ShareDialog(this);
@@ -170,8 +197,25 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
     };
 
     @JavascriptInterface
-    public void modelDetail(String memberPK) {
-        Toast.makeText(this, memberPK, Toast.LENGTH_SHORT).show();
+    public void modelDetail(String modelpk) {
+        ModelService.getModelInfo(modelpk, new RequestCallback() {
+            @Override
+            public void onSuccess(String result) {
+                ModelListRes res = new Gson().fromJson(result, ModelListRes.class);
+                if (res.data != null && res.data.size() > 0) {
+                    ModelInfo model = res.data.get(0);
+                    Intent intent = new Intent(getContext(), ModelDetailActivity.class);
+                    intent.putExtra("model", model);
+                    intent.putExtra("modelPk", model.modelpk);
+                    startActivity(intent);
+                    overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);
+                }
+            }
+
+            @Override
+            public void onFailure(String error) {
+            }
+        });
     }
 
     @JavascriptInterface
@@ -192,6 +236,49 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
         shareDesc = desc;
     }
 
+    @JavascriptInterface
+    public void sendGift(String modelpk, String activitypk) {
+        runOnUiThread(() -> {
+            if (!ChmoApplication.isLogin()) {
+                ChmoApplication.showLoginDialog(getContext());
+                return;
+            }
+            SendGiftDialog.present(getContext(), modelpk, activitypk);
+        });
+    }
+
+    @JavascriptInterface
+    public void sendVideo(String modelpk) {
+        ModelService.getModelInfo(modelpk, new RequestCallback() {
+            @Override
+            public void onSuccess(String result) {
+                ModelListRes res = new Gson().fromJson(result, ModelListRes.class);
+                if (res.data != null && res.data.size() > 0) {
+                    ModelInfo model = res.data.get(0);
+                    Intent intent = new Intent(getContext(), ModelDetailActivity.class);
+                    intent.putExtra("model", model);
+                    intent.putExtra("modelPk", model.modelpk);
+                    intent.putExtra("sendVideo", true);
+                    startActivity(intent);
+                    overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);
+                }
+            }
+
+            @Override
+            public void onFailure(String error) {
+            }
+        });
+    }
+
+    @JavascriptInterface
+    public void fansList(String modelpk) {
+        runOnUiThread(() -> {
+            Intent intent = new Intent(this, FansActivity.class);
+            intent.putExtra("modelPK", modelpk);
+            openPage(intent);
+        });
+    }
+
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) {
@@ -210,11 +297,11 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
 
     @Override
     public void onShareWechatSession() {
-        WXWebpageObject webpageObject = new WXWebpageObject(shareUrl);
+        WXWebpageObject webpageObject = new WXWebpageObject(TextUtils.isEmpty(shareUrl) ? url : shareUrl);
         WXMediaMessage message = new WXMediaMessage();
         message.mediaObject = webpageObject;
-        message.title = shareTitle;
-        message.description = shareDesc;
+        message.title = TextUtils.isEmpty(shareTitle) ? "千模通告" : shareTitle;
+        message.description = TextUtils.isEmpty(shareDesc) ? topBar.getTitle() : shareDesc;
         Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
         message.setThumbImage(bmp);
         SendMessageToWX.Req req = new SendMessageToWX.Req();
@@ -225,11 +312,11 @@ public class WebViewActivity extends BaseActivity implements ShareDialog.OnShare
 
     @Override
     public void onShareWechatTimeline() {
-        WXWebpageObject webpageObject = new WXWebpageObject(shareUrl);
+        WXWebpageObject webpageObject = new WXWebpageObject(TextUtils.isEmpty(shareUrl) ? url : shareUrl);
         WXMediaMessage message = new WXMediaMessage();
         message.mediaObject = webpageObject;
-        message.title = shareTitle + "——" + shareDesc;
-        message.description = shareTitle + "——" + shareDesc;
+        message.title = TextUtils.isEmpty(shareTitle) ? topBar.getTitle() : shareTitle;
+        message.description = TextUtils.isEmpty(shareDesc) ? topBar.getTitle() : shareDesc;
         Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
         message.setThumbImage(bmp);
         SendMessageToWX.Req req = new SendMessageToWX.Req();

+ 14 - 1
app/src/main/java/com/android/chmo/ui/activity/model/ModelDetailActivity.java

@@ -43,6 +43,7 @@ import com.android.chmo.ui.adpater.ImagePagerAdapter;
 import com.android.chmo.ui.dialog.ActionSheet;
 import com.android.chmo.ui.dialog.CallRewardDialog;
 import com.android.chmo.ui.dialog.ConfirmDialog;
+import com.android.chmo.ui.dialog.SendGiftDialog;
 import com.android.chmo.ui.dialog.ShareDialog;
 import com.android.chmo.ui.view.PageIndexView;
 import com.android.chmo.ui.view.RoundImageView;
@@ -350,6 +351,10 @@ public class ModelDetailActivity extends BaseActivity implements ShareDialog.OnS
                 if (res.topParty != null) {
                     fillTopParty(res.topParty);
                 }
+
+                if (getIntent().getBooleanExtra("sendVideo", false)) {
+                    sendVideo();
+                }
             }
 
             @Override
@@ -418,7 +423,7 @@ public class ModelDetailActivity extends BaseActivity implements ShareDialog.OnS
     @OnClick(R.id.tv_promote)
     void clickTopParty() {
         if (topParty != null) {
-            WebViewActivity.start(this, topParty.url);
+            WebViewActivity.start(this, topParty.url, topParty.PK, model.modelpk);
         }
     }
 
@@ -564,6 +569,14 @@ public class ModelDetailActivity extends BaseActivity implements ShareDialog.OnS
         openPage(intent);
     }
 
+    @OnClick(R.id.gift)
+    void sendGift() {
+        if (!ChmoApplication.isLogin()) {
+            ChmoApplication.showLoginDialog(this);
+            return;
+        }
+        SendGiftDialog.present(this, model.modelpk, "");
+    }
 
     private void reward(final int value) {
         new ConfirmDialog(this)

+ 156 - 0
app/src/main/java/com/android/chmo/ui/dialog/SendGiftDialog.java

@@ -0,0 +1,156 @@
+package com.android.chmo.ui.dialog;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.chmo.R;
+import com.android.chmo.http.RequestCallback;
+import com.android.chmo.http.response.LoginRes;
+import com.android.chmo.http.response.Res;
+import com.android.chmo.http.service.PayService;
+import com.android.chmo.http.service.UserService;
+import com.android.chmo.model.LoginUser;
+import com.android.chmo.ui.activity.me.RechargeActivity;
+import com.android.chmo.utils.LoginUtils;
+import com.google.gson.Gson;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+
+public class SendGiftDialog extends Dialog {
+    private static String[] giftNames = {"玫瑰", "蓝色妖姬", "比基尼", "婚纱", "钻戒", "豪华游艇"};
+    private static double[] giftCoins = {8, 48, 98, 298, 698, 1598};
+    private        View     selectedView;
+    private        double   balance   = 0;
+    private        String   modelpk;
+    private        String   activitypk;
+
+    @BindView(R.id.tv_balance)
+    TextView tvBalance;
+
+    private SendGiftDialog(@NonNull Context context, String modelpk, String activitypk) {
+        super(context, R.style.DialogStyle);
+        this.modelpk = modelpk;
+        this.activitypk = activitypk;
+    }
+
+    public static void present(Context context, String modelpk, String activitypk) {
+        SendGiftDialog dialog = new SendGiftDialog(context, modelpk, activitypk);
+        dialog.show();
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.dialog_send_gift);
+        ButterKnife.bind(this);
+        Window window = getWindow();
+        WindowManager.LayoutParams wlp = window.getAttributes();
+        wlp.gravity = Gravity.BOTTOM;
+        window.setAttributes(wlp);
+        window.setWindowAnimations(R.style.DialogAnimation);
+        window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
+        getData();
+    }
+
+    private void getData() {
+        UserService.getUser(new RequestCallback() {
+            @Override
+            public void onSuccess(String result) {
+                LoginRes res = new Gson().fromJson(result, LoginRes.class);
+                if (res.data != null) {
+                    LoginUser user = new LoginUser();
+                    user.setUser(res.data);
+                    LoginUtils.saveLoginUser(user);
+                    balance = Double.parseDouble(user.getCoin_a());
+                    tvBalance.setText("余额:" + user.getCoin_a() + "M币");
+                }
+            }
+
+            @Override
+            public void onFailure(String error) {
+            }
+        });
+    }
+
+    @OnClick({R.id.gift0, R.id.gift1, R.id.gift2, R.id.gift3, R.id.gift4, R.id.gift5})
+    void onClickGift(View view) {
+        if (selectedView != null) {
+            selectedView.setSelected(false);
+        }
+        view.setSelected(true);
+        selectedView = view;
+        int position = Integer.valueOf(String.valueOf(view.getTag()));
+
+    }
+
+    @OnClick(R.id.btn_recharge)
+    void recharge() {
+        goRecharge();
+    }
+
+    @OnClick(R.id.btn_send_gift)
+    void sendGift(View view) {
+        if (selectedView == null) {
+            return;
+        }
+        dismiss();
+        int position = Integer.valueOf(String.valueOf(selectedView.getTag()));
+        if (balance < giftCoins[position]) {
+            new ConfirmDialog(getContext())
+                    .setMsg("余额不足,请充值")
+                    .setButton("立即充值", "取消")
+                    .setOutTouchDismiss(true)
+                    .setDialogListener(new ConfirmDialog.DialogListener() {
+                        @Override
+                        public void onOk(Dialog dialog) {
+                            dialog.dismiss();
+                            goRecharge();
+                        }
+
+                        @Override
+                        public void onCancel(Dialog dialog) {
+                            dialog.dismiss();
+                        }
+                    })
+                    .show();
+        } else {
+            LoadingDialog loadingDialog = new LoadingDialog(this.getContext());
+            loadingDialog.show();
+            PayService.sendGift(modelpk, activitypk, giftCoins[position] + "", giftNames[position], new RequestCallback() {
+                @Override
+                public void onSuccess(String result) {
+                    loadingDialog.dismiss();
+                    Res res = new Gson().fromJson(result, Res.class);
+                    if ("success".equals(res.msg)) {
+                        Toast.makeText(getContext(), "赠送成功", Toast.LENGTH_SHORT).show();
+                    } else {
+                        Toast.makeText(getContext(), res.msg, Toast.LENGTH_SHORT).show();
+                    }
+                }
+
+                @Override
+                public void onFailure(String error) {
+                    loadingDialog.dismiss();
+                    Toast.makeText(getContext(), "赠送失败,请稍后再试", Toast.LENGTH_SHORT).show();
+                }
+            });
+        }
+    }
+
+    private void goRecharge() {
+        Intent intent = new Intent(getContext(), RechargeActivity.class);
+        getContext().startActivity(intent);
+    }
+}

+ 1 - 1
app/src/main/java/com/android/chmo/ui/fragment/home/ActivitiesFragment.java

@@ -97,7 +97,7 @@ public class ActivitiesFragment extends BaseFragment implements RefreshListView.
         banner.setOnBannerListener(new OnBannerListener() {
             @Override
             public void OnBannerClick(int position) {
-                WebViewActivity.start(getActivity(), topActivities.get(position).url);
+                WebViewActivity.start(getActivity(), topActivities.get(position).url, topActivities.get(position).PK, "");
             }
         });
         banner.start();

+ 4 - 0
app/src/main/java/com/android/chmo/ui/view/TopBar.java

@@ -88,6 +88,10 @@ public class TopBar extends RelativeLayout {
         titleView.setText(title);
     }
 
+    public String getTitle() {
+        return title;
+    }
+
     public void setRightBtn(String text, OnClickListener listener) {
         rightView.setText(text);
         rightView.setVisibility(View.VISIBLE);

+ 5 - 0
app/src/main/res/drawable/bg_btn_send_gift.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="15dp" />
+</shape>

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

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

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

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

+ 4 - 0
app/src/main/res/drawable/bg_gift_selector.xml

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

+ 7 - 6
app/src/main/res/layout/dialog_loading.xml

@@ -1,23 +1,24 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:gravity="center"
     android:background="@drawable/dialog_bg"
+    android:gravity="center"
+    android:orientation="horizontal"
     android:padding="15dp">
 
     <ProgressBar
         android:layout_width="20dp"
         android:layout_height="20dp"
         android:layout_marginRight="10dp"
-        android:indeterminateTintMode="src_atop"
-        android:indeterminateTint="@color/pink"/>
+        android:indeterminateTint="@color/pink"
+        android:indeterminateTintMode="src_atop" />
+
     <TextView
         android:id="@+id/loading"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:text="正在加载..."
         android:textColor="#999"
-        android:textSize="12sp"
-        android:text="正在加载..."/>
+        android:textSize="12sp" />
 </LinearLayout>

+ 269 - 0
app/src/main/res/layout/dialog_send_gift.xml

@@ -0,0 +1,269 @@
+<?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:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/bg_dialog_send_gift"
+    android:orientation="vertical">
+
+    <com.google.android.flexbox.FlexboxLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="13dp"
+        app:flexDirection="row"
+        app:justifyContent="space_around">
+
+        <LinearLayout
+            android:id="@+id/gift0"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:background="@drawable/bg_gift_selector"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:padding="5dp"
+            android:tag="0">
+
+            <ImageView
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:src="@mipmap/liwu_icon_meigui" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:text="玫瑰"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="17dp"
+                android:layout_marginTop="1dp"
+                android:text="8M币"
+                android:textColor="#ffffc100"
+                android:textSize="12sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/gift1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:background="@drawable/bg_gift_selector"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:padding="5dp"
+            android:tag="1">
+
+            <ImageView
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:src="@mipmap/liwu_icon_lanseyaoji" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:text="蓝色妖姬"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="17dp"
+                android:layout_marginTop="1dp"
+                android:text="48M币"
+                android:textColor="#ffffc100"
+                android:textSize="12sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/gift2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:background="@drawable/bg_gift_selector"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:padding="5dp"
+            android:tag="2">
+
+            <ImageView
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:src="@mipmap/liwu_icon_bijini" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:text="比基尼"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="17dp"
+                android:layout_marginTop="1dp"
+                android:text="98M币"
+                android:textColor="#ffffc100"
+                android:textSize="12sp" />
+        </LinearLayout>
+    </com.google.android.flexbox.FlexboxLayout>
+
+    <com.google.android.flexbox.FlexboxLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        app:flexDirection="row"
+        app:justifyContent="space_around">
+
+        <LinearLayout
+            android:id="@+id/gift3"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:background="@drawable/bg_gift_selector"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:padding="5dp"
+            android:tag="3">
+
+            <ImageView
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:src="@mipmap/liwu_icon_hunsha" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:text="婚纱"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="17dp"
+                android:layout_marginTop="1dp"
+                android:text="298M币"
+                android:textColor="#ffffc100"
+                android:textSize="12sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/gift4"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:background="@drawable/bg_gift_selector"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:padding="5dp"
+            android:tag="4">
+
+            <ImageView
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:src="@mipmap/liwu_icon_zuanjie" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:text="钻戒"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="17dp"
+                android:layout_marginTop="1dp"
+                android:text="698M币"
+                android:textColor="#ffffc100"
+                android:textSize="12sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/gift5"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="5"
+            android:background="@drawable/bg_gift_selector"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:padding="5dp"
+            android:tag="5">
+
+            <ImageView
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:src="@mipmap/liwu_icon_youting" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="18dp"
+                android:text="豪华游艇"
+                android:textColor="#ffffffff"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="17dp"
+                android:layout_marginTop="1dp"
+                android:text="1598M币"
+                android:textColor="#ffffc100"
+                android:textSize="12sp" />
+        </LinearLayout>
+    </com.google.android.flexbox.FlexboxLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="20dp"
+        android:layout_marginTop="5dp"
+        android:layout_marginRight="20dp"
+        android:background="#1AFFFFFF" />
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="44dp"
+        android:gravity="left|center"
+        android:paddingLeft="30dp"
+        android:paddingRight="20dp">
+
+        <TextView
+            android:id="@+id/tv_balance"
+            android:layout_width="wrap_content"
+            android:layout_height="18dp"
+            android:text="余额: 0M币"
+            android:textColor="#ffffffff"
+            android:textSize="13sp" />
+
+        <Button
+            android:id="@+id/btn_recharge"
+            style="@style/Widget.AppCompat.Button.Borderless"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingLeft="20dp"
+            android:paddingRight="20dp"
+            android:text="充值"
+            android:textColor="@color/pink"
+            android:textSize="13sp" />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_weight="1" />
+
+        <Button
+            android:id="@+id/btn_send_gift"
+            style="@style/Widget.AppCompat.Button.Borderless"
+            android:layout_width="70dp"
+            android:layout_height="30dp"
+            android:background="@drawable/bg_btn_send_gift"
+            android:paddingLeft="20dp"
+            android:paddingTop="0dp"
+            android:paddingRight="20dp"
+            android:paddingBottom="0dp"
+            android:text="发送"
+            android:textColor="@color/white"
+            android:textSize="13sp" />
+    </LinearLayout>
+</LinearLayout>

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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