package com.demo.app.ui.dialog; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.demo.R; import com.demo.lib.common.util.SystemCommon; import com.demo.lib.common.util.common.DimenUtils; import com.demo.library_ad.AdUtil; import com.demo.library_ad.ExpressAdManager; import com.demo.library_ad.entity.ExpressAdContainer; import java.util.List; /** * 应用退出弹框 */ public class ExitDialog extends Dialog { private static String TAG = "ExitDialog"; 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 OnClickListener positiveButtonClickListener; private OnClickListener negativeButtonClickListener; public Builder(Activity context) { this.context = context; } public Builder setPositiveClickListener( OnClickListener listener) { this.positiveButtonClickListener = listener; return this; } public Builder setNegativeClickListener(OnClickListener listener) { this.negativeButtonClickListener = listener; return this; } //是否展示过 private boolean shown = false; public ExitDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); final ExitDialog dialog = new ExitDialog(context, R.style.Dialog); dialog.setCanceledOnTouchOutside(false); final View layout = inflater.inflate(R.layout.dialog_exit, null); dialog.addContentView(layout, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); TextView tv_positive = layout.findViewById(R.id.tv_positive); TextView tv_negative = layout.findViewById(R.id.tv_negative); // set the confirm button if (positiveButtonClickListener != null) { tv_positive.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { positiveButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } if (negativeButtonClickListener != null) { tv_negative.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { negativeButtonClickListener.onClick(dialog, DialogInterface.BUTTON_NEGATIVE); } }); } dialog.setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { if (!shown) { shown = true; return; } //刷新广告 loadAd(context, layout.findViewById(R.id.fl_ad)); } }); loadAd(context, layout.findViewById(R.id.fl_ad)); 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); return dialog; } private void loadAd(Activity activity, FrameLayout fl_ad) { AdUtil.AD_TYPE adType = AdUtil.getAdType(context, "exitAppAd"); if (adType == null) { return; } int width = (int) ((SystemCommon.getScreenWidth(context) * 3) / 4); width = DimenUtils.px2dip(context, width); int height = (int) (width * 0.56); String pid = (adType == AdUtil.AD_TYPE.csj ? context.getString(R.string.ad_csj_pid_exit) : context.getString(R.string.ad_gdt_pid_exit)); ExpressAdManager.getInstance(context).loadAd(width, height, pid, 1, adType, context, new ExpressAdManager.IAdLoadListener() { @Override public void onSuccess(List adList) { if (adList != null && adList.size() > 0) { ExpressAdContainer adContainer = adList.get(0); ExpressAdManager.renderAndFillAd(activity, adContainer, fl_ad, new ExpressAdManager.IAdEventListener() { @Override public void closeAd(ExpressAdContainer ad) { fl_ad.removeAllViews(); } }); } } }); } } public interface MeasureCallBack { void onMeasure(int height); } }