From b2fc802bf35143ed957a86d95e2de49934ea9ea5 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 14 十月 2020 14:09:51 +0800
Subject: [PATCH] 腾讯X5bug修复

---
 BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java |  680 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 645 insertions(+), 35 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java
index 7cd2ef2..c0af154 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java
@@ -1,15 +1,25 @@
 package com.weikou.beibeivideo.util.ad;
 
+import android.app.Activity;
 import android.content.Context;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
 
 import com.bytedance.sdk.openadsdk.AdSlot;
+import com.bytedance.sdk.openadsdk.TTAdDislike;
 import com.bytedance.sdk.openadsdk.TTAdManager;
 import com.bytedance.sdk.openadsdk.TTAdNative;
-import com.bytedance.sdk.openadsdk.TTFeedAd;
+import com.bytedance.sdk.openadsdk.TTNativeExpressAd;
 import com.qq.e.ads.cfg.VideoOption;
 import com.qq.e.ads.nativ.ADSize;
 import com.qq.e.ads.nativ.NativeExpressAD;
 import com.qq.e.ads.nativ.NativeExpressADView;
+import com.qq.e.ads.nativ.express2.AdEventListener;
+import com.qq.e.ads.nativ.express2.NativeExpressAD2;
+import com.qq.e.ads.nativ.express2.NativeExpressADData2;
+import com.qq.e.ads.nativ.express2.VideoOption2;
 import com.qq.e.comm.util.AdError;
 import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
 import com.weikou.beibeivideo.util.BeibeiConstant;
