package com.xscm.moduleutil.widget; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import com.xscm.moduleutil.bean.GiftBean; import com.xscm.moduleutil.utils.roomview.RoomCPView; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class QXGiftPlayerManager { private static QXGiftPlayerManager instance; private View bgEffectView; private GiftAnimView fullEffectView; private GiftAnimView chatEffectView; private RoomCPView roomCPView; private Context context; private QXGiftPlayerManager(Context context) { this.context = context.getApplicationContext(); } public static synchronized QXGiftPlayerManager getInstance(Context context) { if (instance == null) { instance = new QXGiftPlayerManager(context); } return instance; } public View getDefaultBgEffectView() { if (bgEffectView == null) { initBgEffectView(); } return bgEffectView; } public RoomCPView getRoomCPView(){ if (roomCPView==null){ initRoomCPView(); } return roomCPView; } public GiftAnimView getDefaultFullEffectView() { if (fullEffectView == null) { initFullEffectView(); } return fullEffectView; } public GiftAnimView getDefaultChatEffectView() { if (chatEffectView == null) { initChatEffectView(); } return chatEffectView; } private void initBgEffectView() { bgEffectView = new FrameLayout(context); bgEffectView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT )); bgEffectView.setBackgroundColor(0x00000000); bgEffectView.setClickable(false); // userInteractionEnabled = NO // 添加全屏特效视图、聊天特效视图和CP视图 ((ViewGroup) bgEffectView).addView(getDefaultFullEffectView()); ((ViewGroup) bgEffectView).addView(getDefaultChatEffectView()); ((ViewGroup) bgEffectView).addView(getRoomCPView()); } private void initRoomCPView() { roomCPView=new RoomCPView(context); roomCPView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT )); // 创建专用线程池替代GCD队列 ExecutorService queue = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), Executors.defaultThreadFactory()); roomCPView.setQueue(queue); } public void displayFullEffectView(String gift) { getDefaultFullEffectView().displayEffectView(gift); } public void displayFullEffectView1(List stringList){ getDefaultFullEffectView().displayEffectView1(stringList); } public void displayChatEffectView(String gift) { getDefaultChatEffectView().displayEffectView(gift); } /** * 显示CP动画 * @param room_head1 头像1的URL * @param room_head2 头像2的URL * @param room_cp_name1 名称1 * @param room_cp_name2 名称2 * @param mp4Path MP4动画文件路径 */ public void displayCPView(String room_head1, String room_head2, String room_cp_name1, String room_cp_name2, String mp4Path) { getRoomCPView().displayEffectView(room_head1, room_head2, room_cp_name1, room_cp_name2, mp4Path); } /** * 开启或关闭CP动画 * @param isShow 是否显示 */ public void openOrCloseCPViewWith(boolean isShow) { } /** * 停止CP动画 */ public void stopCPPlay() { } public void openOrCloseEffectViewWith(boolean isShow) { getDefaultFullEffectView().openOrCloseEffectViewWith(isShow); getDefaultChatEffectView().openOrCloseEffectViewWith(isShow); } public void destroyEffectSvga() { if (fullEffectView != null) { fullEffectView.destroyEffectView(); if (bgEffectView != null) { ((ViewGroup) bgEffectView).removeView(fullEffectView); } fullEffectView = null; } if (chatEffectView != null) { chatEffectView.destroyEffectView(); if (bgEffectView != null) { ((ViewGroup) bgEffectView).removeView(chatEffectView); } chatEffectView = null; } if (roomCPView != null) { // 先调用destroyEffectView方法,它会自动从父视图中移除 roomCPView.destroyEffectView(); if (bgEffectView != null) { ((ViewGroup) bgEffectView).removeView(roomCPView); } roomCPView = null; } if (bgEffectView != null) { bgEffectView = null; } } public void stopPlay() { if (fullEffectView != null) { fullEffectView.stopPlay(); } if (chatEffectView != null) { chatEffectView.stopPlay(); } if (roomCPView != null) { } } private void initFullEffectView() { fullEffectView = new GiftAnimView(context); fullEffectView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT )); // 创建专用线程池替代GCD队列 ExecutorService queue = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), Executors.defaultThreadFactory()); fullEffectView.setQueue(queue); } private void initChatEffectView() { chatEffectView = new GiftAnimView(context); chatEffectView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT )); // 创建专用线程池替代GCD队列 ExecutorService queue = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(), Executors.defaultThreadFactory()); chatEffectView.setQueue(queue); } }