package com.weikou.beibeivideo.util.ad;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.Button;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
|
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.TTNativeExpressAd;
|
import com.huawei.hms.ads.AdListener;
|
import com.huawei.hms.ads.AdParam;
|
import com.huawei.hms.ads.AdSize;
|
import com.huawei.hms.ads.nativead.DetailedCreativeType;
|
import com.huawei.hms.ads.nativead.DislikeAdListener;
|
import com.huawei.hms.ads.nativead.DislikeAdReason;
|
import com.huawei.hms.ads.nativead.MediaView;
|
import com.huawei.hms.ads.nativead.NativeAd;
|
import com.huawei.hms.ads.nativead.NativeAdConfiguration;
|
import com.huawei.hms.ads.nativead.NativeAdLoader;
|
import com.huawei.hms.ads.nativead.NativeView;
|
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.comm.util.AdError;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.util.DimenUtils;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 信息流广告管理
|
*/
|
public class ExpressAdManager {
|
|
|
final static String TAG = "ExpressAdManager";
|
|
AdUtil.AD_TYPE sourceType = AdUtil.AD_TYPE.gdt;
|
|
private TTAdNative mTTAdNative;
|
private Context mContext;
|
|
|
public ExpressAdManager(AdUtil.AD_TYPE adSource, Context context) {
|
sourceType = adSource;
|
this.mContext = context;
|
if (sourceType == AdUtil.AD_TYPE.csj) {
|
TTAdManager ttAdManager = null;
|
try {
|
ttAdManager = TTAdManagerHolder.get();
|
mTTAdNative = ttAdManager.createAdNative(context);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
|
//加载小广告
|
|
/**
|
* 加载广告
|
*
|
* @param widthDP
|
* @param heightDP
|
* @param count
|
* @param adLoadListener
|
*/
|
public void loadAd(int widthDP, int heightDP, String pid, int count, final IAdLoadListener adLoadListener) {
|
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<>();
|
if (adList != null)
|
for (NativeExpressADView adView : adList) {
|
adContainerList.add(new ExpressAdContainer(adView));
|
}
|
adLoadListener.onSuccess(adContainerList);
|
}
|
}, mContext);
|
} else if (sourceType == AdUtil.AD_TYPE.csj) {
|
loadCSJ(pid, widthDP, heightDP, count, new ICSJAdLoadListener() {
|
@Override
|
public void onSuccess(List<TTNativeExpressAd> adList) {
|
List<ExpressAdContainer> adContainerList = new ArrayList<>();
|
if (adList != null) {
|
for (TTNativeExpressAd adView : adList) {
|
adContainerList.add(new ExpressAdContainer(adView));
|
}
|
}
|
adLoadListener.onSuccess(adContainerList);
|
}
|
});
|
} else if (sourceType == AdUtil.AD_TYPE.hw) {
|
loadHW(pid, widthDP, heightDP, count, new IHWAdLoadListener() {
|
|
@Override
|
public void onSuccess(List<NativeAd> adList) {
|
List<ExpressAdContainer> adContainerList = new ArrayList<>();
|
if (adList != null) {
|
for (NativeAd ad : adList) {
|
ExpressAdContainer adContainer = new ExpressAdContainer();
|
adContainer.setHwad(ad);
|
adContainerList.add(adContainer);
|
}
|
}
|
adLoadListener.onSuccess(adContainerList);
|
}
|
});
|
}
|
}
|
|
|
/**
|
* 加载推荐大图广告
|
*
|
* @param adLoadListener
|
*/
|
public void loadRecommendLargeAd(final IAdLoadListener adLoadListener) {
|
//加载大图
|
int deviceWidth = DimenUtils.getScreenWidth(mContext);
|
deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
|
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;
|
} else if (sourceType == AdUtil.AD_TYPE.hw) {
|
pid = HuaWeiAdConstant.HW_AD_NATIVE_RECOMMEND_BIG;
|
}
|
//获取屏幕的宽
|
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;
|
} else if (sourceType == AdUtil.AD_TYPE.hw) {
|
pid = HuaWeiAdConstant.HW_AD_NATIVE_PLAYER_BOTTOM;
|
}
|
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;
|
} else if (sourceType == AdUtil.AD_TYPE.hw) {
|
pid = HuaWeiAdConstant.HW_AD_NATIVE_PLAYER_BOTTOM;
|
}
|
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 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;
|
} else if (sourceType == AdUtil.AD_TYPE.hw) {
|
pid = HuaWeiAdConstant.HW_AD_NATIVE_SEARCH_RESULT;
|
}
|
//获取屏幕的宽
|
int deviceWidth = DimenUtils.getScreenWidth(mContext);
|
deviceWidth = DimenUtils.px2dip(mContext, deviceWidth);
|
int width = (deviceWidth - 20);
|
int height = 75;
|
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.hw) {
|
pid = HuaWeiAdConstant.HW_AD_NATIVE_EXIT_APP;
|
} 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;
|
} else if (sourceType == AdUtil.AD_TYPE.hw) {
|
pid = HuaWeiAdConstant.HW_AD_NATIVE_SEARCH;
|
}
|
int height = (int) (widthDP / 1.78f);
|
|
loadAd(widthDP, height, pid, 1, adLoadListener);
|
}
|
|
|
/**
|
* 加载广点通广告
|
*
|
* @param positionId
|
* @param count
|
* @param adLoadListener
|
* @param context
|
*/
|
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)
|
adLoadListener.onSuccess(list);
|
}
|
|
@Override
|
public void onRenderFail(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onRenderSuccess(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADExposure(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADClicked(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADClosed(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADLeftApplication(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onNoAD(AdError adError) {
|
if (adLoadListener != null)
|
adLoadListener.onSuccess(null);
|
}
|
}); // 传入Activity
|
nativeExpressAD.setVideoOption(new VideoOption.Builder()
|
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
|
.setAutoPlayMuted(true) // 自动播放时为静音
|
.build()); //
|
nativeExpressAD.loadAD(count);
|
}
|
|
/**
|
* 穿山甲广告
|
*
|
* @param codeId
|
* @param width
|
* @param height
|
* @param count
|
* @param adLoadListener
|
*/
|
private void loadCSJ(String codeId, int width, int height, int count, final ICSJAdLoadListener adLoadListener) {
|
count = count > 3 ? 3 : count;
|
AdSlot adSlot = new AdSlot.Builder()
|
.setCodeId(codeId)
|
.setSupportDeepLink(true)
|
.setExpressViewAcceptedSize(width, height)
|
.setAdCount(count) //请求广告数量为1到3条
|
.build();
|
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 onNativeExpressAdLoad(List<TTNativeExpressAd> list) {
|
adLoadListener.onSuccess(list);
|
}
|
});
|
}
|
|
private static NativeView initHWNativeAdView(NativeAd nativeAd, Activity activity) {
|
int createType = nativeAd.getCreativeType();
|
NativeView nativeView = null;
|
if (createType == 2 || createType == 102) {
|
// 大纯图片
|
nativeView = (NativeView) LayoutInflater.from(activity).inflate(R.layout.item_hw_ad_native_big, null);
|
} else if (createType == 3 || createType == 6) {
|
// 大纯图加文字或视频加文字
|
nativeView = (NativeView) LayoutInflater.from(activity).inflate(R.layout.item_hw_ad_native_big, null);
|
} else if (createType == 103 || createType == 106) {
|
// 大纯图加文字或视频加文字, 使用AppDownloadButton模板
|
nativeView = (NativeView) LayoutInflater.from(activity).inflate(R.layout.item_hw_ad_native_big, null);
|
} else if (createType == 7 || createType == 107) {
|
// 小纯图加文字
|
nativeView = (NativeView) LayoutInflater.from(activity).inflate(R.layout.item_hw_ad_native_small_pic, null);
|
} else if (createType == 8 || createType == 108) {
|
// 三个小纯图加文字
|
nativeView = (NativeView) LayoutInflater.from(activity).inflate(R.layout.item_hw_ad_native_3_small_pic, null);
|
} else {
|
// 未定义的创意类型
|
|
}
|
|
if (nativeView == null) {
|
return null;
|
}
|
|
|
// 注册和填充标题素材视图
|
nativeView.setTitleView(nativeView.findViewById(R.id.ad_title));
|
((TextView) nativeView.getTitleView()).setText(nativeAd.getTitle());
|
// 注册和填充多媒体素材视图
|
nativeView.setMediaView((MediaView) nativeView.findViewById(R.id.ad_media));
|
nativeView.getMediaView().setMediaContent(nativeAd.getMediaContent());
|
// 注册和填充其他素材视图
|
nativeView.setAdSourceView(nativeView.findViewById(R.id.ad_source));
|
nativeView.setCallToActionView(nativeView.findViewById(R.id.ad_call_to_action));
|
if (null != nativeAd.getAdSource()) {
|
((TextView) nativeView.getAdSourceView()).setText(nativeAd.getAdSource());
|
}
|
nativeView.getAdSourceView()
|
.setVisibility(null != nativeAd.getAdSource() ? View.VISIBLE : View.INVISIBLE);
|
if (null != nativeAd.getCallToAction()) {
|
((Button) nativeView.getCallToActionView()).setText(nativeAd.getCallToAction());
|
}
|
nativeView.getCallToActionView()
|
.setVisibility(null != nativeAd.getCallToAction() ? View.VISIBLE : View.INVISIBLE);
|
// 注册原生广告对象
|
nativeView.setNativeAd(nativeAd);
|
return nativeView;
|
}
|
|
|
private void loadHW(String adId, int width, int height, int count, final IHWAdLoadListener adLoadListener) {
|
NativeAdLoader.Builder builder = new NativeAdLoader.Builder(mContext, adId);
|
//
|
List<Integer> detailedCreativeTypeList = new ArrayList<>();
|
|
|
NativeAdConfiguration adConfiguration = new NativeAdConfiguration.Builder()
|
.setAdSize(new AdSize(width, height))
|
// 是否要自定义“不再显示该广告”的功能
|
.setRequestCustomDislikeThisAd(true)
|
// 设置原生广告是否返回多张图片素材,如果请求的创意类型是原生三小图,则需要设置此方法
|
.setRequestMultiImages(false)
|
// 设置“为什么看到此广告”图标“i”或者“不再显示此广告”图标“x”的显示位置,如右下角
|
.setChoicesPosition(NativeAdConfiguration.ChoicesPosition.INVISIBLE)
|
.build();
|
builder.setNativeAdOptions(adConfiguration);
|
|
count = count > 3 ? 3 : count;
|
final List<NativeAd> adList = new ArrayList<>();
|
builder.setNativeAdLoadedListener(new NativeAd.NativeAdLoadedListener() {
|
@Override
|
public void onNativeAdLoaded(NativeAd nativeAd) {
|
|
adList.add(nativeAd);
|
}
|
}).setAdListener(new AdListener() {
|
@Override
|
public void onAdLoaded() {
|
super.onAdLoaded();
|
adLoadListener.onSuccess(adList);
|
}
|
|
@Override
|
public void onAdFailed(int i) {
|
super.onAdFailed(i);
|
adList.clear();
|
adLoadListener.onSuccess(adList);
|
}
|
});
|
|
// 添加指定的创意类型:原生大图与原生视频
|
// detailedCreativeTypeList.add(DetailedCreativeType.BIG_IMG);
|
// detailedCreativeTypeList.add(DetailedCreativeType.VIDEO);
|
builder.build().loadAds(new AdParam.Builder().build(), count);
|
}
|
|
|
/**
|
* 渲染模板和填充广告
|
*
|
* @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());
|
} else if (ad.getHwad() != null) {
|
if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getHwView()) {
|
return;
|
}
|
|
|
NativeView nativeView = initHWNativeAdView(ad.getHwad(), activity);
|
ImageView iv_close = nativeView.findViewById(R.id.iv_close);
|
if (iv_close != null) {
|
iv_close.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (adEventListener != null) {
|
adEventListener.closeAd(ad);
|
}
|
}
|
});
|
|
}
|
|
|
ad.setHwView(nativeView);
|
fl_ad.removeAllViews();
|
fl_ad.addView(nativeView);
|
}
|
}
|
|
}
|
|
|
/**
|
* 渲染广告
|
*
|
* @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();
|
} else if (ad.getHwad() != null) {
|
NativeView nativeView = initHWNativeAdView(ad.getHwad(), activity);
|
ImageView iv_close = nativeView.findViewById(R.id.iv_close);
|
if (iv_close != null) {
|
iv_close.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (adEventListener != null) {
|
adEventListener.closeAd(ad);
|
}
|
}
|
});
|
|
}
|
ad.setHwView(nativeView);
|
List<ExpressAdContainer> list = new ArrayList<>();
|
list.add(ad);
|
if (adRenderListener != null)
|
adRenderListener.onRenderSuccess(list);
|
}
|
|
|
}
|
|
/**
|
* 为广告绑定关闭事件
|
*
|
* @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());
|
} else if (ad.getHwView() != null) {
|
if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getHwView()) {
|
return;
|
}
|
if (ad.getHwView().getParent() != null) {
|
((ViewGroup) ad.getHwView().getParent()).removeAllViews();
|
}
|
fl_ad.removeAllViews();
|
fl_ad.addView(ad.getHwView());
|
}
|
}
|
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<TTNativeExpressAd> adList);
|
}
|
|
interface IHWAdLoadListener {
|
public void onSuccess(List<NativeAd> 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();
|
}
|
|
}
|