From 2eec3de87b6b616a69a46c1f97c2397159031d2f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 21 十一月 2023 18:01:43 +0800
Subject: [PATCH] 广告升级/bug修复

---
 BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java |  564 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 516 insertions(+), 48 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..498dfd7 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java
@@ -1,11 +1,18 @@
 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.TTAdConstant;
+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;
@@ -22,22 +29,27 @@
  * 淇℃伅娴佸箍鍛婄鐞�
  */
 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) {
-            TTAdManager ttAdManager = TTAdManagerHolder.get();
-            mTTAdNative = ttAdManager.createAdNative(context);
-            TTAdManagerHolder.get().requestPermissionIfNecessary(context);
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            TTAdManager ttAdManager = null;
+            try {
+                ttAdManager = TTAdManagerHolder.get();
+                mTTAdNative = ttAdManager.createAdNative(context);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
     }
 
@@ -53,24 +65,25 @@
      * @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||sourceType == AdUtil.AD_TYPE.gdt2) {
+            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);
                 }
             }, 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 +96,223 @@
 
     /**
      * 鍔犺浇鎺ㄨ崘澶у浘骞垮憡
+     *
      * @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 - 9 * 2;
+        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.78);
+        } 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) {
+        Log.i(TAG, "loadVideoDetailPlayerBottomAd");
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = CSJConstant.VIDEO_DETAIL_PLAYER_BOTTOM;
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            pid = GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS1;
+        }
+        if (mContext == null)
+            return;
+        //鑾峰彇灞忓箷鐨勫
+        int deviceWidth = DimenUtils.getScreenWidth(mContext);
+        deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
+        int width = (deviceWidth - 20);
+        int height = 100;
+        loadAd(width, height, pid, 1, adLoadListener);
+    }
+
+
+    /**
+     * 鐩稿叧鎺ㄨ崘搴曢儴灏忓箍鍛�
+     *
+     * @param adLoadListener
+     */
+    public void loadVideoDetailRelativeVideoBottomAd(final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = CSJConstant.VIDEO_DETAIL_GUESSLIKE_TOP;
+        } 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.gdt2) {
+            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 {
+            pid = GDTConstant.PID_2_EXIT;
+        }
+        //鑾峰彇灞忓箷鐨勫
+        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);
+    }
+
+
+    /**
+     * 鍔犺浇瑙嗛鎼滅储骞垮憡
+     *
+     * @param adLoadListener
+     */
+    public void loadSearchAd(int widthDP, final IAdLoadListener adLoadListener) {
+        //鍔犺浇澶у浘
+        String pid = null;
+        if (sourceType == AdUtil.AD_TYPE.csj) {
+            pid = CSJConstant.VIDEO_SEARCH;
+        } else if (sourceType == AdUtil.AD_TYPE.gdt2) {
+            pid = BeibeiConstant.GDT_SEARCH_NATIVE;
+        }
+        int height = (int) (widthDP / 1.78f);
+
+        loadAd(widthDP, height, pid, 1, adLoadListener);
+    }
+
 
     /**
      * 鍔犺浇骞跨偣閫氬箍鍛�
@@ -129,9 +322,12 @@
      * @param adLoadListener
      * @param context
      */
-    private void loadGDT(String positionId, int count, final IGDTAdLoadListener adLoadListener, Context context) {
-        NativeExpressAD nativeExpressAD = new NativeExpressAD(context, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
+    private void loadGDT(String positionId, int widthDP, int heightDP, int count, final IGDTAdLoadListener adLoadListener, Context context) {
+
+
+        NativeExpressAD nativeExpressAD = new NativeExpressAD(context, new ADSize(widthDP, ADSize.AUTO_HEIGHT),
                 positionId, new NativeExpressAD.NativeExpressADListener() {
+
             @Override
             public void onADLoaded(List<NativeExpressADView> list) {
                 if (adLoadListener != null)
@@ -150,6 +346,7 @@
 
             @Override
             public void onADExposure(NativeExpressADView nativeExpressADView) {
+
             }
 
             @Override
@@ -168,22 +365,11 @@
             }
 
             @Override
-            public void onADOpenOverlay(NativeExpressADView nativeExpressADView) {
-
-            }
-
-            @Override
-            public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
-
-            }
-
-            @Override
             public void onNoAD(AdError adError) {
                 if (adLoadListener != null)
                     adLoadListener.onSuccess(null);
             }
         }); // 浼犲叆Activity
-        // 娉ㄦ剰锛氬鏋滄偍鍦ㄨ仈鐩熷钩鍙颁笂鏂板缓鍘熺敓妯℃澘骞垮憡浣嶆椂锛岄�夋嫨浜嗘敮鎸佽棰戯紝閭d箞鍙互杩涜涓�у寲璁剧疆锛堝彲閫夛級
         nativeExpressAD.setVideoOption(new VideoOption.Builder()
                 .setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 鐜涓嬪彲浠ヨ嚜鍔ㄦ挱鏀捐棰�
                 .setAutoPlayMuted(true) // 鑷姩鎾斁鏃朵负闈欓煶
@@ -205,32 +391,314 @@
         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() {
+        if (mTTAdNative == null) {
+            if (adLoadListener != null)
+                adLoadListener.onSuccess(null);
+            return;
+        }
+        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.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 onShow() {
+
+                    }
+
+                    @Override
+                    public void onSelected(int i, String s, boolean b) {
+                        if (adEventListener != null) {
+                            adEventListener.closeAd(ad);
+                        }
+                    }
+
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+
+                });
+                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.getCsj() != null) {
+            Log.i(TAG, "骞垮憡鏇濆厜:csj");
+            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 onShow() {
+
+                    }
+
+                    @Override
+                    public void onSelected(int i, String s, boolean b) {
+                        if (adEventListener != null) {
+                            adEventListener.closeAd(ad);
+                        }
+                    }
+
+
+                    @Override
+                    public void onCancel() {
+
+                    }
+
+
+                });
+            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.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 onShow() {
+
+                }
+
+                @Override
+                public void onSelected(int i, String s, boolean b) {
+                    if (adEventListener != null) {
+                        adEventListener.closeAd(ad);
+                    }
+                }
+
+
+                @Override
+                public void onCancel() {
+
+                }
+
+
+            });
+        }
+
+
+    }
+
+
+    /**
+     * 濉厖骞垮憡
+     *
+     * @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.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);
     }
 
     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