From b8b43c1ef2d891175d70a2190365d8294eed1643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E5=89=8D=E5=8D=AB?= <2298122580@qq.com> Date: Fri, 7 Jun 2024 15:35:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?6.7.0=E7=94=A8=E6=88=B7=E7=AB=AF=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/common/Constants.java | 2 + .../yunbao/common/bean/PrankProgressBean.java | 162 ++++++++++++++++ .../com/yunbao/common/http/PDLiveApi.java | 7 + .../common/http/live/LiveNetManager.java | 20 ++ .../live/activity/LiveAnchorActivity.java | 5 + .../live/activity/LiveRyAnchorActivity.java | 5 + .../com/yunbao/live/adapter/ComboAdapter.java | 77 ++++++++ .../yunbao/live/adapter/FrameGiftAdapter.java | 1 + .../com/yunbao/live/adapter/PrankAdapter.java | 88 +++++++++ .../live/socket/SocketMessageListener.java | 5 + .../yunbao/live/socket/SocketRyClient.java | 20 +- .../live/views/LiveGiftItemFragment.java | 10 + .../yunbao/live/views/LiveRoomViewHolder.java | 177 ++++++++++++++++++ .../live/views/PortraitLiveManager.java | 10 + .../res/drawable/bg_prank_bottom_detail.xml | 5 + live/src/main/res/drawable/bg_prank_group.xml | 5 + live/src/main/res/drawable/bg_prank_item.xml | 5 + .../res/drawable/bg_prank_item_subscript.xml | 5 + .../main/res/drawable/progress_prank_bg.xml | 17 ++ live/src/main/res/layout/item_combo_vote.xml | 41 ++++ .../main/res/layout/item_prank_progress.xml | 104 ++++++++++ live/src/main/res/layout/view_live_room.xml | 26 +++ live/src/main/res/layout/view_prank_group.xml | 79 ++++++++ .../src/main/res/mipmap-xhdpi/bottom_icon.png | Bin 0 -> 420 bytes live/src/main/res/mipmap-xhdpi/prank_icon.png | Bin 0 -> 1796 bytes .../main/res/mipmap-xhdpi/turntable_icon.png | Bin 0 -> 13875 bytes .../main/res/mipmap-xxxhdpi/bottom_icon.png | Bin 0 -> 770 bytes .../main/res/mipmap-xxxhdpi/prank_icon.png | Bin 0 -> 3605 bytes .../res/mipmap-xxxhdpi/turntable_icon.png | Bin 0 -> 27948 bytes live/src/main/res/values-en/strings.xml | 6 + live/src/main/res/values/strings.xml | 6 + 31 files changed, 886 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/bean/PrankProgressBean.java create mode 100644 live/src/main/java/com/yunbao/live/adapter/ComboAdapter.java create mode 100644 live/src/main/java/com/yunbao/live/adapter/PrankAdapter.java create mode 100644 live/src/main/res/drawable/bg_prank_bottom_detail.xml create mode 100644 live/src/main/res/drawable/bg_prank_group.xml create mode 100644 live/src/main/res/drawable/bg_prank_item.xml create mode 100644 live/src/main/res/drawable/bg_prank_item_subscript.xml create mode 100644 live/src/main/res/drawable/progress_prank_bg.xml create mode 100644 live/src/main/res/layout/item_combo_vote.xml create mode 100644 live/src/main/res/layout/item_prank_progress.xml create mode 100644 live/src/main/res/layout/view_prank_group.xml create mode 100644 live/src/main/res/mipmap-xhdpi/bottom_icon.png create mode 100644 live/src/main/res/mipmap-xhdpi/prank_icon.png create mode 100644 live/src/main/res/mipmap-xhdpi/turntable_icon.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/bottom_icon.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/prank_icon.png create mode 100644 live/src/main/res/mipmap-xxxhdpi/turntable_icon.png diff --git a/common/src/main/java/com/yunbao/common/Constants.java b/common/src/main/java/com/yunbao/common/Constants.java index ba53dd875..cdab20733 100644 --- a/common/src/main/java/com/yunbao/common/Constants.java +++ b/common/src/main/java/com/yunbao/common/Constants.java @@ -202,6 +202,8 @@ public class Constants { public static final String LuckyAngel = "LuckyCheck";//幸运天使 public static final String Lucky100Check = "Lucky100Check";//幸运天使 + public static final String PrankSendData = "PrankSendData";//整蛊进度 + public static final int SOCKET_WHAT_CONN = 0; public static final int SOCKET_WHAT_DISCONN = 2; public static final int SOCKET_WHAT_BROADCAST = 1; diff --git a/common/src/main/java/com/yunbao/common/bean/PrankProgressBean.java b/common/src/main/java/com/yunbao/common/bean/PrankProgressBean.java new file mode 100644 index 000000000..02c9953bb --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/PrankProgressBean.java @@ -0,0 +1,162 @@ +package com.yunbao.common.bean; + +import java.util.List; + +public class PrankProgressBean extends BaseModel { + private int status;//整蛊状态 0.关闭 1.开启 + private int prank_turntable_status;// 转盘整蛊状态 0=关闭 1=开启 + private int prank_type;// 整蛊类型 1.礼物整蛊 2.连击整蛊 + private List prank_list;// 整蛊进度 + private List completed_list;// 待完成的整蛊 + + public PrankProgressBean(){ + } + + + + public static class PrankList{ + private int gift_id;// 礼物ID + private int gift_num;// 整蛊需要的礼物数量 + private String prank_content; // 整蛊内容 + private int send_num; // 用户已赠送的礼物数量 + private int completed_num;// 待完成的整蛊次数 + private String gift_name;// 礼物名称 + private String gift_icon; // 礼物图片链接 + + public int getGift_id() { + return gift_id; + } + + public void setGift_id(int gift_id) { + this.gift_id = gift_id; + } + + public int getGift_num() { + return gift_num; + } + + public void setGift_num(int gift_num) { + this.gift_num = gift_num; + } + + public String getPrank_content() { + return prank_content; + } + + public void setPrank_content(String prank_content) { + this.prank_content = prank_content; + } + + public int getSend_num() { + return send_num; + } + + public void setSend_num(int send_num) { + this.send_num = send_num; + } + + public int getCompleted_num() { + return completed_num; + } + + public void setCompleted_num(int completed_num) { + this.completed_num = completed_num; + } + + public String getGift_name() { + return gift_name; + } + + public void setGift_name(String gift_name) { + this.gift_name = gift_name; + } + + public String getGift_icon() { + return gift_icon; + } + + public void setGift_icon(String gift_icon) { + this.gift_icon = gift_icon; + } + + //计算完成度 + public double getCompletionRate() { + if (gift_num == 0) return 0; // Avoid division by zero + return (double) send_num / gift_num; + } + + public PrankList(int gift_id, int gift_num, String prank_content, int send_num, int completed_num, String gift_name, String gift_icon) { + this.gift_id = gift_id; + this.gift_num = gift_num; + this.prank_content = prank_content; + this.send_num = send_num; + this.completed_num = completed_num; + this.gift_name = gift_name; + this.gift_icon = gift_icon; + } + + @Override + public String toString() { + return "PrankList{" + + "gift_id=" + gift_id + + ", gift_num=" + gift_num + + ", prank_content='" + prank_content + '\'' + + ", send_num=" + send_num + + ", completed_num=" + completed_num + + ", gift_name='" + gift_name + '\'' + + ", gift_icon='" + gift_icon + '\'' + + '}'; + } + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public int getPrank_type() { + return prank_type; + } + + public void setPrank_type(int prank_type) { + this.prank_type = prank_type; + } + + public List getPrank_list() { + return prank_list; + } + + public void setPrank_list(List prank_list) { + this.prank_list = prank_list; + } + + public List getCompleted_list() { + return completed_list; + } + + public void setCompleted_list(List completed_list) { + this.completed_list = completed_list; + } + + public int getPrank_turntable_status() { + return prank_turntable_status; + } + + public void setPrank_turntable_status(int prank_turntable_status) { + this.prank_turntable_status = prank_turntable_status; + } + + @Override + public String toString() { + return "PrankProgressBean{" + + "status=" + status + + ", prank_turntable_status=" + prank_turntable_status + + ", prank_type=" + prank_type + + ", prank_list=" + prank_list + + ", completed_list=" + completed_list + + '}'; + } +} diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index f9396488f..3ef59f920 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -55,6 +55,7 @@ import com.yunbao.common.bean.OpenAdModel; import com.yunbao.common.bean.PkRankBean; import com.yunbao.common.bean.PrankGiftBean; import com.yunbao.common.bean.PrankHttpTurntableBean; +import com.yunbao.common.bean.PrankProgressBean; import com.yunbao.common.bean.QuickGiftSendGiftModel; import com.yunbao.common.bean.RandomPkUserBean; import com.yunbao.common.bean.RankPkInfoBean; @@ -506,6 +507,12 @@ public interface PDLiveApi { @GET("/api/public/?service=Prank.prankList") Observable>> prankList(@Query("anchor_id") String anchor_id); + /** + * 获取整蛊进度列表 + */ + @GET("/api/public/?service=Prank.prankCompletedList") + Observable> getPrankProgressList(@Query("anchor_id") String anchor_id); + /** * 设置礼物整蛊 */ diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index c781e647d..ca3684707 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -55,6 +55,7 @@ import com.yunbao.common.bean.OpenAdModel; import com.yunbao.common.bean.PkRankBean; import com.yunbao.common.bean.PrankGiftBean; import com.yunbao.common.bean.PrankHttpTurntableBean; +import com.yunbao.common.bean.PrankProgressBean; import com.yunbao.common.bean.QuickGiftSendGiftModel; import com.yunbao.common.bean.RandomPkUserBean; import com.yunbao.common.bean.RankPkInfoBean; @@ -898,6 +899,25 @@ public class LiveNetManager { }).isDisposed(); } + /** + * 获取整蛊进度列表 + */ + public void getPrankProgressList(String mLiveUid, HttpCallback callback){ + API.get().pdLiveApi(mContext) + .getPrankProgressList(mLiveUid) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(responseModel->{ + if (callback != null){ + callback.onSuccess(responseModel.getData().getInfo()); + } + },throwable->{ + if (callback != null){ + callback.onError(throwable.getMessage()); + } + } ).isDisposed(); + } + /** * 设置礼物整蛊 */ diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java index 9a2484077..19c2c2b2e 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAnchorActivity.java @@ -1048,6 +1048,11 @@ public class LiveAnchorActivity extends LiveActivity implements LiveFunctionClic } + @Override + public void onUpdatePrankProgress(String prankString) { + + } + /** * 腾讯sdk连麦时候主播混流 */ diff --git a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java index de28117f2..a42bc3d71 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveRyAnchorActivity.java @@ -1452,6 +1452,11 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl } } + @Override + public void onUpdatePrankProgress(String prankString) { + + } + /** * 腾讯sdk连麦时候主播混流 diff --git a/live/src/main/java/com/yunbao/live/adapter/ComboAdapter.java b/live/src/main/java/com/yunbao/live/adapter/ComboAdapter.java new file mode 100644 index 000000000..ca265bf41 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/ComboAdapter.java @@ -0,0 +1,77 @@ +package com.yunbao.live.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.bean.PrankProgressBean; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.live.R; + +import java.util.ArrayList; +import java.util.List; + +public class ComboAdapter extends RecyclerView.Adapter{ + + private List mList = new ArrayList<>(); + private Context mContext; + + public ComboAdapter(Context context){ + mContext = context; + } + + public void setList(List list){ + mList.clear(); + mList.addAll(list); + notifyDataSetChanged(); + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_combo_vote, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + PrankProgressBean.PrankList data = mList.get(position); + holder.itemView.setOnClickListener(v-> onItemClickListener.onItemClick(v,data.getGift_id())); + holder.combo_item_prank_name.setText(data.getPrank_content()); + ImgLoader.display(mContext,data.getGift_icon(),holder.combo_item_icon); + holder.combo_item_combo.setText(String.valueOf(data.getSend_num())); + } + + @Override + public int getItemCount() { + return mList.size(); + } + + class MyViewHolder extends RecyclerView.ViewHolder{ + + private TextView combo_item_prank_name,combo_item_combo; + private ImageView combo_item_icon; + + public MyViewHolder(@NonNull View itemView){ + super(itemView); + combo_item_prank_name = itemView.findViewById(R.id.combo_item_prank_name); + combo_item_combo = itemView.findViewById(R.id.combo_item_combo); + combo_item_icon = itemView.findViewById(R.id.combo_item_icon); + } + + } + + private OnItemClickListener onItemClickListener; + + public interface OnItemClickListener { + void onItemClick(View view,int giftId); + } + + public void addOnItemClickListener(OnItemClickListener onItemClickListener){ + this.onItemClickListener = onItemClickListener; + } +} diff --git a/live/src/main/java/com/yunbao/live/adapter/FrameGiftAdapter.java b/live/src/main/java/com/yunbao/live/adapter/FrameGiftAdapter.java index 6e5acb0f2..5e2b22877 100644 --- a/live/src/main/java/com/yunbao/live/adapter/FrameGiftAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/FrameGiftAdapter.java @@ -42,6 +42,7 @@ public class FrameGiftAdapter extends RecyclerView.Adapter { if (!TextUtils.isEmpty(wishGiftId) && TextUtils.equals(giftJson.get(position).getId() + "", wishGiftId)) { Bus.get().post(new LiveGiftItemEvent().setLiveGiftModel(giftJson.get(position))); + wishGiftId = null; } FrameGiftViewHolder frameGiftViewHolder = (FrameGiftViewHolder) holder; diff --git a/live/src/main/java/com/yunbao/live/adapter/PrankAdapter.java b/live/src/main/java/com/yunbao/live/adapter/PrankAdapter.java new file mode 100644 index 000000000..e0d0589b5 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/PrankAdapter.java @@ -0,0 +1,88 @@ +package com.yunbao.live.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.common.bean.PrankProgressBean; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.live.R; +import com.yunbao.live.views.LiveRoomViewHolder; + +import java.util.ArrayList; +import java.util.List; + +public class PrankAdapter extends RecyclerView.Adapter { + + private List mList = new ArrayList<>(); + private Context mContext; + + public PrankAdapter(Context context){ + mContext = context; + } + + public void setList(List list){ + mList.clear(); + mList.addAll(list); + notifyDataSetChanged(); + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_prank_progress, parent, false)); + } + + @SuppressLint("SetTextI18n") + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + PrankProgressBean.PrankList data = mList.get(position); + holder.itemView.setOnClickListener(v-> onItemClickListener.onItemClick(v,data.getGift_id())); + holder.prank_item_subscript.setText(String.valueOf(data.getCompleted_num())); + holder.prank_item_prank_name.setText(data.getPrank_content()); + holder.prank_item_gift_name.setText(data.getGift_name()); + holder.prank_item_now_progress.setText(String.valueOf(data.getSend_num())); + holder.prank_item_total_progress.setText("/"+ data.getGift_num()); + ImgLoader.display(mContext,data.getGift_icon(),holder.prank_item_icon); + holder.prank_item_progress.setMax(data.getGift_num()); + holder.prank_item_progress.setProgress(data.getSend_num()); + } + + @Override + public int getItemCount() { + return mList.size(); + } + + class MyViewHolder extends RecyclerView.ViewHolder{ + private TextView prank_item_subscript,prank_item_prank_name,prank_item_gift_name,prank_item_now_progress,prank_item_total_progress; + private ImageView prank_item_icon; + private ProgressBar prank_item_progress; + public MyViewHolder(@NonNull View itemView) { + super(itemView); + prank_item_subscript = itemView.findViewById(R.id.prank_item_subscript); + prank_item_prank_name = itemView.findViewById(R.id.prank_item_prank_name); + prank_item_gift_name = itemView.findViewById(R.id.prank_item_gift_name); + prank_item_now_progress = itemView.findViewById(R.id.prank_item_now_progress); + prank_item_total_progress = itemView.findViewById(R.id.prank_item_total_progress); + prank_item_icon = itemView.findViewById(R.id.prank_item_icon); + prank_item_progress = itemView.findViewById(R.id.prank_item_progress); + } + } + + private OnItemClickListener onItemClickListener; + + public interface OnItemClickListener { + void onItemClick(View view,int giftId); + } + + public void addOnItemClickListener(OnItemClickListener onItemClickListener){ + this.onItemClickListener = onItemClickListener; + } +} diff --git a/live/src/main/java/com/yunbao/live/socket/SocketMessageListener.java b/live/src/main/java/com/yunbao/live/socket/SocketMessageListener.java index e8cdb4451..4f6f9669e 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketMessageListener.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketMessageListener.java @@ -341,4 +341,9 @@ public interface SocketMessageListener { * */ void onHourRank(LiveChatBean bean,JSONObject ranks); + + /** + * 整蛊列表数据更新 + */ + void onUpdatePrankProgress(String prankString); } diff --git a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java index 6237cff21..801bd7506 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java @@ -19,6 +19,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.GsonUtils; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppContext; import com.yunbao.common.Constants; @@ -192,7 +195,7 @@ public class SocketRyClient { SocketReceiveBean received = JSON.parseObject(socketMsg, SocketReceiveBean.class); JSONObject map = received.getMsg().getJSONObject(0); - +// LogUtils.e("yqw=====>收到的socket:"+map.getString("_method_")+","+map.getString("ct")); switch (map.getString("_method_")) { //用户连麦 case Constants.LIAN_MAI: @@ -251,7 +254,7 @@ public class SocketRyClient { // LiveLinkMicPresenter.setHD(map.getString("ct")); break; case Constants.SOCKET_SYSTEM://系统消息 - if (map.getString("ct").contains("甜蜜不停")) { + if (map.getString("ct").contains("甜蜜不停")) { break; } UserBean us = CommonAppConfig.getInstance().getUserBean(); @@ -290,6 +293,19 @@ public class SocketRyClient { } } break; + + case Constants.PrankSendData: + //整蛊礼物刷新 + if (map.getIntValue("action") == 13 && map.getString("msgtype").equals("4")){ + String ctString = map.getString("ct"); + JsonElement jsonElement = JsonParser.parseString(ctString); + if (jsonElement == null) break; +// LogUtils.e("yqw=====>整蛊礼物列表:"+ctString); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + systemChatMessage2(WordUtil.isNewZh() ? jsonObject.get("msg").getAsString() : jsonObject.get("msg_en").getAsString()); + mListener.onUpdatePrankProgress(ctString); + } + break; case Constants.SOCKET_KICK://踢人 systemChatMessage2(map.getString("ct")); mListener.onKick(map.getString("touid")); diff --git a/live/src/main/java/com/yunbao/live/views/LiveGiftItemFragment.java b/live/src/main/java/com/yunbao/live/views/LiveGiftItemFragment.java index ee7c03513..1d151691b 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveGiftItemFragment.java +++ b/live/src/main/java/com/yunbao/live/views/LiveGiftItemFragment.java @@ -56,6 +56,16 @@ public class LiveGiftItemFragment extends BaseFragment { frameGiftList.setLayoutManager(new GridLayoutManager(getActivity(), 4, GridLayoutManager.VERTICAL, false)); frameGiftAdapter = new FrameGiftAdapter(contextLayoutGiftHeight, giftJson, mStream, mLiveUid, wishGiftId); frameGiftList.setAdapter(frameGiftAdapter); + + frameGiftList.post(()->{ + if (!TextUtils.isEmpty(wishGiftId) && !giftJson.isEmpty()){ + for (int i = 0; i < giftJson.size(); i++) { + if (giftJson.get(i).getId()== Integer.parseInt(wishGiftId)){ + frameGiftAdapter.giftSelect(giftJson.get(i)); + } + } + } + }); } @Override diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 312689662..172b13db9 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -44,6 +44,9 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.blankj.utilcode.util.GsonUtils; +import com.blankj.utilcode.util.LogUtils; +import com.blankj.utilcode.util.SizeUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; @@ -51,6 +54,7 @@ import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; +import com.google.gson.reflect.TypeToken; import com.lxj.xpopup.XPopup; import com.makeramen.roundedimageview.RoundedImageView; import com.ms.banner.Banner; @@ -61,6 +65,7 @@ import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; +import com.yunbao.common.bean.PrankProgressBean; import com.yunbao.common.utils.MobclickAgent; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; @@ -148,9 +153,11 @@ import com.yunbao.live.activity.LiveAnchorActivity; import com.yunbao.live.activity.LiveAudienceActivity; import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.activity.ZhuangBanActivity; +import com.yunbao.live.adapter.ComboAdapter; import com.yunbao.live.adapter.LiveChatAdapter; import com.yunbao.live.adapter.LiveRoomFastMessageRecyclerViewAdapter; import com.yunbao.live.adapter.LiveUserAdapter; +import com.yunbao.live.adapter.PrankAdapter; import com.yunbao.live.bean.DrPkbean; import com.yunbao.live.bean.LiveBuyGuardMsgBean; import com.yunbao.live.bean.LiveChatBean; @@ -195,6 +202,7 @@ import java.lang.ref.WeakReference; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -396,6 +404,15 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis private View quick_gift_reminder; private int guardType = 0; + //整蛊进度列表功能 + private View prank_group; + private TextView prank_group_title,prank_group_turntable; + private RecyclerView recycler_prank; + private ImageView prank_group_bottom_icon,prank_group_turntable_icon,prank_small_icon; + private PrankAdapter prankAdapter; + private ComboAdapter comboAdapter; + private List prankAndComboList = new ArrayList<>(); + public LiveRoomViewHolder setGuardType(int guardType) { this.guardType = guardType; return this; @@ -1624,6 +1641,164 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } }); // dragonImmediateParticipation.setVisibility(View.GONE); + + //整蛊转盘优化更新 + prank_group = findViewById(R.id.prank_group);//浮窗 + prank_group_title = (TextView) findViewById(R.id.prank_group_title);//浮窗标题 + recycler_prank = (RecyclerView) findViewById(R.id.recycler_prank);//列表 + prank_group_turntable = (TextView) findViewById(R.id.prank_group_turntable);//文字转盘整蛊(用户端已删除,主播端为待完成整蛊按钮) + prank_group_bottom_icon = (ImageView) findViewById(R.id.prank_group_bottom_icon);//收起icon + prank_group_turntable_icon = (ImageView) findViewById(R.id.prank_group_turntable_icon);//转盘图标 + prank_small_icon = (ImageView) findViewById(R.id.prank_small_icon);//收起后图标 + + //点击文字转盘整蛊(跳转转盘整蛊) + prank_group_turntable.setOnClickListener(v->{ + + }); + + //点击收起 + prank_group_bottom_icon.setOnClickListener(v->{ + prank_group.setVisibility(View.GONE); + prank_small_icon.setVisibility(View.VISIBLE); + }); + + //点击收起整蛊icon + prank_small_icon.setOnClickListener(v->{ + prank_group.setVisibility(View.VISIBLE); + prank_small_icon.setVisibility(View.GONE); + }); + + //点击图片转盘整蛊(跳转转盘整蛊) + prank_group_turntable_icon.setOnClickListener(v->{ + Bus.get().post(new LiveAudienceEvent() + .setType(LiveAudienceEvent.LiveAudienceType.WE_CHEAT)); + }); + + recycler_prank.setLayoutManager(new LinearLayoutManager(mContext)); + + prankAdapter = new PrankAdapter(mContext); + comboAdapter = new ComboAdapter(mContext); + + //整蛊礼物点击 + prankAdapter.addOnItemClickListener((view, giftId) -> { +// LogUtils.e("yqw=====>点击整蛊礼物:"+giftId); + openGiftDialog(String.valueOf(giftId)); + }); + + //连击投票礼物点击 + comboAdapter.addOnItemClickListener((view, giftId) -> { +// LogUtils.e("yqw=====>点击投票礼物:"+giftId); + openGiftDialog(String.valueOf(giftId)); + }); + } + + //初始化整蛊列表进度 + public void initPrankProgress(){ +// LogUtils.e("yqw=====>主播id:"+mLiveUid); + //获取整蛊列表 + LiveNetManager.get(mContext).getPrankProgressList(mLiveUid, new com.yunbao.common.http.base.HttpCallback() { + @Override + public void onSuccess(PrankProgressBean data) { +// LogUtils.e("yqw=====>整蛊列表:"+data); + prankAndComboList.clear(); + prankAndComboList.addAll(data.getPrank_list()); + setPrankList(data.getStatus(),data.getPrank_type(),data.getPrank_turntable_status()); + } + + @Override + public void onError(String error) { + prank_group.setVisibility(View.GONE); + prank_small_icon.setVisibility(View.GONE); + prank_group_turntable_icon.setVisibility(View.GONE); + ToastUtil.show(WordUtil.isNewZh()?"抱歉!出錯了!":"i \\'m sorry! An error occurred"); + } + }); + } + + + + //刷新整蛊礼物列表 + public void refreshPrank(String newPrankData){ + try { +// LogUtils.e("yqw=====>整蛊礼物数据1:"+newPrankData); + org.json.JSONObject ctString = new org.json.JSONObject(newPrankData); + if (ctString.getInt("is_update") == 1){ + //列表全部更新 + if (ctString.getInt("status")==1){ + //编辑添加整蛊 + initPrankProgress(); + }else { + //编辑取消整蛊 + prank_group.setVisibility(View.GONE); + prank_small_icon.setVisibility(View.GONE); + } + if (Integer.parseInt(ctString.getString("prank_turntable_status")) == 0){ + prank_group_turntable_icon.setVisibility(View.GONE); + } + }else { + //送整蛊礼物更新 + String prankListString = ctString.getString("prank_list"); + List prankList = GsonUtils.fromJson(prankListString,new TypeToken>() {}.getType()); +// LogUtils.e("yqw=====>整蛊礼物数据2:"+prankList.toString()); + prankAndComboList.clear(); + prankAndComboList.addAll(prankList); + setPrankList(Integer.parseInt(ctString.getString("status")), Integer.parseInt(ctString.getString("prank_type")), Integer.parseInt(ctString.getString("prank_turntable_status"))); + } + }catch (Exception e){ + LogUtils.e("yqw=====>转换错误:"+e.getMessage()); + } + + } + + //设置整蛊礼物数据 + private void setPrankList(int status,int mPrankType,int prankTurntableStatus){ +// LogUtils.e("yqw=====>显示转盘icon:是否显示:"+(prankTurntableStatus == 1)+",是否在倒计时"+(lt_trickery.getVisibility() == View.VISIBLE)); + if (prankTurntableStatus == 1 && lt_trickery.getVisibility() == View.GONE){ + prank_group_turntable_icon.setVisibility(View.VISIBLE); + }else { + prank_group_turntable_icon.setVisibility(View.GONE); + } +// LogUtils.e("yqw=====>显示整蛊列表或者投票列表:"+status); + if (status == 1){ + prank_group.setVisibility(View.VISIBLE); + if (mPrankType == 1){ + sortByCompletionRate(prankAndComboList); + prankAdapter.setList(prankAndComboList); + recycler_prank.setAdapter(prankAdapter); + }else { + sortBySendNum(prankAndComboList); + comboAdapter.setList(prankAndComboList); + recycler_prank.setAdapter(comboAdapter); + prank_group_title.setText(R.string.combo_vote); + } + limitItem(Math.min(prankAndComboList.size(), 4)); + }else { + prank_group.setVisibility(View.GONE); + prank_small_icon.setVisibility(View.GONE); + } + } + + //根据完成度排序 + private void sortByCompletionRate(List items) { + Collections.sort(items, (item1, item2) -> Double.compare(item2.getCompletionRate(), item1.getCompletionRate())); + } + + //根据连击数排列 + private void sortBySendNum(List items) { + Collections.sort(items, (item1, item2) -> { + return Integer.compare(item2.getSend_num(), item1.getSend_num()); // 从高到低排序 + }); + } + + //设置最多显示4个项目 + private void limitItem(int maxItem){ + recycler_prank.post(() -> { + View itemView = recycler_prank.getChildAt(0); + int height = (itemView.getHeight()+ SizeUtils.dp2px(3f))*maxItem; + ViewGroup.LayoutParams layoutParams = recycler_prank.getLayoutParams(); + layoutParams.height = height; + recycler_prank.setLayoutParams(layoutParams); + }); } int ttttttype = 0; @@ -4725,6 +4900,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis content = jsonObject.getString("content"); name = jsonObject.getString("user_nicename"); lt_trickery.setVisibility(View.VISIBLE); + prank_group_turntable_icon.setVisibility(View.GONE); lt_trickery.setBackground(mContext.getResources().getDrawable(R.mipmap.img_buoy)); isClose = false; starTimeloud(1, time); @@ -4768,6 +4944,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis countDownTimerTrickery.cancel(); countDownTimerTrickery = null; lt_trickery.setVisibility(View.GONE); + prank_group_turntable_icon.setVisibility(View.VISIBLE); LiveNetManager.get(mContext).endPrankTurntable(mLiveUid, new com.yunbao.common.http.base.HttpCallback() { @Override public void onSuccess(BaseModel data) { diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 1c236e345..128f3088e 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -589,6 +589,8 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mLiveRoomViewHolder.setVoteData(data.getEnterRoomInfo().getVoteModel()); mLiveRoomViewHolder.updateFansMessageRed(); mLiveRoomViewHolder.setFansGroup(data.getEnterRoomInfo().getIsFans()); + //初始化整蛊进度列表 + mLiveRoomViewHolder.initPrankProgress(); isattention = Integer.parseInt(data.getEnterRoomInfo().getIsattention()); if (isattention == 0) { @@ -1736,6 +1738,14 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } } + //整蛊进度数据更新 + @Override + public void onUpdatePrankProgress(String prankString) { + if (mLiveRoomViewHolder != null){ + mLiveRoomViewHolder.refreshPrank(prankString); + } + } + private PagerAdapter pagerAdapter = new PagerAdapter() { @Override public int getCount() { diff --git a/live/src/main/res/drawable/bg_prank_bottom_detail.xml b/live/src/main/res/drawable/bg_prank_bottom_detail.xml new file mode 100644 index 000000000..8083e5818 --- /dev/null +++ b/live/src/main/res/drawable/bg_prank_bottom_detail.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/bg_prank_group.xml b/live/src/main/res/drawable/bg_prank_group.xml new file mode 100644 index 000000000..cae27342f --- /dev/null +++ b/live/src/main/res/drawable/bg_prank_group.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/bg_prank_item.xml b/live/src/main/res/drawable/bg_prank_item.xml new file mode 100644 index 000000000..861ab3d90 --- /dev/null +++ b/live/src/main/res/drawable/bg_prank_item.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/bg_prank_item_subscript.xml b/live/src/main/res/drawable/bg_prank_item_subscript.xml new file mode 100644 index 000000000..eb405431d --- /dev/null +++ b/live/src/main/res/drawable/bg_prank_item_subscript.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/progress_prank_bg.xml b/live/src/main/res/drawable/progress_prank_bg.xml new file mode 100644 index 000000000..520540726 --- /dev/null +++ b/live/src/main/res/drawable/progress_prank_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_combo_vote.xml b/live/src/main/res/layout/item_combo_vote.xml new file mode 100644 index 000000000..41a59afa6 --- /dev/null +++ b/live/src/main/res/layout/item_combo_vote.xml @@ -0,0 +1,41 @@ + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_prank_progress.xml b/live/src/main/res/layout/item_prank_progress.xml new file mode 100644 index 000000000..548d2f753 --- /dev/null +++ b/live/src/main/res/layout/item_prank_progress.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/view_live_room.xml b/live/src/main/res/layout/view_live_room.xml index 1b330e863..7165d8a47 100644 --- a/live/src/main/res/layout/view_live_room.xml +++ b/live/src/main/res/layout/view_live_room.xml @@ -2396,6 +2396,32 @@ android:gravity="bottom" android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/bottom_icon.png b/live/src/main/res/mipmap-xhdpi/bottom_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad5e0addd334b9b4bd6f7b2f862bc53896dabe2 GIT binary patch literal 420 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 BOAr76 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xxxhdpi/bottom_icon.png b/live/src/main/res/mipmap-xxxhdpi/bottom_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..61feac52cf3f9e622021ab9b8dfce7481041ef29 GIT binary patch literal 770 zcmV+d1O5DoP)Px%yh%hsR7gwhl|N_{K@^AIo7vq9IWKA_hBSutb}wxzJ3+xlERGf*9_g@uK^VHoxkQD7Lx3){AT?j$jn%XLU8FA!15 zvaFZg-Q7Q`;A}QKfQXOuHzIzPQl3wxQu&>L6A=?ayj#va1^@~GZa9uJUIhywt^vS( z%{2@Iq9_WZC^|YdH8qn?r*-j`*4*5jYntY?X`1`OFw_|m5r>k=_1Z9uWE4ff z7y}~8FvbRK+n#9@E`*o>fJ+*tm!2IWI^j6ZCq$&`k=BRh^ZETj5KI!$aYVFM8g=nN zu~>Z8+uK`pw${pIG6y*4A5GItYPEXfN-3X+PP(q^ukKm*$rM7IL&S%i^MqC(i^U)a zg6C4oyFEQUnR;+Gn>~$)4>;$Y%SwTBu4m;*JRZN=)z$T@zJ9~E+Vi|lBKlxi*5OK} zQVaWzh=Y#fys3qGo;RkHy23d(H53sQ5otq{>lte3C*gVCC;(gs0A7P3;wU1HD5b_3 zV`sIMm6`aWl)C7;?)!~qq9O3gl{xVX4yX=&+cJRUz&C={w!L|>IeA_2u>@%HTO?47>8KDilm&8cpr zNeD3r0K<&24y9C)i27aEebq?spQCD~cy;ak{QMCq^0T<8$Pc&F0}g^4gdfE07*qoM6N<$f?T>` A*8l(j literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xxxhdpi/prank_icon.png b/live/src/main/res/mipmap-xxxhdpi/prank_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9f622f3a6d1ec8ed8307d21a8b4f3c8dbc076eda GIT binary patch literal 3605 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 b?)(1-sPq{9@J_CR00000NkvXXu0mjfG9K(1 literal 0 HcmV?d00001 diff --git a/live/src/main/res/mipmap-xxxhdpi/turntable_icon.png b/live/src/main/res/mipmap-xxxhdpi/turntable_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eca2d11bdbeb41960692e1e9405e4af112e4dd3d GIT binary patch literal 27948 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

M*aI-k9x-VOD$4BU!C3V14f&SZ3vb8czUTn1Q+ z=_7ZCePZnlOA0~PZF3D0Wfe;B?i*eVu%7aGD_jbS!yTU5AV3qHRhSE6iW<_#UF+n zcm~qc0`vy_k^YFAnMTZ4CFCE`E|~l~6}FT~CO1lHqPb~Z9zc_HDL>;pQ}PeV-?Yz( z*CzkQtNSpKc#DL5**(^>a#}3A53w|$ZH>5i2+jVLa?89ls*5`2cG?2bE*MO7<;BNC z{JpIR|5HW+;=C&}=jp*~7SA~k@o*V@EnhZp9uz?!nH9Hh7ODty1%qMQI&RZ|hYieH zM`VS}od4>nW^G=XJq~W%fsvzf!%LkiP|Wh#eULE2;X0FC!6jl)BEnd?_Nv5l+7=|6=!o2F6wSb9`lMb_J_D3M{3WB}@6Gjf&U+WZx-Cx3t3JU{Bak(2Gq&3_Oqkgj?+OJ)-& nG=!+zitAsl^{~y(%6$JD=RpRDhy+R!00000NkvXXu0mjfiEtGf literal 0 HcmV?d00001 diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index 411546555..0d019dda0 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -117,6 +117,12 @@ Fan group level Of Lv%s Can send this gift Join the fan group can be opened [Join] Join the fan group to open + + Tricky progress + Turntable + Details> + Combo + Most first Clear Save Switch to diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index 9eb4649ab..ca730f16d 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -134,4 +134,10 @@ 確定 禮物數量 + 設置其他數量(最多9999) + + 整蠱進度 + 轉盤整蠱 + 詳情> + 連擊投票 + 連擊最多優先 From 45743e3070fe7be8bdf94d8938992d49519e462c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E5=89=8D=E5=8D=AB?= <2298122580@qq.com> Date: Fri, 7 Jun 2024 15:35:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?6.7.0=E7=94=A8=E6=88=B7=E7=AB=AF=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/live/activity/LiveAudienceActivity.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index 15fd3aea4..adffc593f 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -579,6 +579,11 @@ public class LiveAudienceActivity extends LiveActivity { manager.prankTurntable(msgtype, time, jsonObject); } + @Override + public void onUpdatePrankProgress(String prankString) { + + } + @Override public void onBackPressed() { if (manager != null && manager.getsudGameMin()) {