[Modify]寻爱之旅完善

This commit is contained in:
wushaocheng
2023-09-15 17:14:02 +08:00
committed by wzq
parent 642f8ce309
commit 348e63b45e
24 changed files with 851 additions and 40 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_box_selected" android:state_checked="true" />
<item android:drawable="@drawable/ic_box_unselected" android:state_checked="false" />
<item android:drawable="@drawable/ic_box_unselected" />
</selector>

View File

@@ -679,5 +679,16 @@
<color name="color_B8B7C7">#B8B7C7</color>
<color name="color_FAFBFC">#FAFBFC</color>
<color name="color_767585">#767585</color>
<color name="color_F2DE84">#F2DE84</color>
<color name="color_365A65">#365A65</color>
<color name="color_F6F6F6">#F6F6F6</color>
<color name="color_66F6F6F6">#66F6F6F6</color>
<color name="color_3AEAC7">#3AEAC7</color>
<color name="color_FFFEBB">#FFFEBB</color>
<color name="color_8651E0">#8651E0</color>
<color name="color_7748C7">#7748C7</color>
<color name="color_7147E6">#7147E6</color>
<color name="color_FF9A1F">#FF9A1F</color>
<color name="color_A3A0AD">#A3A0AD</color>
</resources>

View File

@@ -5122,5 +5122,7 @@
<string name="level_goddess_gathering_place">顏值女神聚集地</string>
<string name="accompany_and_make_friends">陪伴交友</string>
<string name="interesting_people_are_here">有趣的人都在這</string>
<string name="buy_debris">購買%d個碎片</string>
<string name="buy_love_num">購買%d個愛心</string>
</resources>

View File

@@ -0,0 +1,4 @@
package com.yizhuan.erban.event;
public class BoxLoveEvent {
}

View File

