Compare commits

..

2 Commits

Author SHA1 Message Date
4e0ea44f21 1、修改交友和轮盘bug和优化 2025-09-16 14:18:59 +08:00
a3255c39fb 修改聊天文字背景 2025-09-16 14:16:15 +08:00
7 changed files with 126 additions and 45 deletions

View File

@@ -855,26 +855,29 @@ public class GiftLotteryDialog extends BaseMvpDialogFragment<GiftLotteryPresente
if (blindReslutBean.getBlind_box_turntable_id() != null) {
blind_box_turntable_id = blindReslutBean.getBlind_box_turntable_id();
}
for (int i = 0; i < blindReslutBean.getReslut_list().size(); i++) {
BlindReslutBean.ReslutList reslutList = blindReslutBean.getReslut_list().get(i);
if (allViewsArray.size()>0) {
for (int i = 0; i < blindReslutBean.getReslut_list().size(); i++) {
BlindReslutBean.ReslutList reslutList = blindReslutBean.getReslut_list().get(i);
for (int j = 0; j < giftLists.size(); j++) {
if (giftLists.get(j).getGift_id().equals(reslutList.getGift_id() + "")) {
targetArrayIndex.add(j);
if (j < giftMaxCount) {
GiftCardView giftCardView = allViewsArray.get(j);
GiftBean giftBean = giftLists.get(j);
giftBean.setCount(reslutList.getCount());
giftCardView.setVisibilitymResultTextView(true);
giftCardView.setSelected(true);
// 不要设置isDrawing=true这会影响动画控制
for (int j = 0; j < giftLists.size(); j++) {
if (giftLists.get(j).getGift_id().equals(reslutList.getGift_id() + "")) {
targetArrayIndex.add(j);
if (j < giftMaxCount) {
GiftCardView giftCardView = allViewsArray.get(j);
GiftBean giftBean = giftLists.get(j);
giftBean.setCount(reslutList.getCount());
giftCardView.setVisibilitymResultTextView(true);
giftCardView.setSelected(true);
// 不要设置isDrawing=true这会影响动画控制
// MvpPre.wallet();
// isDrawing = false;
// MvpPre.giftSend(blind_box_turntable_id);
giftCardView.bindGiftData(giftBean);
giftCardView.bindGiftData(giftBean);
}
}
}
}

View File

@@ -44,7 +44,7 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
private boolean isLoadEffect = false;
private boolean isShow = true;//是否开启特效
private ReentrantLock lock = new ReentrantLock();
private List<GiftBean> giftArray = new ArrayList<>();
private List<String> giftArray = new ArrayList<>();
public ExecutorService queue = Executors.newSingleThreadExecutor();
private Context mContext;
@@ -84,6 +84,8 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
LogUtils.e("onVideoComplete");
post(() -> {
playerMp4View.setVisibility(View.GONE);
// 通知播放完成
notifyPlaybackComplete();
loadStartSVGAPlayer();
});
@@ -114,18 +116,48 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
svgaView.setDidStartAnimation(this);
}
/// 礼物特效进来 gift为礼物实体类
public void displayEffectView(final GiftBean gift) {
public void displayEffectView1(List<String> stringList){
queue.execute(new Runnable() {
@Override
public void run() {
/// 如果play_image不存在return
if (gift == null || gift.getPlay_image().isEmpty()) {
if (stringList == null || stringList.isEmpty()) {
return;
}
/// 锁住list
lock.lock();
try {
/// 添加礼物进list
giftArray.addAll(stringList);
/// 如果没有在加载则开始加载
if (!isLoadEffect) {
/// 更改加载状态标记
isLoadEffect = true;
loadStartSVGAPlayer();
}
} finally {
/// 解锁
lock.unlock();
}
}
});
}
/// 礼物特效进来 gift为礼物实体类
public void displayEffectView(final String gift) {
queue.execute(new Runnable() {
@Override
public void run() {
/// 如果play_image不存在return
if (gift == null || gift.isEmpty()) {
return;
}
/// 将play_image链接转为小写
String playImage = gift.getPlay_image();
String playImage = gift;
String pathExtension = getFileExtension(playImage).toLowerCase();
/// 判定礼物的后缀是否为svga或者mp4如果非这两种 则return
@@ -176,7 +208,7 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
return;
}
GiftBean giftModel = null;
String giftModel = null;
/// list加锁
lock.lock();
@@ -196,12 +228,12 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
lock.unlock();
}
if (isLoadEffect && giftModel != null && !TextUtils.isEmpty(giftModel.getPlay_image())) {
GiftBean finalGiftModel = giftModel;
if (isLoadEffect && giftModel != null && !TextUtils.isEmpty(giftModel)) {
String finalGiftModel = giftModel;
post(new Runnable() {
@Override
public void run() {
String playImage = finalGiftModel.getPlay_image();
String playImage = finalGiftModel;
if (playImage.endsWith("mp4")) {
downloadAndPlay(getContext(), playImage, new DownloadCallback() {
@Override
@@ -233,7 +265,7 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
post(() -> {
playerMp4View.setVisibility(View.GONE);
svgaView.setVisibility(View.VISIBLE);
svgaView.loadSVGAPlayerWith(finalGiftModel.getPlay_image(), false);
svgaView.loadSVGAPlayerWith(finalGiftModel, false);
});
} else {
lock.lock();
@@ -242,7 +274,7 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
} finally {
lock.unlock();
}
loadStartSVGAPlayer();
// 直接播放缓存文件
}
@@ -344,7 +376,8 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
removeSvgaQueueData();
svgaView.stopEffectSvgaPlay();
playerMp4View.stopPlay();
// 清理监听器
clearPlaybackCompleteListeners();
removeView(playerMp4View);
removeView(svgaView);
svgaView = null;
@@ -383,7 +416,43 @@ public class GiftAnimView extends FrameLayout implements GiftSvgaView.OnAnimatio
public void onFinishedDisplay(GiftSvgaView view) {
post(() -> {
svgaView.setVisibility(View.GONE);
// 通知播放完成
notifyPlaybackComplete();
loadStartSVGAPlayer();
});
}
// 在 GiftAnimView 类中添加播放完成监听接口
public interface OnPlaybackCompleteListener {
void onPlaybackComplete();
}
// 在 GiftAnimView 类中添加成员变量
private List<OnPlaybackCompleteListener> playbackCompleteListeners = new ArrayList<>();
// 在 GiftAnimView 类中添加监听器管理方法
public void addOnPlaybackCompleteListener(OnPlaybackCompleteListener listener) {
if (listener != null && !playbackCompleteListeners.contains(listener)) {
playbackCompleteListeners.add(listener);
}
}
public void removeOnPlaybackCompleteListener(OnPlaybackCompleteListener listener) {
if (listener != null) {
playbackCompleteListeners.remove(listener);
}
}
public void clearPlaybackCompleteListeners() {
playbackCompleteListeners.clear();
}
// 触发播放完成回调的方法
private void notifyPlaybackComplete() {
for (OnPlaybackCompleteListener listener : new ArrayList<>(playbackCompleteListeners)) {
if (listener != null) {
listener.onPlaybackComplete();
}
}
}
}

View File

@@ -7,6 +7,7 @@ import android.widget.FrameLayout;
import com.xscm.moduleutil.bean.GiftBean;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
@@ -65,14 +66,20 @@ public class QXGiftPlayerManager {
((ViewGroup) bgEffectView).addView(getDefaultFullEffectView());
((ViewGroup) bgEffectView).addView(getDefaultChatEffectView());
}
public void displayFullEffectView(GiftBean gift) {
public void displayFullEffectView(String gift) {
getDefaultFullEffectView().displayEffectView(gift);
}
public void displayChatEffectView(GiftBean gift) {
public void displayFullEffectView1(List<String> stringList){
getDefaultFullEffectView().displayEffectView1(stringList);
}
public void displayChatEffectView(String gift) {
getDefaultChatEffectView().displayEffectView(gift);
}
public void openOrCloseEffectViewWith(boolean isShow) {
getDefaultFullEffectView().openOrCloseEffectViewWith(isShow);
getDefaultChatEffectView().openOrCloseEffectViewWith(isShow);

View File

@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient android:angle="180" android:endColor="#80FFFFFF" android:startColor="#80FFFFFF" android:type="linear" android:useLevel="true" />
<corners android:radius="8dp" />
</shape>
</item>
</selector>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#80FFFFFF"
android:startColor="#80FFFFFF"
android:type="linear"
android:useLevel="true" />
<corners android:radius="8dp" />
</shape>

View File

@@ -10,7 +10,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="0.8"
android:background="#40000000">
>
<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"

View File

@@ -344,49 +344,49 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
RoomPitBean pitBean = mBinding.wheatView9.pitBean;
if (pitBean.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean.setCharm("");
mBinding.wheatView9.setData(pitBean);
mBinding.wheatView9.setCardiac(pitBean.getCharm(),1f);
return;
}
RoomPitBean pitBean1 = mBinding.wheatView10.pitBean;
if (pitBean1.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean1.setCharm("");
mBinding.wheatView10.setData(pitBean1);
mBinding.wheatView10.setCardiac(pitBean1.getCharm(),1f);
return;
}
RoomPitBean pitBean2 = mBinding.wheatView1.pitBean;
if (pitBean2.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean2.setCharm("");
mBinding.wheatView1.setData(pitBean2);
mBinding.wheatView1.setCardiac(pitBean2.getCharm(),1f);
return;
}
RoomPitBean pitBean3 = mBinding.wheatView2.pitBean;
if (pitBean3.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean3.setCharm("");
mBinding.wheatView2.setData(pitBean3);
mBinding.wheatView2.setCardiac(pitBean3.getCharm(),1f);
return;
}
RoomPitBean pitBean4 = mBinding.wheatView3.pitBean;
if (pitBean4.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean4.setCharm("");
mBinding.wheatView3.setData(pitBean4);
mBinding.wheatView3.setCardiac(pitBean4.getCharm(),1f);
return;
}
RoomPitBean pitBean5 = mBinding.wheatView4.pitBean;
if (pitBean5.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean5.setCharm("");
mBinding.wheatView4.setData(pitBean5);
mBinding.wheatView4.setCardiac(pitBean5.getCharm(),1f);
return;
}
RoomPitBean pitBean6 = mBinding.wheatView5.pitBean;
if (pitBean6.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean6.setCharm("");
mBinding.wheatView5.setData(pitBean6);
mBinding.wheatView5.setCardiac(pitBean6.getCharm(),1f);
return;
}
RoomPitBean pitBean7 = mBinding.wheatView6.pitBean;
if (pitBean7.getUser_id().equals(messageEvent.getText().getUser_id())) {
pitBean7.setCharm("");
mBinding.wheatView6.setData(pitBean7);
mBinding.wheatView6.setCardiac(pitBean7.getCharm(),1f);
return;
}
}
@@ -474,6 +474,7 @@ public class FriendshipRoomFragment extends BaseRoomFragment<FriendshipRoomPrese
RoomFriendshipWheatView object = mWheatViews.get(Integer.parseInt(roomPitBean.getPit_number()) - 1);
if (object != null) {
object.setData(roomPitBean);
break;
} else {
continue;
}

View File

@@ -814,7 +814,6 @@ public class PublicScreenEaseChatFragment extends BaseMvpFragment<PublicScreenEa
easeChatAdapter.addData(info);
scrollToBottomIfNeed();
}
// EventBus.getDefault().post(message);
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).roomInfoEvent(message);
}