From f3945e1b21effa2a32a3327ab529277f8d8f033a Mon Sep 17 00:00:00 2001 From: Martin <13046765170@163.com> Date: Sat, 24 Aug 2024 18:28:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7=E8=A7=82=E6=92=ADpu?= =?UTF-8?q?sh=EF=BC=8Cim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yunbao/common/Constants.java | 2 + .../live/activity/LiveAudienceActivity.java | 5 + .../yunbao/live/adapter/LiveChatAdapter.java | 16 +- .../com/yunbao/live/bean/LiveChatBean.java | 2 + .../live/dialog/LiveHDDialogFragment.java | 24 +++ .../yunbao/live/event/LiveAudienceEvent.java | 3 +- .../yunbao/live/socket/SocketSwClient.java | 4 + .../yunbao/live/views/LiveRoomViewHolder.java | 176 +++++++++++++++++- .../live/views/PortraitLiveManager.java | 25 ++- 9 files changed, 240 insertions(+), 17 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/Constants.java b/common/src/main/java/com/yunbao/common/Constants.java index 2558b4584..d92b34777 100644 --- a/common/src/main/java/com/yunbao/common/Constants.java +++ b/common/src/main/java/com/yunbao/common/Constants.java @@ -284,6 +284,8 @@ public class Constants { public static final String SOCKET_SEND_NEW_TASK_PUSH="SendNewTaskPush";//直播间-新用户完成任务push + public static final String SOCKET_SEND_NEW_TASK_IM ="SendNewTaskIM"; //直播间—新用户领取礼物IM + //视频举报获取位置 public static int xIndex = 0; public static int yindex = 0; 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 8b34ec953..b618b8f64 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -1585,6 +1585,11 @@ public class LiveAudienceActivity extends LiveActivity { manager.setNewTaskPush(event.getUid(),event.getHrefUrl()); } break; + case LIVE_AUTHOR_GIFT_PUSH: + if (manager != null) { + manager.setNewTaskIM(event.getUid()); + } + break; } diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java index 459e07b92..8ff946f11 100644 --- a/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java +++ b/live/src/main/java/com/yunbao/live/adapter/LiveChatAdapter.java @@ -8,6 +8,8 @@ import static com.yunbao.live.bean.LiveChatBean.STAR_CHALLENGE_UPGRADE_NOTIFY; import static com.yunbao.live.bean.LiveChatBean.SYSTEM3_COLOR; import static com.yunbao.live.bean.LiveChatBean.TYPE_TO_ANCHOR_PRANK; import static com.yunbao.live.bean.LiveChatBean.TYPE_TO_ANCHOR_PRANK_GIFT; +import static com.yunbao.live.bean.LiveChatBean.TYPE_TO_TASK_INLET; +import static com.yunbao.live.bean.LiveChatBean.TYPE_TO_TASK_INLET1; import static com.yunbao.live.bean.LiveChatBean.TYPE_TO_USER_MSG; import static com.yunbao.live.bean.LiveChatBean.WISH_LIST_PROGRESS; import static com.yunbao.live.bean.LiveChatBean.XYD_COMPLETE; @@ -564,7 +566,19 @@ public class LiveChatAdapter extends RecyclerView.Adapter { stringBuffer.append("【" + bean.getContent() + "】"); mTextView.setText(Html.fromHtml(stringBuffer.toString())); new LoadDian9TuUtil().loadDian9TuAssets(mContext, mBg, 1); - } else { + } else if(bean.getType() == TYPE_TO_TASK_INLET){ + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append("" + (WordUtil.isNewZh() ? "發送彈幕與主播進行互動吧!完成弹幕互动和点赞任務,还可以领取超多新人豪華禮物哦" : "Send bullet screens to interact with the anchor! Complete the bullet screen interaction and like tasks, and you can also receive many new luxury gifts!") + ""); + stringBuffer.append("," + (WordUtil.isNewZh() ? "活動入口" : "Event Entrance") + ""); + mTextView.setText(Html.fromHtml(stringBuffer.toString())); + new LoadDian9TuUtil().loadDian9TuAssets(mContext, mBg, 1); + }else if(bean.getType() == TYPE_TO_TASK_INLET1){ + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append("" + (WordUtil.isNewZh() ? "您有一份獎勵可領取,點擊此處 前往領取禮物吧!" : "You have a reward to claim, click here to claim your gift!") + ""); + stringBuffer.append("," + (WordUtil.isNewZh() ? "活動入口" : "Event Entrance") + ""); + mTextView.setText(Html.fromHtml(stringBuffer.toString())); + new LoadDian9TuUtil().loadDian9TuAssets(mContext, mBg, 1); + }else{ /*avatar_gift_svga.setImageDrawable(null); ImgLoader.display2(mContext, bean.getAvatar(), msg_avatar); avatarLayout.setVisibility(View.VISIBLE); diff --git a/live/src/main/java/com/yunbao/live/bean/LiveChatBean.java b/live/src/main/java/com/yunbao/live/bean/LiveChatBean.java index b4c92a519..97819ffdc 100644 --- a/live/src/main/java/com/yunbao/live/bean/LiveChatBean.java +++ b/live/src/main/java/com/yunbao/live/bean/LiveChatBean.java @@ -32,6 +32,8 @@ public class LiveChatBean { public static final int TYPE_TO_USER_MSG = 500;//指定信息 public static final int TYPE_TO_ANCHOR_PRANK = 501;//整蠱-開播提示語 public static final int TYPE_TO_ANCHOR_PRANK_GIFT = 502;//整蠱-禮物 + public static final int TYPE_TO_TASK_INLET =503;//任务入口 + public static final int TYPE_TO_TASK_INLET1 =504;//任务入口 private String id; private String userNiceName; diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java index 67d15e132..631c0f7e9 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java @@ -4,6 +4,7 @@ package com.yunbao.live.dialog; import static com.yunbao.live.views.LiveRoomViewHolder.mLiveUid; import static com.yunbao.live.views.LiveRoomViewHolder.mStream; +import android.app.Dialog; import android.content.DialogInterface; import android.graphics.Color; import android.os.Build; @@ -68,11 +69,17 @@ public class LiveHDDialogFragment extends AbsDialogFragment { private DialogInterface.OnShowListener listener; private TextView htmlError; private boolean isSetHeight = false; + OnDisListener onDisListener; + Dialog dialog; public LiveHDDialogFragment() { } + public void setOnDisListener(OnDisListener onDisListener) { + this.onDisListener = onDisListener; + } + /** * 弹出全屏对话框 * @@ -237,6 +244,15 @@ public class LiveHDDialogFragment extends AbsDialogFragment { }); } } + dialog = getDialog(); + dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + if(onDisListener!=null){ + onDisListener.onDis(); + } + } + }); } @@ -314,6 +330,9 @@ public class LiveHDDialogFragment extends AbsDialogFragment { @Override public void onDestroy() { super.onDestroy(); + if(onDisListener!=null){ + onDisListener.onDis(); + } //结束webview的加载 mWebView.destroy(); } @@ -379,5 +398,10 @@ public class LiveHDDialogFragment extends AbsDialogFragment { } } + + public interface OnDisListener{ + void onDis(); + } + } diff --git a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java index c6f53c34d..5f4a83aab 100644 --- a/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java +++ b/live/src/main/java/com/yunbao/live/event/LiveAudienceEvent.java @@ -502,7 +502,8 @@ public class LiveAudienceEvent extends BaseModel { GuardSpecialEffect(77, "PK排位赛开始"), LIVE_DIALOG_ANCHOR_TIPS(78, "主播公会赛tips"), LIVE_REMOVE_LIVEUID(79, "主播退出多人PK"), - LIVE_AUTHOR_NEW_TASK_PUSH(80, "新人任务完成"); + LIVE_AUTHOR_NEW_TASK_PUSH(80, "新人任务完成"), + LIVE_AUTHOR_GIFT_PUSH(81, "新人领取礼物"); private int type; private String name; diff --git a/live/src/main/java/com/yunbao/live/socket/SocketSwClient.java b/live/src/main/java/com/yunbao/live/socket/SocketSwClient.java index d47b4df78..bf101f505 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketSwClient.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketSwClient.java @@ -802,6 +802,10 @@ public class SocketSwClient { item = map.getJSONObject("ct"); Bus.get().post(new LiveAudienceEvent().setType(LiveAudienceEvent.LiveAudienceType.LIVE_AUTHOR_NEW_TASK_PUSH).setUid(item.getString("uid")).setHrefUrl(item.getString("href"))); break; + case Constants.SOCKET_SEND_NEW_TASK_IM: + item = map.getJSONObject("ct"); + Bus.get().post(new LiveAudienceEvent().setType(LiveAudienceEvent.LiveAudienceType.LIVE_AUTHOR_GIFT_PUSH).setUid(item.getString("uid")).setHrefUrl(item.getString("href"))); + break; } } 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 192ca7e93..86a6f8341 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -7,6 +7,7 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.graphics.Outline; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -70,7 +71,6 @@ import com.opensource.svgaplayer.SVGADrawable; import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; -import com.yunbao.common.activity.WebViewActivity; import com.yunbao.common.bean.PrankProgressBean; import com.yunbao.common.utils.DebugUtils; import com.yunbao.common.utils.L; @@ -479,6 +479,11 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis private TextView new_task_gift_details1; private ImageView close_task_receive_close1; + //提醒用户免费礼物 + private RelativeLayout new_task_send_gift_notify; + private TextView new_task_send_gift_details; + private ImageView close_task_send_gift_close; + public LiveRoomViewHolder setGuardType(int guardType) { this.guardType = guardType; return this; @@ -1044,6 +1049,12 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis new_task_gift_notify.setLayoutParams(params1); } }); + new_task_gift_details.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showH5Dialog(); + } + }); close_task_receive_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -1076,7 +1087,6 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis animator_first_task_details.start(); } - private Handler firstTaskDetailsHandler1 = new Handler(); private Runnable firstTaskDetailsRunnable1 = new Runnable() { @Override @@ -1101,9 +1111,10 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis new_task_gift_details1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - ZhuangBanActivity.forward(mContext, url, false, 1); + showH5Dialog(); } }); + close_task_receive_close1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -1136,6 +1147,119 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis animator_first_task_details1.start(); } + private Handler sendGiftTaskHandler = new Handler(); + private Runnable sendGiftTaskRunnable = new Runnable() { + @Override + public void run() { + if (new_task_send_gift_notify != null) { + animatorSendGiftTask(false); + sendGiftTaskHandler.removeCallbacks(sendGiftTaskRunnable); + } + } + }; + + private ObjectAnimator animator_send_gift_task; + + public void showSendGiftTaskDetailsNotify() { + new_task_send_gift_notify.post(new Runnable() { + @Override + public void run() { + LinearLayout.LayoutParams params1 = (LinearLayout.LayoutParams) new_task_send_gift_notify.getLayoutParams(); + params1.width = mChatRecyclerView.getWidth() - DpUtil.dp2px(72); + new_task_send_gift_notify.setLayoutParams(params1); + } + }); + new_task_send_gift_details.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //跳转到免费礼物 + ((LiveAudienceActivity) mContext).openGiftWindow("", "1"); + animatorSendGiftTask(false); + sendGiftTaskHandler.removeCallbacks(sendGiftTaskRunnable); + } + }); + close_task_send_gift_close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + animatorSendGiftTask(false); + sendGiftTaskHandler.removeCallbacks(sendGiftTaskRunnable); + } + }); + sendGiftTaskHandler.removeCallbacks(sendGiftTaskRunnable); + sendGiftTaskHandler.postDelayed(sendGiftTaskRunnable, 10000); + new_task_send_gift_notify.setVisibility(View.VISIBLE); + mDp500 = DpUtil.dp2px(-300); + animatorSendGiftTask(true); + } + + public void animatorSendGiftTask(boolean isIn) { + if (isIn) { + animator_send_gift_task = ObjectAnimator.ofFloat(new_task_send_gift_notify, "translationX", mDp500, 0); + animator_send_gift_task.setDuration(800); + } else { + animator_send_gift_task = ObjectAnimator.ofFloat(new_task_send_gift_notify, "translationX", 0, mDp500); + animator_send_gift_task.setDuration(800); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + new_task_send_gift_notify.setVisibility(View.GONE); + } + },1000); + } + animator_send_gift_task.setInterpolator(new LinearInterpolator()); + animator_send_gift_task.start(); + } + + public boolean isShowH5Dialog; + + public void showH5Dialog(){ + Bundle bundle = new Bundle(); + bundle.putString("url", CommonAppConfig.HOST+"/h5/activity/pdlNewUes/index.html?1=1"); + LiveHDDialogFragment fragment = new LiveHDDialogFragment(); + fragment.setOnDisListener(new LiveHDDialogFragment.OnDisListener() { + @Override + public void onDis() { + startTaskInletTime(); + } + }); + fragment.setArguments(bundle); + fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment"); + } + + //向chatList发送一条活动入口消息 + public void showSendGiftTaskMsg() { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + LiveChatBean bean = new LiveChatBean(); + bean.setType(LiveChatBean.TYPE_TO_TASK_INLET); + mLiveChatAdapter.insertItem(bean); + } + }, 1000); + if (mLiveRoomHandler != null) { + mLiveRoomHandler.sendEmptyMessageAtTime(LiveRoomHandler.WHAT_TASK_INLET_LIVE, getNextTime(1000*300)); + } + } + + //向chatList发送一条活动入口消息 + public void showSendGiftTaskIMMsg() { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + LiveChatBean bean = new LiveChatBean(); + bean.setType(LiveChatBean.TYPE_TO_TASK_INLET1); + mLiveChatAdapter.insertItem(bean); + } + }, 1000); + } + + + public void startTaskInletTime(){ + if(!isShowH5Dialog){ + firstTaskInletNotify(); + } + isShowH5Dialog = true; + } private View sudGameMin; @@ -2163,6 +2287,10 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis new_task_gift_notify1 = findViewById(R.id.new_task_gift_notify1); new_task_gift_details1 = findViewById(R.id.new_task_gift_details1); close_task_receive_close1 = findViewById(R.id.close_task_receive_close1); + + new_task_send_gift_notify= findViewById(R.id.new_task_send_gift_notify); + new_task_send_gift_details= findViewById(R.id.new_task_send_gift_details); + close_task_send_gift_close= findViewById(R.id.close_task_send_gift_close); } /** @@ -4838,9 +4966,37 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis /** * 首次进入直播间 */ - public void firstLookLiveNotifty() { + public void firstLookLiveNotify() { if (mLiveRoomHandler != null) { - mLiveRoomHandler.sendEmptyMessageAtTime(LiveRoomHandler.WHAT_FIRST_LOOK_LIVE, getNextTime(3000)); + mLiveRoomHandler.sendEmptyMessageAtTime(LiveRoomHandler.WHAT_FIRST_LOOK_LIVE, getNextTime(50000)); + } + } + + /** + * 首次进入直播间 + */ + public void firstLook5MinLiveNotify() { + if (mLiveRoomHandler != null) { + mLiveRoomHandler.sendEmptyMessageAtTime(LiveRoomHandler.WHAT_LOOK_5_MIN_LIVE, getNextTime(1000*5)); + } + } + + /** + * 打開活動彈窗 + */ + public void firstTaskInletNotify() { + if (mLiveRoomHandler != null) { + mLiveRoomHandler.sendEmptyMessageAtTime(LiveRoomHandler.WHAT_TASK_INLET_LIVE, getNextTime(1000*5)); + mLiveRoomHandler.removeMessages(LiveRoomHandler.WHAT_TASK_INLET_LIVE); + } + } + + /** + * 打開活動彈窗观看200秒之后 + */ + public void firstTaskInlet1Notify() { + if (mLiveRoomHandler != null) { + mLiveRoomHandler.sendEmptyMessageAtTime(LiveRoomHandler.WHAT_TASK_INLET_LIVE, getNextTime(1000*200)); } } @@ -5175,6 +5331,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis private static final int WHAT_ANCHOR_LIGHT = 5;//主播飘心 private static final int WHAT_ANCHOR_CHECK_LIVE = 6;//主播checkLive private static final int WHAT_FIRST_LOOK_LIVE = 7;//用户首次进入该直播间计时 + private static final int WHAT_LOOK_5_MIN_LIVE = 8;//用户首次进入该直播间计时 + private static final int WHAT_TASK_INLET_LIVE = 9;//打开活动页 public LiveRoomHandler(LiveRoomViewHolder liveRoomViewHolder) { mLiveRoomViewHolder = new WeakReference<>(liveRoomViewHolder).get(); @@ -5206,6 +5364,12 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis mLiveRoomViewHolder.showTaskDetailsNotify(); } break; + case WHAT_LOOK_5_MIN_LIVE: + mLiveRoomViewHolder.showSendGiftTaskDetailsNotify(); + break; + case WHAT_TASK_INLET_LIVE: + mLiveRoomViewHolder.showSendGiftTaskMsg(); + break; } } } @@ -5268,9 +5432,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis showBanner3(bean1); } } - } - } /** 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 d9747e30f..40332065a 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -15,7 +15,6 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; @@ -28,7 +27,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.GsonUtils; import com.lzf.easyfloat.EasyFloat; -import com.lzf.easyfloat.enums.ShowPattern; import com.lzf.easyfloat.permission.PermissionUtils; import com.lzf.easyfloat.utils.LifecycleUtils; import com.yunbao.common.event.LiveMsgWindowsCloseEvent; @@ -76,7 +74,6 @@ import com.yunbao.common.http.LiveHttpUtil; import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.OpenAdManager; -import com.yunbao.common.utils.AppManager; import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.L; @@ -119,7 +116,6 @@ import com.yunbao.live.socket.SocketSwChatUtil; import com.yunbao.live.socket.SocketSwClient; import com.yunbao.live.socket.SocketSendBean; import com.yunbao.live.utils.LiveImDeletUtil; -import com.yunbao.live.utils.LiveTextRender; import org.greenrobot.eventbus.EventBus; @@ -911,10 +907,15 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe mLiveRoomViewHolder.initPrankProgress(isShowPrank?1:2); mLiveRoomViewHolder.setComAll(data.getEnterRoomInfo().getIsComAll().equals("1")); //检测是否是首次观看该直播间 - /*if(data.getEnterRoomInfo().getIsFirstEntry().equals("1")&&data.getEnterRoomInfo().getIsNewUser().equals("1")&&data.getEnterRoomInfo().getIsattention().equals("0")){ - mLiveRoomViewHolder.firstLookLiveNotifty(); - }*/ - mLiveRoomViewHolder.firstLookLiveNotifty(); + if(data.getEnterRoomInfo().getIsFirstEntry().equals("1")&&data.getEnterRoomInfo().getIsNewUser().equals("1")&&data.getEnterRoomInfo().getIsattention().equals("0")){ + mLiveRoomViewHolder.firstLookLiveNotify(); + } + //判断是否有免费礼物 + if(data.getNewPeopleTask().getTask().getSendgift().equals("0")){ + mLiveRoomViewHolder.firstLook5MinLiveNotify(); + } + //观看200秒之后,推送活动入口im消息 + mLiveRoomViewHolder.firstTaskInlet1Notify(); } @Override @@ -2325,6 +2326,14 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } } + public void setNewTaskIM(String uid) { + if (mLiveRoomViewHolder != null) { + if(CommonAppConfig.getInstance().getUid().equals(uid)){ + mLiveRoomViewHolder.showSendGiftTaskIMMsg(); + } + } + } + /** * 全服喇叭 *