@@ -17,7 +17,6 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
@@ -29,6 +28,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.alibaba.fastjson.JSON;
import com.hjq.toast.ToastUtils;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
@@ -36,11 +36,15 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.databinding.ActivityTreasureBoxBinding;
import com.yizhuan.erban.event.BoxLoveEvent;
import com.yizhuan.erban.treasure_box.widget.dialog.BoxLoveLackDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.BoxMoreDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.BuyLoveDialog;
import com.yizhuan.erban.treasure_box.widget.dialog.TreasureBoxDialog;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.treasure_box.bean.PrizeNewInfo;
import com.yizhuan.treasure_box.bean.UserTicketInfo;
import com.yizhuan.treasure_box.model.BoxModel;
import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.auth.AuthModel;
@@ -59,13 +63,18 @@ import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.xchat_android_core.treasurefairy.FairyMsgInfoBean;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_core.utils.Logger;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import com.yizhuan.xchat_android_library.common.util.SoftKeyboardStateHelper;
import com.yizhuan.xchat_android_library.common.SpConstants;
import com.yizhuan.xchat_android_library.common.util.SPUtils;
import com.yizhuan.xchat_android_library.utils.FormatUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper;
import com.yizhuan.xchat_android_library.utils.TimeUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Objects;
@@ -83,7 +92,10 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
private ObjectAnimator translationYAnimator;
private int height;
private int sendMessageSwitchLevel;
private int price;
private int mNum = 1;
private UserTicketInfo userTicketInfo;
public static void start(Context context) {
Intent starter = new Intent(context, TreasureBoxActivity.class);
@@ -98,8 +110,10 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
getWindow().setGravity(Gravity.BOTTOM);
subscribeEvent();
EventBus.getDefault().register(this);
}
@SuppressLint("CheckResult")
@Override
protected void init() {
mBinding.setClick(this);
@@ -121,45 +135,92 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
if (walletInfo != null) {
mBinding.tvDiamondNum.setText(FormatUtils.formatBigInteger(walletInfo.getDiamondNum()));
}
mBinding.editNum.addTextChangedListener(new TextWatcherWrapper() {
@Override
public void afterTextChanged(Editable editable) {
int num = StringUtils.toInt(mBinding.editNum.getText().toString(), 0);
if (num > 200) {
mBinding.editNum.setText("200");
mBinding.editNum.setSelection(3);
SingleToastUtil.showToast(ResUtil.getString(R.string.treasure_box_activity_treasureboxactivity_01));
mBinding.view1.setOnClickListener(v -> setBoxPriceSelect(1));
mBinding.view2.setOnClickListener(v -> setBoxPriceSelect(2));
mBinding.view3.setOnClickListener(v -> setBoxPriceSelect(3));
mBinding.tvBuy.setOnClickListener(v -> {
if (userTicketInfo != null) {
long date = SPUtils.getLong(SpConstants.BOX_BUY_LOVE, 0L);
if (date != 0L) {
if (TimeUtils.isToday(date)) {
BoxModel.get()
.buyTicket(mNum)
.compose(bindToLifecycle())
.subscribe(userTicketInfo -> {
ToastUtils.show("購買成功");
loadUserTicket();
});
} else {
BuyLoveDialog.Companion.newInstance(mNum, (int) userTicketInfo.getTicketPrice()).show(this);
}
} else {
BuyLoveDialog.Companion.newInstance(mNum, (int) userTicketInfo.getTicketPrice()).show(this);
}
}
});
mBinding.view1.setSelected(true);
mBinding.tv1.setAlpha(1f);
loadUserTicket();
loadKeyInfo();
looperPrize();
looperHintPrize();
new SoftKeyboardStateHelper(mBinding.editNum).addSoftKeyboardStateListener(new SoftKeyboardStateHelper.SoftKeyboardStateListener() {
@Override
public void onSoftKeyboardOpened(int keyboardHeightInPx) {
}
}
/**
* 购买爱心回调
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onBoxLoveEvent(BoxLoveEvent event) {
loadUserTicket();
}
@Override
public void onSoftKeyboardClosed() {
int num = StringUtils.toInt(mBinding.editNum.getText().toString(), 0);
if (num == 0) {
mBinding.editNum.setText("1");
mBinding.editNum.setSelection(1);
}
}
});
@SuppressLint("CheckResult")
private void loadUserTicket() {
BoxModel.get()
.getUserTicket()
.compose(bindToLifecycle())
.subscribe(userTicketInfo -> {
this.userTicketInfo = userTicketInfo;
mBinding.tvBoxNum.setText(String.valueOf(userTicketInfo.getTicketNum()));
});
}
private void setBoxPriceSelect(int pos) {
if (pos == 1) {
mNum = 1;
mBinding.view1.setSelected(true);
mBinding.view2.setSelected(false);
mBinding.view3.setSelected(false);
mBinding.tv1.setAlpha(1f);
mBinding.tv2.setAlpha(0.4f);
mBinding.tv3.setAlpha(0.4f);
} else if (pos == 2) {
mNum = 10;
mBinding.view1.setSelected(false);
mBinding.view2.setSelected(true);
mBinding.view3.setSelected(false);
mBinding.tv1.setAlpha(0.4f);
mBinding.tv2.setAlpha(1f);
mBinding.tv3.setAlpha(0.4f);
} else if (pos == 3) {
mNum = 100;
mBinding.view1.setSelected(false);
mBinding.view2.setSelected(false);
mBinding.view3.setSelected(true);
mBinding.tv1.setAlpha(0.4f);
mBinding.tv2.setAlpha(0.4f);
mBinding.tv3.setAlpha(1f);
}
}
@SuppressLint({"CheckResult", "ClickableViewAccessibility"})
private void loadKeyInfo() {
sendMessageSwitchLevel = AvRoomDataManager.get().mFindLoveSwitchVo.getSendMsgLevel();
price = (int) AvRoomDataManager.get().mFindLoveSwitchVo.getPrice();
mBinding.tvDiamond.setText(getString(R.string.text_diamond, price));
}
@Override
@@ -174,14 +235,14 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
case R.id.tv_rank:
BoxRankingActivity.start(this);
break;
case R.id.iv_open:
openBox(StringUtils.toInt(mBinding.editNum.getText().toString(), 0));
case R.id.iv_box_1:
openBox(1);
break;
case R.id.iv_sub:
mBinding.editNum.setText(String.valueOf(Math.max(StringUtils.toInt(mBinding.editNum.getText().toString(), 0) - 1, 1)));
case R.id.iv_box_2:
openBox(10);
break;
case R.id.iv_add:
mBinding.editNum.setText(String.valueOf(Math.min((StringUtils.toInt(mBinding.editNum.getText().toString(), 0) + 1), 9999)));
case R.id.iv_box_3:
openBox(100);
break;
case R.id.view_bg:
case R.id.iv_title:
@@ -198,14 +259,20 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
SingleToastUtil.showToast(ResUtil.getString(R.string.treasure_box_activity_treasureboxactivity_03));
return;
}
if(count > Integer.parseInt(mBinding.tvBoxNum.getText().toString())){
if (userTicketInfo != null) {
BoxLoveLackDialog.Companion.newInstance(count, (int) userTicketInfo.getTicketPrice()).show(context);
}
return;
}
boolean sendMessage = (sendMessageSwitchLevel != 0 && UserUtils.getExpLevel() < sendMessageSwitchLevel) || DemoCache.readNeedBoxMsg();
mBinding.ivOpen.setEnabled(false);
setBoxEnable(false);
mBinding.ivBoxOpen.startAnimation();
long startTime = System.currentTimeMillis();
BoxModel.get().openBoxDraw(count, sendMessage)
.compose(bindToLifecycle())
.doOnError(throwable -> {
mBinding.ivOpen.setEnabled(true);
setBoxEnable(true);
if (throwable instanceof FailReasonException) {
FailReasonException failReasonException = (FailReasonException) throwable;
if (failReasonException.getCode() == BoxModel.ERROR_CODE_DIAMOND) {
@@ -221,12 +288,21 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
.delay(startTime - System.currentTimeMillis() + 300, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.flatMap(openBoxResult -> {
mBinding.ivOpen.setEnabled(true);
setBoxEnable(true);
cacheList.addAll(openBoxResult);
return Observable.fromIterable(openBoxResult);
})
.filter(prizeInfo -> prizeInfo.getLevel() > 2)
.subscribe(prizeInfo -> hintPrizeCacheList.add(prizeInfo));
.subscribe(prizeInfo -> {
hintPrizeCacheList.add(prizeInfo);
loadUserTicket();
});
}
private void setBoxEnable(boolean status) {
mBinding.ivBox1.setEnabled(status);
mBinding.ivBox2.setEnabled(status);
mBinding.ivBox3.setEnabled(status);
}
@SuppressLint("CheckResult")
@@ -395,4 +471,9 @@ public class TreasureBoxActivity extends BaseBindingActivity<ActivityTreasureBox
StatusBarUtil.StatusBarLightMode(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}

View File

@@ -0,0 +1,132 @@
package com.yizhuan.erban.treasure_box.widget.dialog
import android.annotation.SuppressLint
import android.content.DialogInterface
import android.os.Bundle
import android.text.Editable
import android.view.Gravity
import android.view.WindowManager
import com.hjq.toast.ToastUtils
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.base.Event
import com.yizhuan.erban.databinding.TreasureBoxDialogLoveLackBinding
import com.yizhuan.erban.event.BoxLoveEvent
import com.yizhuan.erban.treasurefairy.dialog.FairyBuySuccessDialog
import com.yizhuan.treasure_box.bean.UserTicketInfo
import com.yizhuan.treasure_box.model.BoxModel
import com.yizhuan.xchat_android_core.utils.StringUtils
import com.yizhuan.xchat_android_library.common.SpConstants
import com.yizhuan.xchat_android_library.common.util.SPUtils
import com.yizhuan.xchat_android_library.common.util.SoftKeyboardStateHelper
import com.yizhuan.xchat_android_library.common.util.SoftKeyboardStateHelper.SoftKeyboardStateListener
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper
import com.yizhuan.xchat_android_library.utils.TimeUtils
import org.greenrobot.eventbus.EventBus
/**
* 购买碎片
*/
class BoxLoveLackDialog : BaseDialog<TreasureBoxDialogLoveLackBinding>() {
override var width = WindowManager.LayoutParams.MATCH_PARENT
override var height = WindowManager.LayoutParams.WRAP_CONTENT
override var gravity = Gravity.CENTER
companion object {
@JvmStatic
fun newInstance(num: Int, ticketPrice: Int): BoxLoveLackDialog {
val args = Bundle()
args.putInt("num", num)
args.putInt("ticketPrice", ticketPrice)
val fragment = BoxLoveLackDialog()
fragment.arguments = args
return fragment
}
}
private val num by lazy { requireArguments().getInt("num") }
private val ticketPrice by lazy { requireArguments().getInt("ticketPrice") }
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding?.editNum?.setText(num.toString())
binding?.tvPrizeName?.text = (num * ticketPrice).toString()
binding?.ivSub?.setOnClickListener {
val editNum =
(StringUtils.toInt(binding?.editNum?.text.toString(), 0) - 1).coerceAtLeast(1)
binding?.editNum?.setText(editNum.toString())
binding?.tvPrizeName?.text = (editNum * ticketPrice).toString()
}
binding?.ivAdd?.setOnClickListener {
val editNum =
(StringUtils.toInt(binding?.editNum?.text.toString(), 0) + 1).coerceAtMost(9999)
binding?.editNum?.setText(editNum.toString())
binding?.tvPrizeName?.text = (editNum * ticketPrice).toString()
}
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}
binding?.tvBuy?.setOnClickListener {
val date = SPUtils.getLong(SpConstants.BOX_BUY_LOVE, 0L)
if (date != 0L) {
if (TimeUtils.isToday(date)) {
BoxModel.get()
.buyTicket(num)
.compose<UserTicketInfo>(bindToLifecycle<UserTicketInfo>())
.subscribe { userTicketInfo: UserTicketInfo ->
ToastUtils.show("購買成功")
dismissAllowingStateLoss()
}
} else {
BuyLoveDialog.newInstance(
binding?.editNum?.text.toString().toInt(),
ticketPrice * binding?.editNum?.text.toString().toInt()
).show(context)
dismissAllowingStateLoss()
}
} else {
BuyLoveDialog.newInstance(
binding?.editNum?.text.toString().toInt(),
ticketPrice * binding?.editNum?.text.toString().toInt()
).show(context)
dismissAllowingStateLoss()
}
}
binding?.editNum?.addTextChangedListener(object : TextWatcherWrapper() {
override fun afterTextChanged(editable: Editable) {
val num = StringUtils.toInt(binding?.editNum?.text.toString(), 0)
if (num > 200) {
binding?.editNum?.setText("200")
binding?.editNum?.setSelection(3)
SingleToastUtil.showToast(ResUtil.getString(R.string.treasure_box_activity_treasureboxactivity_01))
}
}
})
SoftKeyboardStateHelper(binding?.editNum).addSoftKeyboardStateListener(object :
SoftKeyboardStateListener {
override fun onSoftKeyboardOpened(keyboardHeightInPx: Int) {}
override fun onSoftKeyboardClosed() {
val num = StringUtils.toInt(binding?.editNum?.text.toString(), 0)
if (num == 0) {
binding?.editNum?.setText("1")
binding?.editNum?.setSelection(1)
}
}
})
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
EventBus.getDefault().post(BoxLoveEvent())
}
}

View File

@@ -0,0 +1,99 @@
package com.yizhuan.erban.treasure_box.widget.dialog
import android.annotation.SuppressLint
import android.content.DialogInterface
import android.os.Bundle
import android.view.Gravity
import android.view.WindowManager
import com.hjq.toast.ToastUtils
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.TreasureBoxDialogBuyLoveBinding
import com.yizhuan.erban.event.BoxLoveEvent
import com.yizhuan.treasure_box.bean.UserTicketInfo
import com.yizhuan.treasure_box.model.BoxModel
import com.yizhuan.xchat_android_library.common.SpConstants
import com.yizhuan.xchat_android_library.common.util.SPUtils
import com.yizhuan.xchat_android_library.utils.TimeUtils
import org.greenrobot.eventbus.EventBus
/**
* 购买爱心
*/
class BuyLoveDialog : BaseDialog<TreasureBoxDialogBuyLoveBinding>() {
override var width = WindowManager.LayoutParams.MATCH_PARENT
override var height = WindowManager.LayoutParams.WRAP_CONTENT
override var gravity = Gravity.CENTER
companion object {
@JvmStatic
fun newInstance(num: Int, ticketPrice: Int): BuyLoveDialog {
val args = Bundle()
args.putInt("num", num)
args.putInt("ticketPrice", ticketPrice)
val fragment = BuyLoveDialog()
fragment.arguments = args
return fragment
}
}
private val num by lazy { requireArguments().getInt("num") }
private val ticketPrice by lazy { requireArguments().getInt("ticketPrice") }
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding?.tvLackLove?.text = getString(R.string.buy_love_num, num)
binding?.tvPrizeName?.text = ticketPrice.toString()
binding?.cbPay?.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
SPUtils.putLong(SpConstants.BOX_BUY_LOVE, System.currentTimeMillis())
} else {
SPUtils.putLong(SpConstants.BOX_BUY_LOVE, 0L)
}
}
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}
binding?.tvBuy?.setOnClickListener {
val date = SPUtils.getLong(SpConstants.BOX_BUY_SUCCESS, 0L)
if (date != 0L) {
if (TimeUtils.isToday(date)) {
BoxModel.get()
.buyTicket(num)
.compose<UserTicketInfo>(bindToLifecycle<UserTicketInfo>())
.subscribe { userTicketInfo: UserTicketInfo ->
ToastUtils.show("購買成功")
dismissAllowingStateLoss()
}
} else {
BoxModel.get()
.buyTicket(num)
.compose<UserTicketInfo>(bindToLifecycle<UserTicketInfo>())
.subscribe { userTicketInfo: UserTicketInfo ->
BuyLoveSuccessDialog.newInstance(num).show(context)
dismissAllowingStateLoss()
}
}
} else {
BoxModel.get()
.buyTicket(num)
.compose<UserTicketInfo>(bindToLifecycle<UserTicketInfo>())
.subscribe { userTicketInfo: UserTicketInfo ->
BuyLoveSuccessDialog.newInstance(num).show(context)
dismissAllowingStateLoss()
}
}
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
EventBus.getDefault().post(BoxLoveEvent())
}
}

View File

@@ -0,0 +1,64 @@
package com.yizhuan.erban.treasure_box.widget.dialog
import android.annotation.SuppressLint
import android.content.DialogInterface
import android.os.Bundle
import android.view.Gravity
import android.view.WindowManager
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.TreasureBoxDialogBuyLoveBinding
import com.yizhuan.erban.databinding.TreasureBoxDialogBuyLoveSuccessBinding
import com.yizhuan.erban.event.BoxLoveEvent
import com.yizhuan.treasure_box.bean.UserTicketInfo
import com.yizhuan.treasure_box.model.BoxModel
import com.yizhuan.xchat_android_library.common.SpConstants
import com.yizhuan.xchat_android_library.common.util.SPUtils
import org.greenrobot.eventbus.EventBus
/**
* 购买爱心
*/
class BuyLoveSuccessDialog : BaseDialog<TreasureBoxDialogBuyLoveSuccessBinding>() {
override var width = WindowManager.LayoutParams.MATCH_PARENT
override var height = WindowManager.LayoutParams.WRAP_CONTENT
override var gravity = Gravity.CENTER
companion object {
@JvmStatic
fun newInstance(num: Int): BuyLoveSuccessDialog {
val args = Bundle()
args.putInt("num", num)
val fragment = BuyLoveSuccessDialog()
fragment.arguments = args
return fragment
}
}
private val num by lazy { requireArguments().getInt("num") }
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding?.tvPrizeName?.text = "x${num}"
binding?.cbPay?.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
SPUtils.putLong(SpConstants.BOX_BUY_SUCCESS, System.currentTimeMillis())
} else {
SPUtils.putLong(SpConstants.BOX_BUY_SUCCESS, 0L)
}
}
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
EventBus.getDefault().post(BoxLoveEvent())
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/view_bg"
android:layout_width="240dp"
android:layout_height="288dp"
android:background="@drawable/treasure_box_bg_love_lack"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.6" />
<View
android:id="@+id/view_buy_love"
android:layout_width="140dp"
android:layout_height="32dp"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/treasure_box_buy_love"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toTopOf="@+id/view_bg"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_8"
android:src="@drawable/treasure_box_ic_close"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintTop_toTopOf="@+id/view_bg" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_lack_love"
android:text="@string/buy_love_num"
android:textSize="@dimen/sp_12"
android:textColor="@color/color_7147E6"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/view_buy_love"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_prize_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_love_token"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/tv_lack_love" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_prize_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:drawableStart="@drawable/treasure_box_ic_diamond"
android:ellipsize="end"
android:gravity="center"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/color_FF9A1F"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/iv_prize_icon"
tools:text="10000" />
<com.coorchice.library.SuperTextView
android:id="@+id/tv_buy"
android:text="購買"
android:textSize="@dimen/sp_14"
android:textColor="@color/color_white"
android:layout_width="152dp"
android:layout_height="32dp"
android:gravity="center"
android:background="@drawable/btn_box_buy"
android:layout_marginTop="@dimen/dp_12"
app:corner="@dimen/dp_18"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/tv_prize_name" />
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/cbPay"
android:text="今日不再提示"
android:textSize="@dimen/sp_10"
android:textColor="@color/color_A3A3A3"
android:layout_marginTop="@dimen/dp_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/selector_select_box"
android:paddingStart="@dimen/dp_6"
android:paddingEnd="0dp"
app:layout_constraintTop_toBottomOf="@+id/tv_buy"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintEnd_toEndOf="@+id/view_bg"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/view_bg"
android:layout_width="240dp"
android:layout_height="240dp"
android:background="@drawable/treasure_box_bg_love_lack"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.6" />
<View
android:id="@+id/view_buy_love"
android:layout_width="144dp"
android:layout_height="36dp"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/treasure_box_buy_love"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toTopOf="@+id/view_bg"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_8"
android:src="@drawable/treasure_box_ic_close"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintTop_toTopOf="@+id/view_bg" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_lack_love"
android:text="獲得"
android:textSize="@dimen/sp_12"
android:textColor="@color/color_7147E6"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/view_buy_love"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_prize_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_love_token"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/tv_lack_love" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_prize_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:ellipsize="end"
android:gravity="center"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/color_7147E6"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/iv_prize_icon"
tools:text="x100" />
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/cbPay"
android:text="今日不再提示"
android:textSize="@dimen/sp_10"
android:textColor="@color/color_A3A0AD"
android:layout_marginTop="@dimen/dp_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/selector_select_box"
android:paddingStart="@dimen/dp_6"
android:paddingEnd="0dp"
app:layout_constraintTop_toBottomOf="@+id/tv_prize_name"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintEnd_toEndOf="@+id/view_bg"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/view_bg"
android:layout_width="240dp"
android:layout_height="300dp"
android:background="@drawable/treasure_box_bg_love_lack"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.6" />
<View
android:id="@+id/view_buy_love"
android:layout_width="136dp"
android:layout_height="44dp"
android:layout_marginBottom="@dimen/dp_30"
android:background="@drawable/treasure_box_buy_love"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toTopOf="@+id/view_bg" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_8"
android:src="@drawable/treasure_box_ic_close"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintTop_toTopOf="@+id/view_bg" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_lack_love"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="可用愛心不足,請購買"
android:textColor="@color/color_7147E6"
android:textSize="@dimen/sp_12"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/view_buy_love" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_prize_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_love_token"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/tv_lack_love" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_prize_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:drawableStart="@drawable/treasure_box_ic_diamond"
android:ellipsize="end"
android:gravity="center"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/color_FF9A1F"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/iv_prize_icon"
tools:text="10000" />
<LinearLayout
android:id="@+id/ll_add_num"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_4"
android:background="@drawable/ic_add_num_bg"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/tv_prize_name">
<ImageView
android:id="@+id/iv_sub"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginTop="@dimen/dp_4"
android:onClick="@{click}"
android:src="@drawable/treasure_box_sub_normal" />
<EditText
android:id="@+id/edit_num"
android:layout_width="66dp"
android:layout_height="23dp"
android:layout_marginTop="3dp"
android:background="@null"
android:gravity="center"
android:inputType="number"
android:maxLength="4"
android:minWidth="40dp"
android:text="1"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
<ImageView
android:id="@+id/iv_add"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_2"
android:onClick="@{click}"
android:src="@drawable/treasure_box_add_normal" />
</LinearLayout>
<com.coorchice.library.SuperTextView
android:id="@+id/tv_buy"
android:layout_width="152dp"
android:layout_height="32dp"
android:layout_marginTop="@dimen/dp_12"
android:background="@drawable/btn_box_buy"
android:gravity="center"
android:text="購買"
android:textColor="@color/color_white"
android:textSize="@dimen/sp_14"
app:corner="@dimen/dp_18"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
app:layout_constraintStart_toStartOf="@+id/view_bg"
app:layout_constraintTop_toBottomOf="@+id/ll_add_num" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,8 @@
package com.yizhuan.treasure_box.bean
data class UserTicketInfo(
val diamond: Double = 0.0,
val ticketNum: Int = 0,
val ticketPrice: Double = 0.0,
val uid: Int = 0
)

