add[整蛊礼物接口调用、整蛊说明]

This commit is contained in:
Martin 2024-06-06 18:29:31 +08:00
parent b5417f90b4
commit b7c53a3b21
11 changed files with 268 additions and 108 deletions

View File

@ -0,0 +1,33 @@
package com.yunbao.common.bean;
import java.util.List;
public class PrankGiftResultBean extends BaseModel{
private List<PrankGiftBean> prank_list;
private String status;
private String prank_type;
public List<PrankGiftBean> getPrank_list() {
return prank_list;
}
public void setPrank_list(List<PrankGiftBean> prank_list) {
this.prank_list = prank_list;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPrank_type() {
return prank_type;
}
public void setPrank_type(String prank_type) {
this.prank_type = prank_type;
}
}

View File

@ -54,6 +54,7 @@ import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankGiftResultBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.QuickGiftSendGiftModel;
import com.yunbao.common.bean.RandomPkUserBean;
@ -504,7 +505,10 @@ public interface PDLiveApi {
* 获取整蛊列表
*/
@GET("/api/public/?service=Prank.prankList")
Observable<ResponseModel<List<PrankGiftBean>>> prankList(@Query("anchor_id") String anchor_id);
Observable<ResponseModel<PrankGiftResultBean>>prankList(
@Query("anchor_id") String anchor_id,
@Query("prank_type") String prank_type
);
/**
* 设置礼物整蛊
@ -512,9 +516,9 @@ public interface PDLiveApi {
@GET("/api/public/?service=Prank.setPrank")
Observable<ResponseModel<List<BaseModel>>> setPrank(
@Query("anchor_id") String anchor_id,
@Query("gift_id") String gift_id,
@Query("gift_num") String gift_num,
@Query("prank_content") String prank_content
@Query("status") String status,
@Query("prank_json") String prank_json,
@Query("prank_type") String prank_type
);
/**

View File

@ -54,6 +54,7 @@ import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankGiftResultBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.QuickGiftSendGiftModel;
import com.yunbao.common.bean.RandomPkUserBean;
@ -879,9 +880,9 @@ public class LiveNetManager {
/**
* 获取转盘整蛊列表
*/
public void getPrankGiftList(String mLiveUid, HttpCallback<List<PrankGiftBean>> callback) {
public void getPrankGiftList(String mLiveUid, String prank_type,HttpCallback<PrankGiftResultBean> callback) {
API.get().pdLiveApi(mContext)
.prankList(mLiveUid)
.prankList(mLiveUid,prank_type)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(responseModel -> {
@ -901,9 +902,9 @@ public class LiveNetManager {
/**
* 设置礼物整蛊
*/
public void setPrankGift(String mLiveUid, String gift_id, String gift_num, String prank_content, HttpCallback<PrankHttpTurntableBean> callback) {
public void setPrankGift(String mLiveUid, String status, String prank_json,String prank_type, HttpCallback<PrankHttpTurntableBean> callback) {
API.get().pdLiveApi(mContext)
.setPrank(mLiveUid, gift_id, gift_num, prank_content)
.setPrank(mLiveUid, status, prank_json, prank_type)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(responseModel -> {

View File

@ -1,5 +1,6 @@
package com.yunbao.live.adapter;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
@ -108,7 +109,6 @@ public class LivePrankRecyclerAdapter extends RecyclerView.Adapter<LivePrankRecy
private ImageView mIcon;
private TextView mTitle;
private TextView mName;
private TextView mNum;
private ImageView mRemove;
public GiftViewHolder(View itemView) {
@ -116,21 +116,19 @@ public class LivePrankRecyclerAdapter extends RecyclerView.Adapter<LivePrankRecy
mIcon = itemView.findViewById(R.id.gift_icon);
mTitle = itemView.findViewById(R.id.gift_title);
mName = itemView.findViewById(R.id.gift_name);
mNum = itemView.findViewById(R.id.gift_num);
mRemove = itemView.findViewById(R.id.gift_close);
mRemove.setOnClickListener(v -> {
PrankGiftBean bean = (PrankGiftBean) v.getTag();
onItemClickListener.onItemClick(bean.getGiftId(), (Integer) itemView.getTag());
});
}
@SuppressLint("SetTextI18n")
public void setDate(PrankGiftBean bean, int position) {
ImgLoader.display(mContext, bean.getIcon(), mIcon);
itemView.setTag(position);
mName.setText(bean.getName());
mName.setText(bean.getName()+"*"+bean.getNum());
mTitle.setText(bean.getTitle());
mNum.setText(bean.getNum() + "");
mRemove.setTag(bean);
}

View File

@ -1,7 +1,6 @@
package com.yunbao.live.dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
@ -11,9 +10,8 @@ import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
@ -71,6 +69,12 @@ public class LivePrankAddGiftDialog extends AbsDialogPopupWindow {
numberText = findViewById(R.id.number_text);
contentText = findViewById(R.id.content_text);
ViewClicksAntiShake.clicksAntiShake(backBtn, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dismiss();
}
});
ViewClicksAntiShake.clicksAntiShake(giftText, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
@ -122,14 +126,20 @@ public class LivePrankAddGiftDialog extends AbsDialogPopupWindow {
@Override
public void onViewClicks() {
PrankGiftBean bean = (PrankGiftBean) giftText.getTag();
String prankContent = contentText.getText().toString();
if (bean == null) {
ToastUtil.show(WordUtil.isNewZh() ? "整蠱禮物不能為空" : "A trick gift can't be empty");
return;
}
if (numberText.getTag()==null){
if (numberText.getTag()==null||StringUtil.isEmpty(prankContent)){
ToastUtil.show(WordUtil.isNewZh() ? "整蠱內容或數量不能為空" : "The content or number of pranks cannot be empty");
return;
}
bean.setNum(Integer.parseInt(numberText.getText().toString()));
bean.setTitle(prankContent);
onItemClickListener.onItemClick(bean,0);
dismiss();
}
});
}

View File

@ -1,5 +1,6 @@
package com.yunbao.live.dialog;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.graphics.Color;
import android.os.Bundle;
@ -11,12 +12,17 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSONArray;
import com.google.android.material.tabs.TabLayout;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankGiftResultBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.PrankTurntableBean;
import com.yunbao.common.dialog.AbsDialogFragment;
@ -26,6 +32,7 @@ import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.ViewUtils;
@ -35,6 +42,9 @@ import com.yunbao.live.R;
import com.yunbao.live.adapter.LivePrankRecyclerAdapter;
import com.yunbao.live.socket.SocketRyChatUtil;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@ -146,17 +156,9 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
break;
}
} else {
LiveNetManager.get(mContext).deletePrankGift(mLiveUid, position + "", new HttpCallback<PrankHttpTurntableBean>() {
@Override
public void onSuccess(PrankHttpTurntableBean data) {
initGiftData();
}
@Override
public void onError(String error) {
initGiftData();
}
});
giftBeans.remove(position);
recyclerAdapter.setList(giftBeans);
recyclerAdapter.notifyDataSetChanged();
}
}
});
@ -210,7 +212,7 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
if ((int) mPrankBtn.getTag() == 0) {
setPrankConfig();
} else {
setGiftBean(recyclerAdapter.getList());
}
}
@ -230,7 +232,6 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
mPrankBtn.setTag(0);
}
private void initTab() {
TabLayout.Tab turntable = mTabLayout.newTab();
TabLayout.Tab gift = mTabLayout.newTab();
@ -246,6 +247,7 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
gift.setTag(1);
mTabLayout.addTab(turntable);
mTabLayout.addTab(gift);
mPrankBtn.setTag(0);
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
@ -273,6 +275,7 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
mTurntableConfigLayout.setVisibility(View.GONE);
mGiftConfigLayout.setVisibility(View.VISIBLE);
mBtnAddGift.setVisibility(View.VISIBLE);
mGiftNotDate.setVisibility(View.VISIBLE);
recyclerAdapter.setViewType(LivePrankRecyclerAdapter.TYPE_GIFT);
mPrankBtn.setBackgroundResource(R.drawable.bg_live_prank_gift_set);
@ -283,7 +286,6 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
}
mPrankBtn.setTag(1);
recyclerAdapter.clearList();
mGiftNotDate.setVisibility(View.VISIBLE);
initGiftData();
}
}
@ -301,7 +303,24 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
}
private void showGiftDialog() {
new LivePrankAddGiftDialog(mContext).setGiftBeans(giftBeans).showDialog();
LivePrankAddGiftDialog livePrankAddGiftDialog = new LivePrankAddGiftDialog(mContext).setGiftBeans(giftBeans);
livePrankAddGiftDialog.setOnItemClickListener(new OnItemClickListener<PrankGiftBean>() {
@SuppressLint("NotifyDataSetChanged")
@Override
public void onItemClick(PrankGiftBean bean, int position) {
giftBeans.add(bean);
recyclerAdapter.setList(giftBeans);
recyclerAdapter.notifyDataSetChanged();
if (giftBeans.size() < 6) {
mBtnAddGift.setVisibility(View.VISIBLE);
mGiftNotDate.setVisibility(View.VISIBLE);
} else {
mBtnAddGift.setVisibility(View.GONE);
mGiftNotDate.setVisibility(View.VISIBLE);
}
}
});
livePrankAddGiftDialog.showDialog();
}
private void initGiftConfigLayoutView() {
@ -312,6 +331,7 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
giftTypeTodoText = (TextView) findViewById(R.id.gift_type_todo);
giftTypeNowSwitchText = (TextView) findViewById(R.id.gift_type_now_switch);
mBtnAddGift = (Button) findViewById(R.id.gift_add_btn);
mBtnAddGift.setVisibility(View.GONE);
ViewClicksAntiShake.clicksAntiShake(giftSwitch1Btn, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
@ -356,11 +376,17 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
});
}
private void setGiftBean(PrankGiftBean bean) {
LiveNetManager.get(mContext).setPrankGift(mLiveUid, bean.getGiftId(), bean.getNum() + "", bean.getTitle(), new HttpCallback<PrankHttpTurntableBean>() {
private void setGiftBean(List<PrankGiftBean> prankGiftBeans) {
JSONArray prankJson = getJsonObjects(prankGiftBeans);
LiveNetManager.get(mContext).setPrankGift(mLiveUid, giftSwitch1Btn.getTag().equals("true")?"1":"0", new Gson().toJson(prankJson), "1", new HttpCallback<PrankHttpTurntableBean>() {
@Override
public void onSuccess(PrankHttpTurntableBean data) {
initGiftData();
if (WordUtil.isNewZh()) {
ToastUtil.show("設置成功");
} else {
ToastUtil.show("successful");
}
}
@Override
@ -370,21 +396,40 @@ public class LivePrankDialogFragment extends AbsDialogFragment implements View.O
});
}
@NonNull
private static JSONArray getJsonObjects(List<PrankGiftBean> prankGiftBeans) {
JSONArray prankJson = new JSONArray();
for (int i = 0; i < prankGiftBeans.size(); i++) {
JsonObject temp = new JsonObject();
temp.addProperty("gift_id", prankGiftBeans.get(i).getGiftId());
temp.addProperty("gift_num", prankGiftBeans.get(i).getNum());
temp.addProperty("prank_content", prankGiftBeans.get(i).getTitle());
prankJson.add(temp);
}
return prankJson;
}
private void initGiftData() {
LiveNetManager.get(mContext).getPrankGiftList(mLiveUid, new HttpCallback<List<PrankGiftBean>>() {
LiveNetManager.get(mContext).getPrankGiftList(mLiveUid, mPrankBtn.getTag().equals("0")?"2":"1",new HttpCallback<PrankGiftResultBean>() {
@Override
public void onSuccess(List<PrankGiftBean> data) {
if (data.size() < 6) {
mBtnAddGift.setVisibility(View.VISIBLE);
} else {
mBtnAddGift.setVisibility(View.GONE);
public void onSuccess(PrankGiftResultBean data) {
if(mPrankBtn.getTag().toString().equals("1")){
if(data.getPrank_list()!=null){
if (data.getPrank_list().size() < 6) {
mBtnAddGift.setVisibility(View.VISIBLE);
mGiftNotDate.setVisibility(View.VISIBLE);
} else {
mBtnAddGift.setVisibility(View.GONE);
mGiftNotDate.setVisibility(View.VISIBLE);
}
mPrankRecyclerView.setVisibility(View.VISIBLE);
recyclerAdapter.setViewType(LivePrankRecyclerAdapter.TYPE_GIFT);
giftBeans = data.getPrank_list();
recyclerAdapter.setList(giftBeans);
recyclerAdapter.notifyDataSetChanged();
}
}
mGiftNotDate.setVisibility(View.GONE);
mPrankRecyclerView.setVisibility(View.VISIBLE);
recyclerAdapter.setViewType(LivePrankRecyclerAdapter.TYPE_GIFT);
giftBeans = data;
recyclerAdapter.setList(data);
recyclerAdapter.notifyDataSetChanged();
/*if (!data.isEmpty()) {
} else {

View File

@ -0,0 +1,63 @@
package com.yunbao.live.dialog;
import android.content.Context;
import android.text.Html;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.dialog.AbsDialogPopupWindow;
import com.yunbao.live.R;
public class LivePrankExplainDialog extends AbsDialogPopupWindow {
TextView content;
String contentText = "<font color=\"#FFFFFF\">" +
"1、當前整蠱分類有哪些</font> <font color=\"#FFFFFF\"> 當前分爲轉盤整蠱和禮物整蠱。可根據實際情況決定,例如都設置或只設置一種。" +
"</font> <font color=\"\">" +
"2、轉盤整蠱如何填寫</font> <font color=\"#F9B003\">\n" +
"打開開關→設置價格→填寫6個整蠱→保存設置。\n" +
"\n" +
"</font> <font color=\"#FFFFFF\">注意:若有人發起整蠱,將提示你完成該整蠱,期間若有人花費鑽石拯救你,則不用完成整蠱。\n</font><font color=\"#FFFFFF\">" +
"3、禮物整蠱如何填寫</font> <font color=\"#F9B003\">\n" +
"當前分爲禮物數達成整蠱和連擊數最高整蠱。\n" +
"\n" +
"禮物數達成整蠱:打開開關→選擇禮物→填寫數量→填寫整蠱→保存設置。\n" +
"\n" +
"連擊數最高整蠱:打開開關→切換→選擇禮物→填寫整蠱→保存設置。\n</font><font color=\"\">" +
"4、整蠱如何填寫</font> <font color=\"\">\n" +
"根據你的實際情況決定。例如:唱歌、跳舞、情書、下蹲、吃辣或其他任意才藝。\n</font><font color=\"\">" +
"5、我怎麽知道該做哪些整蠱</font> <font color=\"\">\n" +
"系統將發送消息至彈幕;\n" +
"你需要做的整蠱會自動挂起。</font>";
public LivePrankExplainDialog(@NonNull Context context) {
super(context);
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_live_prank_add_gift_number;
}
@Override
protected void onCreate() {
super.onCreate();
initView();
}
@Override
protected void onDismiss() {
super.onDismiss();
}
void initView() {
content = findViewById(R.id.content);
content.setText(Html.fromHtml(contentText));
}
}

View File

@ -0,0 +1,46 @@
<?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"
android:layout_width="match_parent"
android:layout_height="330dp"
android:background="#000002">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/alive_prank_gift_dialog_explain"
android:textColor="#FFFFFF"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/back"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginStart="16dp"
android:layout_marginTop="18dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/icon_back" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title">
</TextView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,93 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout 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:layout_height="40dp"
android:gravity="center_vertical"
android:layout_marginBottom="10dp"
android:background="@drawable/bg_prank_gift_item">
<ImageView
android:id="@+id/gift_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="11dp"
android:layout_marginTop="11dp"
android:layout_marginBottom="11dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
<TextView
android:id="@+id/gift_title"
android:id="@+id/gift_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="7dp"
android:gravity="top"
android:text="TextView"
android:textColor="#FFF"
android:textSize="14sp"
/>
<TextView
android:id="@+id/gift_title"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="right"
android:paddingEnd="10dp"
android:paddingLeft="8dp"
android:text="TextView"
android:textColor="#FFF69F"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@+id/gift_icon"
app:layout_constraintTop_toTopOf="parent" />
android:textSize="14sp" />
<ImageView
android:id="@+id/gift_close"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/icon_live_prank_gift_item_close" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/live_gift"
android:textColor="#808080"
android:textSize="10sp"
app:layout_constraintStart_toEndOf="@+id/gift_icon"
app:layout_constraintTop_toBottomOf="@+id/gift_title" />
<TextView
android:id="@+id/gift_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
android:textColor="#FFF"
android:textSize="10sp"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/gift_title" />
<TextView
android:id="@+id/gift_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:layout_marginEnd="24dp"
android:text="1"
android:textColor="#FFF"
android:textSize="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/gift_close" />
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:layout_marginEnd="8dp"
android:text="@string/lucky_red_envelope_amount"
android:textColor="#808080"
android:textSize="10sp"
app:layout_constraintEnd_toStartOf="@+id/gift_num"
app:layout_constraintTop_toBottomOf="@+id/gift_close" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>

View File

@ -128,4 +128,7 @@
<string name="live_prank_gift_tips">You can add up to 6, and it is recommended to add 4.</string>
<string name="alive_prank_gift_add_gift_content_sub">Confirm</string>
<string name="alive_prank_gift_dialog_number_title">Quantity</string>
<string name="live_prank_gift_dialog_number_btn">+ Set other quantity (up to 9999)</string>
<string name="alive_prank_gift_dialog_explain">Trick instructions</string>
</resources>

View File

@ -134,4 +134,5 @@
<string name="alive_prank_gift_add_gift_content_sub">確定</string>
<string name="alive_prank_gift_dialog_number_title">禮物數量</string>
<string name="live_prank_gift_dialog_number_btn">+ 設置其他數量(最多9999)</string>
<string name="alive_prank_gift_dialog_explain">整蠱說明</string>
</resources>