fix 修改动画

This commit is contained in:
qyy
2025-09-12 15:12:00 +08:00
parent ea599bb63a
commit fb2fd4c6f6
2 changed files with 149 additions and 188 deletions

View File

@@ -2,14 +2,12 @@ package com.example.moduleroom.activity;
import static android.app.PendingIntent.getActivity;
import static android.view.View.GONE;
import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
import static com.liulishuo.okdownload.OkDownloadProvider.context;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.content.Context;
@@ -22,15 +20,11 @@ import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.StrictMode;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Gravity;
@@ -40,7 +34,6 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewStub;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
@@ -62,7 +55,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.BuildConfig;
import com.blankj.utilcode.util.GsonUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ThreadUtils;
@@ -72,30 +64,25 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.moduleroom.R;
import com.example.moduleroom.contacts.RoomContacts;
import com.example.moduleroom.databinding.ActivityRoomBinding;
import com.example.moduleroom.dialog.CardRelationshipFragment;
import com.example.moduleroom.dialog.CustomCenterDialogFragment;
import com.example.moduleroom.dialog.ExitRoomBottomSheet;
import com.example.moduleroom.dialog.FriendsDialogFragment;
import com.example.moduleroom.dialog.PublishCommentDialogFragment;
import com.example.moduleroom.dialog.RequestDialogFragment;
import com.example.moduleroom.dialog.RoomConcernDialogFragment;
import com.example.moduleroom.dialog.RoomGiftDialogFragment;
import com.example.moduleroom.dialog.RoomMessageDialogFragment;
import com.example.moduleroom.dialog.RoomOnlineDialogFragment;
import com.example.moduleroom.dialog.RoomPkDialogFragment;
import com.example.moduleroom.dialog.RoomSettingFragment;
import com.example.moduleroom.dialog.SoundEffectsDialogFragment;
import com.example.moduleroom.fragment.FriendshipRoomFragment;
import com.example.moduleroom.fragment.PublicScreenEaseChatFragment;
import com.example.moduleroom.fragment.RoomAuctionFragment;
import com.example.moduleroom.fragment.RoomCabinFragment;
import com.example.moduleroom.fragment.RoomChartsFragment;
import com.example.moduleroom.fragment.RoomKtvFragment;
import com.example.moduleroom.fragment.RoomNoticeDialogFragment;
import com.example.moduleroom.fragment.SingSongFragment;
import com.petterp.floatingx.assist.helper.FxScopeHelper;
import com.petterp.floatingx.listener.control.IFxControl;
import com.tencent.imsdk.v2.V2TIMValueCallback;
import com.tencent.qgame.animplayer.AnimConfig;
import com.tencent.qgame.animplayer.inter.IAnimListener;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.GiftAvatarBean;
import com.xscm.moduleutil.bean.GiftBean;
@@ -106,11 +93,9 @@ import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.UserOnlineStatusBean;
import com.xscm.moduleutil.bean.room.FriendInfo;
import com.xscm.moduleutil.bean.room.FriendUserBean;
import com.xscm.moduleutil.bean.room.RoomApplyListBean;
import com.xscm.moduleutil.bean.room.RoomAuction;
import com.xscm.moduleutil.bean.room.RoomOnline;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.databinding.RoomDialogMusicWindowOpenBinding;
import com.xscm.moduleutil.dialog.RechargeDialogFragment;
import com.xscm.moduleutil.event.ColoseCardEvent;
import com.xscm.moduleutil.event.EffectEvent;
@@ -157,7 +142,6 @@ import com.xscm.moduleutil.widget.CustomMusicFloatingView;
import com.xscm.moduleutil.widget.SilentCountDownTimer;
import com.xscm.moduleutil.widget.ViewUtils;
import com.xscm.moduleutil.widget.floatingView.Floa;
import com.tencent.imsdk.v2.V2TIMCallback;
import com.tencent.imsdk.v2.V2TIMManager;
import org.greenrobot.eventbus.EventBus;
@@ -174,11 +158,11 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import io.agora.musiccontentcenter.Music;
import io.reactivex.disposables.Disposable;
import lombok.Synchronized;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
@@ -458,7 +442,35 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
isSave = false;
sDestroied = false;
isMinimized = false;
// ThreadUtils.executeBySingleAtFixRate(new ThreadUtils.Task<String>() {
//
// @Override
// public String doInBackground() throws Throwable {
// LogUtils.e("@@@@" + "doInBackground"+"playQueue.size()===="+playQueue.size());
// if(!playQueue.isEmpty()){
// return playQueue.poll();
// }
// return "";
// }
//
// @Override
// public void onSuccess(String result) {
// LogUtils.e("@@@@" + "onSuccess"+"playQueue.size()===="+playQueue.size());
// if(!TextUtils.isEmpty(result)){
// mBinding.svgaGift.setSource(result, 2);
// }
// }
//
// @Override
// public void onCancel() {
//
// }
//
// @Override
// public void onFail(Throwable t) {
//
// }
// },2, TimeUnit.SECONDS);
overridePendingTransition(0, 0); // 关闭转场动画
@@ -1094,7 +1106,71 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
}
roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp);
}
private List<GiftBean> playQueue = new ArrayList();
private Queue<String> playQueue = new LinkedList<>();
private static volatile MP4PlaybackCallback sInstance;
public static class MP4PlaybackCallback implements IAnimListener {
private AvatarFrameView avatarFrameView;
private MP4PlaybackCallback() {
// 私有构造函数
}
// 获取单例实例的方法
public static MP4PlaybackCallback getInstance() {
if (sInstance == null) {
synchronized (MP4PlaybackCallback.class) {
if (sInstance == null) {
sInstance = new MP4PlaybackCallback();
}
}
}
return sInstance;
}
// 设置外部引用的方法
public void setAvatarFrameView(AvatarFrameView view) {
this.avatarFrameView = view;
}
@Override
public void onFailed(int i, @Nullable String s) {
LogUtils.e("@@@", "MP4 playback failed: " + s);
if (avatarFrameView != null) {
avatarFrameView.onPlaybackComplete();
}
}
@Override
public boolean onVideoConfigReady(@NonNull AnimConfig animConfig) {
return true;
}
@Override
public void onVideoStart() {
// 播放开始
}
@Override
public void onVideoRender(int i, @Nullable AnimConfig animConfig) {
// 视频渲染中
}
@Override
public void onVideoComplete() {
LogUtils.e("@@@@" + "EventBus onVideoComplete");
if (avatarFrameView != null) {
avatarFrameView.onPlaybackComplete();
}
EventBus.getDefault().post(new GiftAvatarBean());
}
@Override
public void onVideoDestroy() {
// 视频销毁
}
}
private void handleMsgType1005(RoomMessageEvent messageEvent, RoomMessageEvent.T text) {
if (text == null || mRoomInfoResp == null || mRoomInfoResp.getRoom_info() == null) return;
@@ -1102,10 +1178,18 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
GiftBean giftInfo = text.getGiftInfo();
UserInfo toUserInfo = text.getToUserInfo();
if (giftInfo == null || toUserInfo == null) return;
MP4PlaybackCallback mp4PlaybackCallback=MP4PlaybackCallback.getInstance();
mp4PlaybackCallback.setAvatarFrameView(mBinding.svgaGift);
mBinding.svgaGift.setAnimListener(mp4PlaybackCallback);
if (SpUtil.getOpenEffect() == 1) {
// 特效关闭时清空队列并停止播放
mBinding.svgaGift.setSource(giftInfo.getPlay_image(), 2);
playQueue.add(giftInfo.getPlay_image());
LogUtils.e("@@@@" + "handleMsgType1005"+"playQueue.size()===="+playQueue.size());
if(!mBinding.svgaGift.isPlaying()){
LogUtils.e("@@@@" + "handleMsgType1005"+"mBinding.svgaGift.isPlaying()===="+mBinding.svgaGift.isPlaying());
mBinding.svgaGift.setSource(playQueue.poll(), 2);
}
}
@@ -1156,35 +1240,33 @@ public class RoomActivity extends BaseMvpActivity<RoomPresenter, ActivityRoomBin
} else if ("1".equals(labelId)) {
roomFragment.SingSongEvent(messageEvent);
}
} else if ("7".equals(typeId)) {
for (RoomPitBean roomPitBean : pitList) {
if (roomPitBean.getUser_id().equals(toUserInfo.getUser_id() + "")) {
roomPitBean.setCharm(toUserInfo.getCharm());
try {
pitList.set(Integer.parseInt(roomPitBean.getPit_number()) - 1, roomPitBean);
} catch (NumberFormatException e) {
// Handle exception
}
}
}
roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp);
}
else if ("7".equals(typeId)) {
// for (RoomPitBean roomPitBean : pitList) {
// if (roomPitBean.getUser_id().equals(toUserInfo.getUser_id() + "")) {
// roomPitBean.setCharm(toUserInfo.getCharm());
// try {
// pitList.set(Integer.parseInt(roomPitBean.getPit_number()) - 1, roomPitBean);
// } catch (NumberFormatException e) {
// // Handle exception
// }
// }
// }
// roomFragment.updateSeatViewExchangedWithPitArray(mRoomInfoResp);
}
}
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void handleGiftAvatarBean(GiftAvatarBean giftAvatarBean) {
// LogUtils.e("@@@@" + "EventBus2222222"+"playQueue.size()===="+playQueue.size());
//
// for (GiftBean giftBean : playQueue) {
// if(!giftBean.is_paly()){
// mBinding.svgaGift.setSource(giftBean.getPlay_image(), 2);
// giftBean.set_paly( true);
// return;
// }
// }
//
// }
@Subscribe(threadMode = ThreadMode.MAIN)
public void handleGiftAvatarBean(GiftAvatarBean giftAvatarBean) {
LogUtils.e("@@@@" + "EventBus2222222"+"playQueue.size()===="+playQueue.size());
if(!playQueue.isEmpty()){
String payUrl=playQueue.poll();
if(!mBinding.svgaGift.isPlaying()){
mBinding.svgaGift.setSource(payUrl, 2);
}
}
}
private void handleMsgType1014(RoomMessageEvent messageEvent, RoomMessageEvent.T text) {
if (text == null) return;