From 8297237b8e1181670356556a1d031fea5060cc51 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Thu, 18 Aug 2022 14:32:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=83=E6=84=BF=E6=A6=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/event/LiveAudienceEvent.java | 3 +- config.gradle | 4 +- .../live/activity/LiveAudienceActivity.java | 27 +++- .../yunbao/live/bean/WishlistItemModel.java | 118 ++++++++++++++++++ .../com/yunbao/live/bean/WishlistModel.java | 41 ++++++ .../yunbao/live/views/LiveRoomViewHolder.java | 37 +++++- live/src/main/res/anim/anim_marquee_in.xml | 6 + live/src/main/res/anim/anim_marquee_out.xml | 6 + .../main/res/layout/view_live_audience.xml | 2 +- live/src/main/res/layout/view_live_room.xml | 30 +++++ live/src/main/res/layout/view_wish_list.xml | 21 ++++ .../res/mipmap-xxxhdpi/live_icon_wishlist.png | Bin 0 -> 3805 bytes 12 files changed, 289 insertions(+), 6 deletions(-) create mode 100644 live/src/main/java/com/yunbao/live/bean/WishlistItemModel.java create mode 100644 live/src/main/java/com/yunbao/live/bean/WishlistModel.java create mode 100644 live/src/main/res/anim/anim_marquee_in.xml create mode 100644 live/src/main/res/anim/anim_marquee_out.xml create mode 100644 live/src/main/res/layout/view_wish_list.xml create mode 100644 live/src/main/res/mipmap-xxxhdpi/live_icon_wishlist.png diff --git a/common/src/main/java/com/yunbao/common/event/LiveAudienceEvent.java b/common/src/main/java/com/yunbao/common/event/LiveAudienceEvent.java index 1b6e747d8..1d70496b9 100644 --- a/common/src/main/java/com/yunbao/common/event/LiveAudienceEvent.java +++ b/common/src/main/java/com/yunbao/common/event/LiveAudienceEvent.java @@ -35,7 +35,8 @@ public class LiveAudienceEvent extends BaseModel { LIVE_WKS(7, "周星榜"), NOBLE(8, "贵族"), LIAN_MAI(9, "连麦"), - EFFECTS_SETTINGS(10, "特效設置"); + EFFECTS_SETTINGS(10, "特效設置"), + WISH_LIST(11,"心愿单"); private int type; diff --git a/config.gradle b/config.gradle index 492fa93ba..3f66756b1 100644 --- a/config.gradle +++ b/config.gradle @@ -9,9 +9,9 @@ ext { ] manifestPlaceholders = [ //正式 - serverHost : "https://napi.yaoulive.com", +// serverHost : "https://napi.yaoulive.com", //測試 -// serverHost : "https://ceshi.yaoulive.com", + serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", 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 4dfeec4ae..ba78e8cf5 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -33,6 +33,7 @@ import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustEvent; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.blankj.utilcode.util.GsonUtils; import com.ms.banner.Banner; import com.opensource.svgaplayer.SVGAImageView; import com.tencent.imsdk.v2.V2TIMCallback; @@ -80,12 +81,14 @@ import com.yunbao.live.bean.LiveBean; import com.yunbao.live.bean.LiveGuardInfo; import com.yunbao.live.bean.LivePKUserListBean; import com.yunbao.live.bean.LiveUserGiftBean; +import com.yunbao.live.bean.WishlistModel; import com.yunbao.live.dialog.BlowkissDialog; import com.yunbao.live.dialog.LiveFansFragment; import com.yunbao.live.dialog.LiveGiftDialogFragment; import com.yunbao.live.dialog.LiveGuardDialogFragment; import com.yunbao.live.dialog.LiveHDDialogFragment; import com.yunbao.live.dialog.LiveMicUserDialogFragment; +import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience; import com.yunbao.live.dialog.NewUserDialog; import com.yunbao.live.event.LinkMicTxAccEvent; import com.yunbao.live.event.LiveRoomChangeEvent; @@ -257,6 +260,7 @@ public class LiveAudienceActivity extends LiveActivity { btnSmallScreen.setVisibility(View.GONE); ((LiveAudienceActivity) mContext).mLivePlayViewHolder.smallScreen(); }); + mContainer.removeAllViews(); mLiveRoomViewHolder = new LiveRoomViewHolder(false, 1, mContext, mContainer, (GifImageView) mSecondPage.findViewById(R.id.gift_gif), (SVGAImageView) mSecondPage.findViewById(R.id.gift_svga), mContainerWrap, getWindowManager()); mLiveRoomViewHolder.addToParent(); mLiveRoomViewHolder.subscribeActivityLifeCycle(); @@ -426,8 +430,21 @@ public class LiveAudienceActivity extends LiveActivity { } }); + //心愿单 + LiveHttpUtil.getWishList(mLiveUid, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (info.length > 0) { + String json = info[0]; + WishlistModel model = GsonUtils.fromJson(json, WishlistModel.class); + mLiveRoomViewHolder.initWishList(model.getWishlist()); + } + } - + @Override + public void onFinish() { + } + }); } //定时器 @@ -1493,6 +1510,14 @@ public class LiveAudienceActivity extends LiveActivity { EffectsSettingsDialog effectsSettingsDialog = new EffectsSettingsDialog(); effectsSettingsDialog.show(getSupportFragmentManager(), "EffectsSettingsDialog"); break; + case WISH_LIST: + LiveWishListDialogFragment4Audience fragment4Audience = new LiveWishListDialogFragment4Audience(); + bundle.putString(Constants.LIVE_UID, mLiveUid); + fragment4Audience.setArguments(bundle); + if (mContext instanceof LiveAudienceActivity) { + fragment4Audience.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveWishListDialogFragmentAudience"); + } + break; } diff --git a/live/src/main/java/com/yunbao/live/bean/WishlistItemModel.java b/live/src/main/java/com/yunbao/live/bean/WishlistItemModel.java new file mode 100644 index 000000000..2ff070c13 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/bean/WishlistItemModel.java @@ -0,0 +1,118 @@ +package com.yunbao.live.bean; + +import com.google.gson.annotations.SerializedName; +import com.yunbao.common.bean.BaseModel; + +public class WishlistItemModel extends BaseModel { + /** + * create_time : 1660790600 + * dtime : 20220818 + * id : 101478 + * lid : 1353 + * luid : 97711 + * wishlist_icon : https://qny.shayucm.com/4yueliwu/%E8%93%9D%E8%89%B2%E7%88%B1%E6%83%85%E6%B5%B7.png + * wishlist_name : 藍色愛情海 + * wishlist_num : 1 + * wishlist_progress : 0 + */ + + @SerializedName("create_time") + private String createTime = ""; + @SerializedName("dtime") + private String dtime = ""; + @SerializedName("id") + private String id = ""; + @SerializedName("lid") + private String lid = ""; + @SerializedName("luid") + private String luid = ""; + @SerializedName("wishlist_icon") + private String wishlistIcon = ""; + @SerializedName("wishlist_name") + private String wishlistName = ""; + @SerializedName("wishlist_num") + private String wishlistNum = ""; + @SerializedName("wishlist_progress") + private String wishlistProgress = ""; + + public String getCreateTime() { + return createTime; + } + + public WishlistItemModel setCreateTime(String createTime) { + this.createTime = createTime; + return this; + } + + public String getDtime() { + return dtime; + } + + public WishlistItemModel setDtime(String dtime) { + this.dtime = dtime; + return this; + } + + public String getId() { + return id; + } + + public WishlistItemModel setId(String id) { + this.id = id; + return this; + } + + public String getLid() { + return lid; + } + + public WishlistItemModel setLid(String lid) { + this.lid = lid; + return this; + } + + public String getLuid() { + return luid; + } + + public WishlistItemModel setLuid(String luid) { + this.luid = luid; + return this; + } + + public String getWishlistIcon() { + return wishlistIcon; + } + + public WishlistItemModel setWishlistIcon(String wishlistIcon) { + this.wishlistIcon = wishlistIcon; + return this; + } + + public String getWishlistName() { + return wishlistName; + } + + public WishlistItemModel setWishlistName(String wishlistName) { + this.wishlistName = wishlistName; + return this; + } + + public String getWishlistNum() { + return wishlistNum; + } + + public WishlistItemModel setWishlistNum(String wishlistNum) { + this.wishlistNum = wishlistNum; + return this; + } + + public String getWishlistProgress() { + return wishlistProgress; + } + + public WishlistItemModel setWishlistProgress(String wishlistProgress) { + this.wishlistProgress = wishlistProgress; + return this; + } +} diff --git a/live/src/main/java/com/yunbao/live/bean/WishlistModel.java b/live/src/main/java/com/yunbao/live/bean/WishlistModel.java new file mode 100644 index 000000000..8a3d9638b --- /dev/null +++ b/live/src/main/java/com/yunbao/live/bean/WishlistModel.java @@ -0,0 +1,41 @@ +package com.yunbao.live.bean; + +import com.google.gson.annotations.SerializedName; +import com.yunbao.common.bean.BaseModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * 主播心愿单 + */ +public class WishlistModel extends BaseModel { + + /** + * img : https://qny.shayucm.com/Live_icon%2FBTN_XINYUAN%403x.png + * wishlist : [{"create_time":"1660790600","dtime":20220818,"id":101478,"lid":1353,"luid":97711,"wishlist_icon":"https://qny.shayucm.com/4yueliwu/%E8%93%9D%E8%89%B2%E7%88%B1%E6%83%85%E6%B5%B7.png","wishlist_name":"藍色愛情海","wishlist_num":1,"wishlist_progress":0},{"create_time":"1660790602","dtime":20220818,"id":101479,"lid":1330,"luid":97711,"wishlist_icon":"https://qny.shayucm.com/4yueliwu/%E6%A2%A6%E5%B9%BB%E7%83%AD%E6%B0%94%E7%90%83.png","wishlist_name":"夢幻熱氣球","wishlist_num":1,"wishlist_progress":0},{"create_time":"1660790603","dtime":20220818,"id":101480,"lid":224,"luid":97711,"wishlist_icon":"https://qny.shayucm.com/603f27dc4b777.png","wishlist_name":"玫瑰花束","wishlist_num":1,"wishlist_progress":0},{"create_time":"1660790605","dtime":20220818,"id":101481,"lid":1334,"luid":97711,"wishlist_icon":"https://qny.shayucm.com/4yueliwu/%E6%B5%AA%E6%BC%AB%E6%9C%A8%E9%A9%AC.png","wishlist_name":"旋轉木馬","wishlist_num":1,"wishlist_progress":0},{"create_time":"1660790606","dtime":20220818,"id":101482,"lid":218,"luid":97711,"wishlist_icon":"https://qny.shayucm.com/603f26a290a50.png","wishlist_name":"百合","wishlist_num":1,"wishlist_progress":0},{"create_time":"1660790609","dtime":20220818,"id":101483,"lid":1333,"luid":97711,"wishlist_icon":"https://qny.shayucm.com/4yueliwu/%E6%B5%AA%E6%BC%AB%E5%90%AF%E8%88%AA.png","wishlist_name":"浪漫啟航","wishlist_num":1,"wishlist_progress":0}] + */ + + @SerializedName("img") + private String img = ""; + @SerializedName("wishlist") + private List wishlist = new ArrayList<>(); + + public String getImg() { + return img; + } + + public WishlistModel setImg(String img) { + this.img = img; + return this; + } + + public List getWishlist() { + return wishlist; + } + + public WishlistModel setWishlist(List wishlist) { + this.wishlist = wishlist; + return this; + } +} 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 2b2cfaffc..dca0a8cc1 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -1,5 +1,6 @@ package com.yunbao.live.views; +import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle; @@ -8,6 +9,7 @@ import android.os.Message; import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -16,6 +18,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; +import android.widget.ViewFlipper; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; @@ -75,6 +78,7 @@ import com.yunbao.live.bean.LiveLuckGiftWinBean; import com.yunbao.live.bean.LivePKUserListBean; import com.yunbao.live.bean.LiveReceiveGiftBean; import com.yunbao.live.bean.LiveUserGiftBean; +import com.yunbao.live.bean.WishlistItemModel; import com.yunbao.live.custom.LiveLightView; import com.yunbao.live.custom.TopGradual; import com.yunbao.live.dialog.LiveFansMedalDialogFragment; @@ -153,7 +157,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis public TextView room_hot; public String touid, gotoroom; public static TextView fans; - public LinearLayout fans_btn; + public LinearLayout fans_btn, wishListLayout; public static View d_pk_view; public static int isAttention = 0;//是否关注 0=没关注, public static String mNameText; @@ -626,6 +630,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis room_hot = (TextView) findViewById(R.id.room_hot); fans = (TextView) findViewById(R.id.fans); fans_btn = (LinearLayout) findViewById(R.id.fans_btn); + wishListLayout = (LinearLayout) findViewById(R.id.wish_list_layout); if (LivePushTxViewHolder.mTRTCCloud != null || LivePushRyViewHolder.rtcRoom != null) { fans_btn.setVisibility(View.GONE); @@ -793,6 +798,36 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis findViewById(R.id.ft_hot_add).setOnClickListener(this); ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.open_sidebar), () -> Bus.get().post(new LiveAudienceEvent() .setType(LiveAudienceEvent.LiveAudienceType.SIDEBAR))); + //点击心愿单 + ViewClicksAntiShake.clicksAntiShake(wishListLayout, () -> Bus.get().post(new LiveAudienceEvent() + .setType(LiveAudienceEvent.LiveAudienceType.WISH_LIST))); + + + } + + /** + * 初始化心愿单列表轮播 + */ + public void initWishList(List wishlist) { + if (wishlist.size() > 0) { + wishListLayout.setVisibility(View.VISIBLE); + } else { + wishListLayout.setVisibility(View.GONE); + } + ((Activity) mContext).runOnUiThread(() -> { + ViewFlipper wishListFlipper = (ViewFlipper) findViewById(R.id.wish_list); + for (int i = 0; i < wishlist.size(); i++) { + View wish = LayoutInflater.from(mContext).inflate(R.layout.view_wish_list, null); + ImageView wishPic = wish.findViewById(R.id.wish_pic); + TextView wishIndex = wish.findViewById(R.id.wish_index); + ImgLoader.display(mContext, wishlist.get(i).getWishlistIcon(), wishPic); + wishIndex.setText((i + 1) + "/" + wishlist.size()); + wishListFlipper.addView(wish); + } + wishListFlipper.startFlipping(); + }); + + } //点击头像 diff --git a/live/src/main/res/anim/anim_marquee_in.xml b/live/src/main/res/anim/anim_marquee_in.xml new file mode 100644 index 000000000..9fded3ca9 --- /dev/null +++ b/live/src/main/res/anim/anim_marquee_in.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/live/src/main/res/anim/anim_marquee_out.xml b/live/src/main/res/anim/anim_marquee_out.xml new file mode 100644 index 000000000..b8d9cc11c --- /dev/null +++ b/live/src/main/res/anim/anim_marquee_out.xml @@ -0,0 +1,6 @@ + + + ; + \ No newline at end of file diff --git a/live/src/main/res/layout/view_live_audience.xml b/live/src/main/res/layout/view_live_audience.xml index e5b5d6ed7..deeef0d45 100644 --- a/live/src/main/res/layout/view_live_audience.xml +++ b/live/src/main/res/layout/view_live_audience.xml @@ -173,7 +173,7 @@ android:layout_height="55dp" android:layout_gravity="right" android:layout_marginRight="10dp" - android:layout_marginBottom="20dp" + android:layout_marginBottom="50dp" android:gravity="center_horizontal" android:orientation="vertical" android:visibility="gone"> diff --git a/live/src/main/res/layout/view_live_room.xml b/live/src/main/res/layout/view_live_room.xml index 273280ae4..bd9e2d8d4 100644 --- a/live/src/main/res/layout/view_live_room.xml +++ b/live/src/main/res/layout/view_live_room.xml @@ -254,6 +254,36 @@ android:textColor="#FFFFFFFF" android:textSize="10sp" /> + + + + + + + diff --git a/live/src/main/res/layout/view_wish_list.xml b/live/src/main/res/layout/view_wish_list.xml new file mode 100644 index 000000000..432c7212a --- /dev/null +++ b/live/src/main/res/layout/view_wish_list.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xxxhdpi/live_icon_wishlist.png b/live/src/main/res/mipmap-xxxhdpi/live_icon_wishlist.png new file mode 100644 index 0000000000000000000000000000000000000000..c59e917c59154e2f490f10a2e93a24d250f6c559 GIT binary patch literal 3805 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 T1CowH00000NkvXXu0mjfT7Fj7 literal 0 HcmV?d00001