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 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 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 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 // 添加全屏特效视图和聊天特效视图 ((ViewGroup) bgEffectView).addView(getDefaultFullEffectView()); ((ViewGroup) bgEffectView).addView(getDefaultChatEffectView()); } public void displayFullEffectView(String gift) { getDefaultFullEffectView().displayEffectView(gift); } public void displayFullEffectView1(List stringList){ getDefaultFullEffectView().displayEffectView1(stringList); } public void displayChatEffectView(String gift) { getDefaultChatEffectView().displayEffectView(gift); } 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 (bgEffectView != null) { bgEffectView = null; } } public void stopPlay() { if (fullEffectView != null) { fullEffectView.stopPlay(); } if (chatEffectView != null) { chatEffectView.stopPlay(); } } 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); } }