@@ -22,22 +32,23 @@
  * 淇℃伅娴佸箍鍛婄鐞�
  */
 public class ExpressAdManager {
-    public final static int SOURCE_GDT = 1;//骞跨偣閫�
-    public final static int SOURCE_CSJ = 2;//绌垮北鐢�
 
-    int sourceType = SOURCE_GDT;
+
+    final static String TAG = "ExpressAdManager";
+
+    AdUtil.AD_TYPE sourceType = AdUtil.AD_TYPE.gdt;
 
     private TTAdNative mTTAdNative;
     private Context mContext;
 
 
-    public ExpressAdManager(int adSource, Context context) {
+    public ExpressAdManager(AdUtil.AD_TYPE adSource, Context context) {
         sourceType = adSource;
         this.mContext = context;
-        if (sourceType == SOURCE_CSJ) {
+        if (sourceType == AdUtil.AD_TYPE.csj) {
             TTAdManager ttAdManager = TTAdManagerHolder.get();
             mTTAdNative = ttAdManager.createAdNative(context);
-            TTAdManagerHolder.get().requestPermissionIfNecessary(context);
+//            TTAdManagerHolder.get().requestPermissionIfNecessary(context);
         }
     }
 
@@ -53,24 +64,48 @@
      * @param adLoadListener
      */
     public void loadAd(int widthDP, int heightDP, String pid, int count, final IAdLoadListener adLoadListener) {
-        if (sourceType == SOURCE_GDT) {
-            loadGDT(pid, count, new IGDTAdLoadListener() {
+        if (sourceType == AdUtil.AD_TYPE.gdt) {
+            loadGDT(pid, widthDP, heightDP, count, new IGDTAdLoadListener() {
                 @Override
                 public void onSuccess(List<NativeExpressADView> adList) {
                     List<ExpressAdContainer> adContainerList = new ArrayList<>();
-                    for (NativeExpressADView adView : adList) {
-                        adContainerList.add(new ExpressAdContainer(adView));
-                    }
+                    if (adList != null)
+                        for (NativeExpressADView adView : adList) {
+                            adContainerList.add(new ExpressAdContainer(adView));
+                        }
+                    adLoadListener.onSuccess(adContainerList);
+                }
+
+                @Override
+                public void onSuccess2(List<NativeExpressADData2> adList) {
+
+                }
+            }, mContext);
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            loadGDT2(pid, widthDP, heightDP, count, new IGDTAdLoadListener() {
+                @Override
+                public void onSuccess(List<NativeExpressADView> adList) {
+
+                }
+
+                @Override
+                public void onSuccess2(List<NativeExpressADData2> adList) {
+                    List<ExpressAdContainer> adContainerList = new ArrayList<>();
+                    if (adList != null)
+                        for (NativeExpressADData2 ad : adList) {
+                            adContainerList.add(new ExpressAdContainer(ad));
+                        }
                     adLoadListener.onSuccess(adContainerList);
                 }
             }, mContext);
-        } else if (sourceType == SOURCE_CSJ) {
+
+        } else if (sourceType == AdUtil.AD_TYPE.csj) {
             loadCSJ(pid, widthDP, heightDP, count, new ICSJAdLoadListener() {
                 @Override
-                public void onSuccess(List<TTFeedAd> adList) {
+                public void onSuccess(List<TTNativeExpressAd> adList) {
                     List<ExpressAdContainer> adContainerList = new ArrayList<>();
                     if (adList != null) {
-                        for (TTFeedAd adView : adList) {
+                        for (TTNativeExpressAd adView : adList) {
                             adContainerList.add(new ExpressAdContainer(adView));
                         }
                     }
@@ -83,43 +118,201 @@
 
     /**
      * 鍔犺浇鎺ㄨ崘澶у浘骞垮憡
+     *
      * @param adLoadListener
      */
     public void loadRecommendLargeAd(final IAdLoadListener adLoadListener) {
         //鍔犺浇澶у浘
-        String pid = null;
-        if (sourceType == SOURCE_CSJ) {
-            pid = "945375047";
-        } else if (sourceType == SOURCE_GDT) {
-            pid = BeibeiConstant.GDT_RECOMMAND_NATIVE;
-        }
-        //鑾峰彇灞忓箷鐨勫
         int deviceWidth = DimenUtils.getScreenWidth(mContext);
         deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
-        int width = deviceWidth - 20;
-        int height = (int) (width * 0.625);
-        loadAd(width, height, pid, 2, adLoadListener);
+        int width = deviceWidth - 6;
+        int height = (int) (width * 0.8);
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = CSJConstant.RECOMMEND_BIG_IMG_AD;
+            height = (int) (width * 0.56);
+        } else if (sourceType == AdUtil.AD_TYPE.gdt) {
+            pid = BeibeiConstant.GDT_RECOMMAND_NATIVE;
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            pid = GDTConstant.PID_HOME_RECOMMEND_BIG_IMG;
+        }
+        //鑾峰彇灞忓箷鐨勫
+
+
+        loadAd(width, height, pid, 1, adLoadListener);
     }
 
     /**
      * 鍔犺浇鎺ㄨ崘灏忓浘骞垮憡
+     *
      * @param adLoadListener
      */
     public void loadRecommendSmallAd(final IAdLoadListener adLoadListener) {
         //鍔犺浇澶у浘
         String pid = null;
-        if (sourceType == SOURCE_CSJ) {
+        if (sourceType == AdUtil.AD_TYPE.csj) {
             pid = "945375047";
-        } else if (sourceType == SOURCE_GDT) {
+        } else if (sourceType == AdUtil.AD_TYPE.gdt) {
             pid = BeibeiConstant.GDT_RECOMMAND_MIN_NATIVE;
         }
         //鑾峰彇灞忓箷鐨勫
         int deviceWidth = DimenUtils.getScreenWidth(mContext);
         deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
         int width = (deviceWidth - 30) / 2;
-        int height = (int) (width * 0.625);
-        loadAd(640, 320, pid, 1, adLoadListener);
+        int height = (int) (width * 0.85);
+        loadAd(width, height, pid, 1, adLoadListener);
     }
+
+
+    /**
+     * 瑙嗛鎾斁鍣ㄥ簳閮ㄥ皬骞垮憡
+     *
+     * @param adLoadListener
+     */
+    public void loadVideoDetailPlayerBottomAd(final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = "945375047";
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            pid = GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS1;
+        }
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = (deviceWidth - 20);
+        int height = 80;
+        loadAd(width, height, pid, 1, adLoadListener);
+    }
+
+
+    /**
+     * 鐩稿叧鎺ㄨ崘搴曢儴灏忓箍鍛�
+     *
+     * @param adLoadListener
+     */
+    public void loadVideoDetailRelativeVideoBottomAd(final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = "945375047";
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            pid = GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS2;
+        }
+        if (mContext == null)
+            return;
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = (deviceWidth - 20);
+        int height = (int) (width * 0.5625);
+        loadAd(width, height, pid, 1, adLoadListener);
+    }
+
+
+    /**
+     * 鍔犺浇鍒嗙被灏忓浘
+     *
+     * @param adLoadListener
+     */
+    public void loadRecommendCategorySmallAd(final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = "945375047";
+        } else if (sourceType == AdUtil.AD_TYPE.gdt) {
+            pid = BeibeiConstant.GDT_RECOMMEND_CATEGORY_MIN_NATIVE;
+        }
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = (deviceWidth - 30) / 2;
+        int height = (int) (width * 0.85);
+        loadAd(width, height, pid, 1, adLoadListener);
+    }
+
+
+    /**
+     * 鎼滅储缁撴灉椤靛皬鍥�
+     *
+     * @param adLoadListener
+     */
+    public void loadSearchResultSmallAd(int count, final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = "945379581";
+        } else if (sourceType == AdUtil.AD_TYPE.gdt) {
+            pid = BeibeiConstant.GDT_SEARCH_RESULT_MIN_NATIVE;
+        }
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = (deviceWidth - 20);
+        int height = 75;
+        loadAd(width, height, pid, count, adLoadListener);
+    }
+
+
+    /**
+     * 鍔犺浇瑙嗛鍒楄〃灏忓箍鍛�
+     *
+     * @param count
+     * @param columns
+     * @param adLoadListener
+     */
+    public void loadVideoListSmallAd(int count, int columns, final IAdLoadListener adLoadListener) {
+
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = "945406595";
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            if (columns == 3)
+                pid = GDTConstant.PID_2_VIDEO_LIST_SMALL_AD_COLUMN3;
+            else if (columns == 2)
+                pid = GDTConstant.PID_2_VIDEO_LIST_SMALL_AD_COLUMN2;
+        }
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = 0;
+        int height = 0;
+
+        if (columns == 2) {
+            width = (deviceWidth - 30) / 2;
+            height = (int) (width * 0.85);
+        } else if (columns == 3) {
+            width = (deviceWidth - 20 - 9 * 2) / 3;
+            height = (int) (width * 1.6);
+        }
+
+        loadAd(width, height, pid, count, adLoadListener);
+    }
+
+
+    /**
+     * 鍔犺浇APP閫�鍑哄箍鍛�
+     *
+     * @param adLoadListener
+     */
+    public void loadAppExitAd(final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = CSJConstant.APP_EXIT;
+        } else if (sourceType == AdUtil.AD_TYPE.gdt) {
+            pid = BeibeiConstant.GDT_EXIT_DIALOG;
+        }
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = deviceWidth * 3 / 4;
+        int height = (int) (width / 1.78f);
+
+        loadAd(width, height, pid, 1, adLoadListener);
+    }
+
 
     /**
      * 鍔犺浇骞跨偣閫氬箍鍛�
@@ -129,9 +322,10 @@
      * @param adLoadListener
      * @param context
      */
-    private void loadGDT(String positionId, int count, final IGDTAdLoadListener adLoadListener, Context context) {
+    private void loadGDT(String positionId, int widthDP, int heightDP, int count, final IGDTAdLoadListener adLoadListener, Context context) {
         NativeExpressAD nativeExpressAD = new NativeExpressAD(context, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
                 positionId, new NativeExpressAD.NativeExpressADListener() {
+
             @Override
             public void onADLoaded(List<NativeExpressADView> list) {
                 if (adLoadListener != null)
@@ -150,6 +344,7 @@
 
             @Override
             public void onADExposure(NativeExpressADView nativeExpressADView) {
+
             }
 
             @Override
@@ -183,12 +378,48 @@
                     adLoadListener.onSuccess(null);
             }
         }); // 浼犲叆Activity
-        // 娉ㄦ剰锛氬鏋滄偍鍦ㄨ仈鐩熷钩鍙颁笂鏂板缓鍘熺敓妯℃澘骞垮憡浣嶆椂锛岄�夋嫨浜嗘敮鎸佽棰戯紝閭d箞鍙互杩涜涓�у寲璁剧疆锛堝彲閫夛級
         nativeExpressAD.setVideoOption(new VideoOption.Builder()
                 .setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 鐜涓嬪彲浠ヨ嚜鍔ㄦ挱鏀捐棰�
                 .setAutoPlayMuted(true) // 鑷姩鎾斁鏃朵负闈欓煶
                 .build()); //
+        nativeExpressAD.setVideoPlayPolicy(VideoOption.VideoPlayPolicy.AUTO);
         nativeExpressAD.loadAD(count);
+    }
+
+    /**
+     * 2.0鐗堟湰骞跨偣閫氬師鐢�
+     *
+     * @param positionId
+     * @param widthDP
+     * @param heightDP
+     * @param count
+     * @param adLoadListener
+     * @param context
+     */
+    private void loadGDT2(String positionId, int widthDP, int heightDP, int count, final IGDTAdLoadListener adLoadListener, Context context) {
+        NativeExpressAD2 nativeExpressAD2 = new NativeExpressAD2(context, positionId, new NativeExpressAD2.AdLoadListener() {
+            @Override
+            public void onLoadSuccess(List<NativeExpressADData2> list) {
+                if (adLoadListener != null)
+                    adLoadListener.onSuccess2(list);
+            }
+
+            @Override
+            public void onNoAD(AdError adError) {
+                if (adLoadListener != null)
+                    adLoadListener.onSuccess2(null);
+            }
+        });
+
+        nativeExpressAD2.setAdSize(widthDP, heightDP);
+        VideoOption2.Builder builder = new VideoOption2.Builder();
+        builder.setAutoPlayPolicy(VideoOption2.AutoPlayPolicy.WIFI) // WIFI 鐜涓嬪彲浠ヨ嚜鍔ㄦ挱鏀捐棰�
+                .setAutoPlayMuted(true) // 鑷姩鎾斁鏃朵负闈欓煶
+                .setDetailPageMuted(false)  // 瑙嗛璇︽儏椤垫挱鏀炬椂涓嶉潤闊�
+                .setMaxVideoDuration(0) // 璁剧疆杩斿洖瑙嗛骞垮憡鐨勬渶澶ц棰戞椂闀匡紙闂尯闂达紝鍙崟鐙缃級锛屽崟浣�:绉掞紝榛樿涓� 0 浠h〃鏃犻檺鍒讹紝鍚堟硶杈撳叆涓猴細5<=maxVideoDuration<=60. 姝よ缃細褰卞搷骞垮憡濉厖锛岃璋ㄦ厧璁剧疆
+                .setMinVideoDuration(0); // 璁剧疆杩斿洖瑙嗛骞垮憡鐨勬渶灏忚棰戞椂闀匡紙闂尯闂达紝鍙崟鐙缃級锛屽崟浣�:绉掞紝榛樿涓� 0 浠h〃鏃犻檺鍒讹紝 姝よ缃細褰卞搷骞垮憡濉厖锛岃璋ㄦ厧璁剧疆
+        nativeExpressAD2.setVideoOption2(builder.build());
+        nativeExpressAD2.loadAd(count);
     }
 
     /**
@@ -205,32 +436,411 @@
         AdSlot adSlot = new AdSlot.Builder()
                 .setCodeId(codeId)
                 .setSupportDeepLink(true)
-                .setImageAcceptedSize(width, height)
+                .setExpressViewAcceptedSize(width, height)
                 .setAdCount(count) //璇锋眰骞垮憡鏁伴噺涓�1鍒�3鏉�
                 .build();
-        mTTAdNative.loadFeedAd(adSlot, new TTAdNative.FeedAdListener() {
+        mTTAdNative.loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() {
             @Override
             public void onError(int i, String s) {
                 adLoadListener.onSuccess(null);
             }
 
             @Override
-            public void onFeedAdLoad(List<TTFeedAd> list) {
+            public void onNativeExpressAdLoad(List<TTNativeExpressAd> list) {
                 adLoadListener.onSuccess(list);
             }
         });
     }
 
+
+    /**
+     * 娓叉煋妯℃澘鍜屽~鍏呭箍鍛�
+     *
+     * @param activity
+     * @param ad
+     * @param fl_ad
+     * @param adEventListener
+     */
+    public static void renderAndFillAd(Activity activity, final ExpressAdContainer ad, final FrameLayout fl_ad, final IAdEventListener adEventListener) {
+
+        if (ad == null) {//骞垮憡涓虹┖
+            fl_ad.setVisibility(View.GONE);
+        } else {
+            fl_ad.setVisibility(View.VISIBLE);
+            if (ad.getGdt() != null) {
+                if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt()) {
+                    return;
+                }
+                fl_ad.removeAllViews();
+                ad.getGdt().render();
+                if (ad.getGdt().getParent() != null) {
+                    ((ViewGroup) ad.getGdt().getParent()).removeAllViews();
+                }
+                fl_ad.addView(ad.getGdt());
+            } else if (ad.getGdt2() != null) {
+                if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt2().getAdView()) {
+                    return;
+                }
+                fl_ad.removeAllViews();
+
+                ad.getGdt2().setAdEventListener(new AdEventListener() {
+                    @Override
+                    public void onClick() {
+
+                    }
+
+                    @Override
+                    public void onExposed() {
+
+                    }
+
+                    @Override
+                    public void onRenderSuccess() {
+                        if (ad.getGdt2().getAdView().getParent() != null) {
+                            ((ViewGroup) ad.getGdt2().getAdView().getParent()).removeAllViews();
+                        }
+                        fl_ad.addView(ad.getGdt2().getAdView());
+                    }
+
+                    @Override
+                    public void onRenderFail() {
+
+                    }
+
+                    @Override
+                    public void onAdClosed() {
+                        if (adEventListener != null) {
+                            adEventListener.closeAd(ad);
+                        }
+                    }
+                });
+                ad.getGdt2().render();
+
+            } else if (ad.getCsj() != null) {
+                if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getCsj().getExpressAdView()) {
+                    return;
+                }
+
+                ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() {
+
+                    @Override
+                    public void onSelected(int i, String s) {
+                        if (adEventListener != null) {
+                            adEventListener.closeAd(ad);
+                        }
+                    }
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+
+                    @Override
+                    public void onRefuse() {
+
+                    }
+                });
+                ad.getCsj().render();
+                if (ad.getCsj().getExpressAdView().getParent() != null) {
+                    ((ViewGroup) ad.getCsj().getExpressAdView().getParent()).removeAllViews();
+                }
+                fl_ad.addView(ad.getCsj().getExpressAdView());
+            }
+        }
+
+    }
+
+
+    /**
+     * 娓叉煋骞垮憡
+     *
+     * @param activity
+     * @param ad
+     * @param adRenderListener
+     * @param adEventListener
+     */
+    public static void renderAd(Activity activity, final ExpressAdContainer ad, final IAdRenderListener adRenderListener, final IAdEventListener adEventListener) {
+
+        if (ad == null) {//骞垮憡涓虹┖
+            return;
+        }
+
+        if (ad.getGdt() != null) {
+            ad.getGdt().render();
+            List<ExpressAdContainer> list = new ArrayList<>();
+            list.add(ad);
+            if (adRenderListener != null)
+                adRenderListener.onRenderSuccess(list);
+        } else if (ad.getGdt2() != null) {
+            ad.getGdt2().setAdEventListener(new AdEventListener() {
+                @Override
+                public void onClick() {
+
+                }
+
+                @Override
+                public void onExposed() {
+
+                }
+
+                @Override
+                public void onRenderSuccess() {
+                    List<ExpressAdContainer> list = new ArrayList<>();
+                    list.add(ad);
+                    if (adRenderListener != null)
+                        adRenderListener.onRenderSuccess(list);
+                }
+
+                @Override
+                public void onRenderFail() {
+                    List<ExpressAdContainer> list = new ArrayList<>();
+                    list.add(ad);
+                    if (adRenderListener != null)
+                        adRenderListener.onRenderFail(list);
+                }
+
+                @Override
+                public void onAdClosed() {
+                    if (adEventListener != null)
+                        adEventListener.closeAd(ad);
+                }
+            });
+            ad.getGdt2().render();
+
+        } else if (ad.getCsj() != null) {
+            ad.getCsj().setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() {
+                @Override
+                public void onAdClicked(View view, int i) {
+
+                }
+
+                @Override
+                public void onAdShow(View view, int i) {
+
+                }
+
+                @Override
+                public void onRenderFail(View view, String s, int i) {
+                    List<ExpressAdContainer> list = new ArrayList<>();
+                    list.add(ad);
+                    if (adRenderListener != null)
+                        adRenderListener.onRenderFail(list);
+                }
+
+                @Override
+                public void onRenderSuccess(View view, float v, float v1) {
+                    Log.d(TAG, "onRenderSuccess");
+                    List<ExpressAdContainer> list = new ArrayList<>();
+                    list.add(ad);
+                    if (adRenderListener != null)
+                        adRenderListener.onRenderSuccess(list);
+                }
+            });
+            if (activity != null)
+                ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() {
+
+                    @Override
+                    public void onSelected(int i, String s) {
+                        if (adEventListener != null) {
+                            adEventListener.closeAd(ad);
+                        }
+                    }
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+
+                    @Override
+                    public void onRefuse() {
+
+                    }
+                });
+            ad.getCsj().render();
+        }
+
+
+    }
+
+    /**
+     * 涓哄箍鍛婄粦瀹氬叧闂簨浠�
+     *
+     * @param activity
+     * @param ad
+     * @param adEventListener
+     */
+    public static void bindCloseListener(Activity activity, final ExpressAdContainer ad, final IAdEventListener adEventListener) {
+
+        if (ad == null) {//骞垮憡涓虹┖
+            return;
+        }
+
+        if (ad.getGdt() != null) {
+            return;
+        } else if (ad.getGdt2() != null) {
+            ad.getGdt2().setAdEventListener(new AdEventListener() {
+                @Override
+                public void onClick() {
+
+                }
+
+                @Override
+                public void onExposed() {
+
+                }
+
+                @Override
+                public void onRenderSuccess() {
+
+                }
+
+                @Override
+                public void onRenderFail() {
+                }
+
+                @Override
+                public void onAdClosed() {
+                    if (adEventListener != null)
+                        adEventListener.closeAd(ad);
+                }
+            });
+
+        } else if (ad.getCsj() != null) {
+            ad.getCsj().setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() {
+                @Override
+                public void onAdClicked(View view, int i) {
+
+                }
+
+                @Override
+                public void onAdShow(View view, int i) {
+
+                }
+
+                @Override
+                public void onRenderFail(View view, String s, int i) {
+
+                }
+
+                @Override
+                public void onRenderSuccess(View view, float v, float v1) {
+
+                }
+            });
+            ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() {
+
+                @Override
+                public void onSelected(int i, String s) {
+                    if (adEventListener != null) {
+                        adEventListener.closeAd(ad);
+                    }
+                }
+
+                @Override
+                public void onCancel() {
+
+                }
+
+                @Override
+                public void onRefuse() {
+
+                }
+            });
+        }
+
+
+    }
+
+
+    /**
+     * 濉厖骞垮憡
+     *
+     * @param ad
+     * @param fl_ad
+     */
+    public static void fillAd(final ExpressAdContainer ad, final FrameLayout fl_ad) {
+
+        fl_ad.post(new Runnable() {
+            @Override
+            public void run() {
+                if (ad == null) {//骞垮憡涓虹┖
+                    fl_ad.setVisibility(View.GONE);
+                } else {
+                    fl_ad.setVisibility(View.VISIBLE);
+                    if (ad.getGdt() != null) {
+                        if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt()) {
+                            return;
+                        }
+                        if (ad.getGdt().getParent() != null) {
+                            ((ViewGroup) ad.getGdt().getParent()).removeAllViews();
+                        }
+                        fl_ad.removeAllViews();
+                        fl_ad.addView(ad.getGdt());
+                    } else if (ad.getGdt2() != null) {
+                        if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt2().getAdView()) {
+                            return;
+                        }
+                        if (ad.getGdt2().getAdView().getParent() != null) {
+                            ((ViewGroup) ad.getGdt2().getAdView().getParent()).removeAllViews();
+                        }
+                        fl_ad.removeAllViews();
+                        fl_ad.addView(ad.getGdt2().getAdView());
+
+                    } else if (ad.getCsj() != null) {
+                        if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getCsj().getExpressAdView()) {
+                            return;
+                        }
+                        if (ad.getCsj().getExpressAdView().getParent() != null) {
+                            ((ViewGroup) ad.getCsj().getExpressAdView().getParent()).removeAllViews();
+                        }
+                        fl_ad.removeAllViews();
+                        fl_ad.addView(ad.getCsj().getExpressAdView());
+                    }
+                }
+                if (fl_ad.getChildCount() > 0) {
+                    fl_ad.getChildAt(0).setVisibility(View.VISIBLE);
+                    fl_ad.getChildAt(0).post(new Runnable() {
+                        @Override
+                        public void run() {
+
+                        }
+                    });
+                }
+            }
+        });
+
+
+    }
+
+
     interface IGDTAdLoadListener {
         public void onSuccess(List<NativeExpressADView> adList);
+
+        public void onSuccess2(List<NativeExpressADData2> adList);
     }
 
     interface ICSJAdLoadListener {
-        public void onSuccess(List<TTFeedAd> adList);
+        public void onSuccess(List<TTNativeExpressAd> adList);
     }
 
 
     public interface IAdLoadListener {
         public void onSuccess(List<ExpressAdContainer> adList);
     }
+
+    public interface IAdRenderListener {
+        public void onRenderSuccess(List<ExpressAdContainer> adList);
+
+        public void onRenderFail(List<ExpressAdContainer> adList);
+    }
+
+    public interface IAdEventListener {
+        public void closeAd(ExpressAdContainer ad);
+    }
+
+
+    public interface IAdShowListener {
+        public void show();
+    }
+
 }

--
Gitblit v1.8.0