package com.weikou.beibeivideo.util; 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 com.lcjian.library.util.ManifestDataUtil; import com.lcjian.library.util.SystemCommon; import com.lcjian.library.util.common.AndroidManifestUtil; import com.qq.e.ads.nativ.NativeExpressAD; 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; /** * Created by weikou2015 on 2017/2/28. */ public class ExitDialog extends Dialog { public ExitDialog(Context context) { super(context); this.setCancelable(false); } public ExitDialog(Context context, int theme) { super(context, theme); 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, ExpressAdManager.POSITION_EXIT, context); } /** * Set the positive button resource and it's listener * * @param positiveButtonText * @return */ public Builder setPositiveButton(int positiveButtonText, OnClickListener listener) { this.positiveButtonText = (String) context .getText(positiveButtonText); this.positiveButtonClickListener = listener; return this; } public Builder setPositiveButton(String positiveButtonText, OnClickListener listener) { this.positiveButtonText = positiveButtonText; this.positiveButtonClickListener = listener; return this; } public Builder setNegativeButton(int negativeButtonText, OnClickListener listener) { this.negativeButtonText = (String) context .getText(negativeButtonText); this.negativeButtonClickListener = listener; return this; } public Builder setNegativeButton(String negativeButtonText, OnClickListener listener) { this.negativeButtonText = negativeButtonText; this.negativeButtonClickListener = listener; return this; } /** * 广点通广告 */ private FrameLayout fl_advertisement; private ExpressAdContainer expressAdContainer; public ExitDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // instantiate the dialog with the custom Theme 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); dialog.addContentView(layout, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); // set the confirm button layout.findViewById(R.id.tv_login) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); layout.findViewById(R.id.tv_cancle) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dialog.dismiss(); context.finish(); } }); dialog.setContentView(layout); android.view.WindowManager.LayoutParams params = dialog.getWindow() .getAttributes(); params.width = (int) ((SystemCommon.getScreenWidth(context) * 3) / 4); 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; } private NativeExpressAD nativeExpressAD; // 1.加载广告,先设置加载上下文环境和条件 private void loadAd(boolean show) { //vivo无广告 if ("vivo".equalsIgnoreCase(AndroidManifestUtil.getChannel(context))) { return; } expressAdManager.loadAppExitAd(new ExpressAdManager.IAdLoadListener() { @Override public void onSuccess(List adList) { if (adList != null && adList.size() > 0) { ExpressAdManager.renderAd(context, adList.get(0),ExpressAdManager.POSITION_EXIT, new ExpressAdManager.IAdRenderListener() { @Override public void onRenderSuccess(List adList) { expressAdContainer = adList.get(0); if (show) { ExpressAdManager.renderAndFillAd(context, adList.get(0), fl_advertisement, ExpressAdManager.POSITION_EXIT, new IAdEventListener() { @Override public void closeAd(ExpressAdContainer ad) { fl_advertisement.removeAllViews(); } }); } } @Override public void onRenderFail(List adList) { } }, null); } } }); } public void showAd() { loadAd(true); } public void refreshAd() { loadAd(false); } } @Override public void show() { super.show(); } }