diff --git a/app/src/main/java/com/yizhuan/erban/avroom/widget/GiftV2View.java b/app/src/main/java/com/yizhuan/erban/avroom/widget/GiftV2View.java index d71b0f5ad..bec37bef3 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/widget/GiftV2View.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/widget/GiftV2View.java @@ -322,57 +322,55 @@ public class GiftV2View extends FrameLayout implements GiftEffectView.GiftEffect , 1800); } - handler.postDelayed(() -> drawLuckyGiftAnimation(giftReceiveInfos,totalCoin,targetUsers,giftReceiveType),1808); - - + handler.postDelayed(() -> drawLuckyGiftAnimation(roomInfo,giftReceiveInfos,totalCoin,targetUsers,giftReceiveType),1200); } } } - private void drawLuckyGiftAnimation(List giftReceiveInfos,int totalCoin,List targetUsers,int giftReceiveType){ -// for (int i = 0; i < giftReceiveInfos.size(); i++) { -// GiftReceiveInfo giftReceiveInfo = giftReceiveInfos.get(i); -// SparseArray micViewPoint = AvRoomDataManager.get().mMicPointMap; -// GiftInfo giftInfo = GiftModel.get().findGiftInfoById(giftReceiveInfo.getGiftId()); -// if (giftInfo == null || TextUtils.isEmpty(giftInfo.getGiftUrl())) { -// giftInfo = giftReceiveInfo.getGift(); -// } -// if (giftInfo == null) { -// return; -// } -// // 算出发送者和接受者的位置 -// int senderPosition = AvRoomDataManager.get().getMicPosition(giftReceiveInfo.getUid()); -// int receivePosition = AvRoomDataManager.get().getMicPosition(giftReceiveInfo.getTargetUid()); -// -// // 离开模式给房主送礼 -// if (roomInfo.isLeaveMode() && giftReceiveInfo.getTargetUid() == roomInfo.getUid()) -// receivePosition = -1; -// -// if (micViewPoint == null) { -// //产生空的原因是麦位坐标初始化有500ms延迟 -// LogUtil.print("gift micViewPoint is null"); -// continue; -// } -// -// Point senderPoint = micViewPoint.get(senderPosition); -// Point receivePoint = micViewPoint.get(receivePosition); -// if (receivePoint == null) { //这种情况就是接收者已经不在麦上 -// //礼物送到上面中间的位置 -// receivePoint = new Point(UIUtil.getScreenWidth(context) / 2, -// UIUtil.dip2px(context, 35)); -// } -// giftReceiveInfo.setGift(giftInfo); -// drawGiftView(senderPoint, receivePoint, giftReceiveInfo); -// -// totalCoin += giftInfo.getGoldPrice() * giftReceiveInfo.getGiftNum(); -// -// -// GiftReceiver giftReceiver = new GiftReceiver(); -// giftReceiver.setUid(giftReceiveInfo.getTargetUid()); -// giftReceiver.setAvatar(giftReceiveInfo.getTargetAvatar()); -// giftReceiver.setNick(giftReceiveInfo.getTargetNick()); -// targetUsers.add(giftReceiver); -// } + private void drawLuckyGiftAnimation(RoomInfo roomInfo,List giftReceiveInfos,int totalCoin,List targetUsers,int giftReceiveType){ + for (int i = 0; i < giftReceiveInfos.size(); i++) { + GiftReceiveInfo giftReceiveInfo = giftReceiveInfos.get(i); + SparseArray micViewPoint = AvRoomDataManager.get().mMicPointMap; + GiftInfo giftInfo = GiftModel.get().findGiftInfoById(giftReceiveInfo.getGiftId()); + if (giftInfo == null || TextUtils.isEmpty(giftInfo.getGiftUrl())) { + giftInfo = giftReceiveInfo.getGift(); + } + if (giftInfo == null) { + return; + } + // 算出发送者和接受者的位置 + int senderPosition = AvRoomDataManager.get().getMicPosition(giftReceiveInfo.getUid()); + int receivePosition = AvRoomDataManager.get().getMicPosition(giftReceiveInfo.getTargetUid()); + + // 离开模式给房主送礼 + if (roomInfo.isLeaveMode() && giftReceiveInfo.getTargetUid() == roomInfo.getUid()) + receivePosition = -1; + + if (micViewPoint == null) { + //产生空的原因是麦位坐标初始化有500ms延迟 + LogUtil.print("gift micViewPoint is null"); + continue; + } + + Point senderPoint = micViewPoint.get(senderPosition); + Point receivePoint = micViewPoint.get(receivePosition); + if (receivePoint == null) { //这种情况就是接收者已经不在麦上 + //礼物送到上面中间的位置 + receivePoint = new Point(UIUtil.getScreenWidth(context) / 2, + UIUtil.dip2px(context, 35)); + } + giftReceiveInfo.setGift(giftInfo); + drawGiftView(senderPoint, receivePoint, giftReceiveInfo); + + totalCoin += giftInfo.getGoldPrice() * giftReceiveInfo.getGiftNum(); + + + GiftReceiver giftReceiver = new GiftReceiver(); + giftReceiver.setUid(giftReceiveInfo.getTargetUid()); + giftReceiver.setAvatar(giftReceiveInfo.getTargetAvatar()); + giftReceiver.setNick(giftReceiveInfo.getTargetNick()); + targetUsers.add(giftReceiver); + } GiftReceiveInfo giftReceiveInfo = giftReceiveInfos.get(0); GiftInfo giftInfo = giftReceiveInfo.getGift(); if (totalCoin >= 520 || (giftInfo != null && giftInfo.isHasEffect())) {