View File

@@ -9,6 +9,7 @@ import com.yizhuan.treasure_box.bean.OpenBoxHonourResult;
import com.yizhuan.treasure_box.bean.OpenBoxResult;
import com.yizhuan.treasure_box.bean.PrizeInfo;
import com.yizhuan.treasure_box.bean.PrizeNewInfo;
import com.yizhuan.treasure_box.bean.UserTicketInfo;
import com.yizhuan.xchat_android_core.R;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.base.BaseModel;
@@ -82,6 +83,20 @@ public class BoxModel extends BaseModel implements IBoxModel {
});
}
@Override
public Single<UserTicketInfo> getUserTicket() {
return api.getUserTicket()
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers());
}
@Override
public Single<UserTicketInfo> buyTicket(int num) {
return api.buyTicket(num)
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers());
}
@Override
public Single<OpenBoxResult> openBox(int boxType, int keyNum, boolean sendMessage) {
if (AvRoomDataManager.get().mCurrentRoomInfo == null) {
@@ -199,6 +214,21 @@ public class BoxModel extends BaseModel implements IBoxModel {
@Query("sortType") String sortType,
@Query("uid") long uid);
/**
* 获取用户vo门票
*
*/
@GET("/findLove/user")
Single<ServiceResult<UserTicketInfo>> getUserTicket();
/**
* 购买门票
*
*/
@FormUrlEncoded
@POST("/findLove/buyTicket")
Single<ServiceResult<UserTicketInfo>> buyTicket(@Field("num") int num);
/**
* 寻爱抽奖
*

View File

@@ -9,6 +9,7 @@ import com.yizhuan.treasure_box.bean.OpenBoxHonourResult;
import com.yizhuan.treasure_box.bean.OpenBoxResult;
import com.yizhuan.treasure_box.bean.PrizeInfo;
import com.yizhuan.treasure_box.bean.PrizeNewInfo;
import com.yizhuan.treasure_box.bean.UserTicketInfo;
import com.yizhuan.xchat_android_core.base.IModel;
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
@@ -34,6 +35,20 @@ public interface IBoxModel extends IModel {
*/
Single<List<PrizeNewInfo>> openBoxDraw(int keyNum, boolean sendMessage);
/**
* 获取用户vo门票
*
* @return
*/
Single<UserTicketInfo> getUserTicket();
/**
* 购买门票
*
* @return
*/
Single<UserTicketInfo> buyTicket(int num);
/**
* 开箱子
*

View File

@@ -1,10 +1,13 @@
package com.yizhuan.xchat_android_library.common
object SpConstants {
const val TAB_INFO_LIST = "tab_info_list"
const val SET_PASSWORD = "set_password"
const val LOGIN_TYPE = "login_type"
const val GOOGLE = "google"
const val FACEBOOK = "facebook"
const val LINE = "line"
const val FAIRY_BUY_DEBRIS = "fairy_buy_debris"
const val FAIRY_BUY_SUCCESS = "fairy_buy_success"
const val BOX_BUY_LOVE = "box_buy_love"
const val BOX_BUY_SUCCESS = "box_buy_success"
}