admin
2023-11-21 2eec3de87b6b616a69a46c1f97c2397159031d2f
BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java
@@ -3,19 +3,22 @@
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.Toast;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.SystemCommon;
import com.qq.e.ads.cfg.VideoOption;
import com.qq.e.ads.nativ.ADSize;
import com.qq.e.ads.nativ.NativeADDataRef;
import com.qq.e.ads.nativ.NativeExpressAD;
import com.qq.e.ads.nativ.NativeExpressADView;
import com.qq.e.comm.util.AdError;
import com.yeshi.buwanshequ.R;
import com.weikou.beibeivideo.R;
import com.weikou.beibeivideo.entity.ad.AdPositionEnum;
import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.ExpressAdManager;
import com.weikou.beibeivideo.util.ad.ExpressAdManager.IAdEventListener;
import java.util.List;
@@ -34,15 +37,21 @@
        this.setCancelable(false);
    }
    public static class Builder {
        private Activity context;
        private String positiveButtonText;
        private String negativeButtonText;
        private OnClickListener positiveButtonClickListener;
        private OnClickListener negativeButtonClickListener;
        ExpressAdManager expressAdManager;
        public Builder(Activity context) {
            this.context = context;
            AdUtil.AD_TYPE adType = AdUtil.getAdType(context, AdPositionEnum.exitApp);
            if (adType == AdUtil.AD_TYPE.gdt)
                adType = AdUtil.AD_TYPE.gdt2;
            expressAdManager = new ExpressAdManager(adType, context);
        }
@@ -87,6 +96,8 @@
         */
        private FrameLayout fl_advertisement;
        private ExpressAdContainer expressAdContainer;
        public ExitDialog create() {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@@ -94,9 +105,8 @@
            final ExitDialog dialog = new ExitDialog(context, R.style.Dialog);
            View layout = inflater.inflate(R.layout.item_exit, null);
            fl_advertisement = layout.findViewById(R.id.fl_advertisement);
            nativeAd();
            dialog.addContentView(layout, new FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
                    FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
            // set the confirm button
            layout.findViewById(R.id.tv_login)
                    .setOnClickListener(new View.OnClickListener() {
@@ -119,90 +129,61 @@
            params.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT;
            dialog.getWindow().setAttributes(params);
            dialog.setCanceledOnTouchOutside(false);
            dialog.setOnDismissListener(new OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    fl_advertisement.removeAllViews();
                }
            });
            return dialog;
        }
        NativeADDataRef adDataRef;
        private NativeExpressAD nativeExpressAD;
        // 1.加载广告,先设置加载上下文环境和条件
        private void nativeAd() {
            fl_advertisement.removeAllViews();
            nativeExpressAD = new NativeExpressAD(context, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
                    BeibeiConstant.GDT_EXIT_DIALOG, new NativeExpressAD.NativeExpressADListener() {
        private void loadAd(boolean show) {
            //vivo无广告
            if ("vivo".equalsIgnoreCase(ManifestDataUtil.getAppMetaData(context, "UMENG_CHANNEL"))) {
                return;
            }
            expressAdManager.loadAppExitAd(new ExpressAdManager.IAdLoadListener() {
                @Override
                public void onADLoaded(final List<NativeExpressADView> list) {
                    fl_advertisement.post(new Runnable() {
                        @Override
                        public void run() {
                            if (null != list && list.size() > 0) {
                                NativeExpressADView adView = list.get(0);
                                adView.render();
                                FrameLayout parent = (FrameLayout) adView.getParent();
                                if (parent != null) {
                                    parent.removeAllViews();
                public void onSuccess(List<ExpressAdContainer> adList) {
                    if (adList != null && adList.size() > 0) {
                        ExpressAdManager.renderAd(context, adList.get(0), new ExpressAdManager.IAdRenderListener() {
                            @Override
                            public void onRenderSuccess(List<ExpressAdContainer> adList) {
                                expressAdContainer = adList.get(0);
                                if (show) {
                                    ExpressAdManager.renderAndFillAd(context, adList.get(0), fl_advertisement, new IAdEventListener() {
                                        @Override
                                        public void closeAd(ExpressAdContainer ad) {
                                            fl_advertisement.removeAllViews();
                                        }
                                    });
                                }
                                fl_advertisement.addView(adView);
                            }
                        }
                    });
                            @Override
                            public void onRenderFail(List<ExpressAdContainer> adList) {
                            }
                        }, null);
                    }
                }
            });
                @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 onADOpenOverlay(NativeExpressADView nativeExpressADView) {
                }
                @Override
                public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
                }
                @Override
                public void onNoAD(AdError adError) {
                }
            }); // 传入Activity
            // 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选)
            nativeExpressAD.setVideoOption(new VideoOption.Builder()
                    .setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
                    .setAutoPlayMuted(true) // 自动播放时为静音
                    .build()); //
            nativeExpressAD.loadAD(2);
        public void showAd() {
            loadAd(true);
        }
        public void refreshAd() {
            nativeAd();
            loadAd(false);
        }
    }