簡介
為了達到廣告推廣的效果,讓用戶 100 % 看到廣告,有些 app 在進入的時候會提示一個全屏的彈框廣告,例如下面這種:
實現(xiàn)
-
定義布局文件:
主要有三個圖片元素,廣告圖致讥,豎線,關閉?號器赞,按照位置顯示出來就好
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_dialog_ad" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/iv_alert_ad_content" android:layout_width="260dp" android:layout_height="300dp" android:layout_centerInParent="true" android:scaleType="fitXY" android:src="@mipmap/ic_alert_content"/> <ImageView android:id="@+id/iv_alert_ad_line" android:layout_width="0.5dp" android:layout_height="20dp" android:layout_above="@id/iv_alert_ad_content" android:layout_alignRight="@id/iv_alert_ad_content" android:layout_marginRight="20dp" android:scaleType="fitXY" android:src="@mipmap/ic_alert_line"/> <ImageView android:id="@+id/iv_alert_ad_close" android:layout_width="20dp" android:layout_height="20dp" android:layout_above="@id/iv_alert_ad_line" android:layout_alignRight="@id/iv_alert_ad_content" android:layout_marginRight="10dp" android:scaleType="fitXY" android:src="@mipmap/ic_alert_close"/> </RelativeLayout>
-
顯示
顯示的方式是顯示一個全局的 AlertDialog 垢袱,這個里面也是有一些坑的
private void showAlertAdDialg(final AdvertisementResponse.Advertisement advertisement) { final Dialog dialog = new Dialog(this, R.style.fullscreen_dialog); View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_alert_ad, null, false); View ivClose = dialogView.findViewById(R.id.iv_alert_ad_close); ImageView ivOpenAd = (ImageView) dialogView.findViewById(R.id.iv_alert_ad_content); if (!TextUtils.isEmpty(advertisement.getPictureUrl())) { Glide.with(this) .load(advertisement.getPictureUrl()) .into(ivOpenAd); } dialogView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); ivClose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); ivOpenAd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mContext, ComWebActivity.class); intent.putExtra(INTENT_KEY_HTML_TITLE, advertisement.getDetailTitle()); intent.putExtra(INTENT_KEY_HTML_URL, advertisement.getDetailUrl()); MainActivity.this.startActivity(intent); } }); dialog.setContentView(dialogView); dialog.getWindow().setGravity(Gravity.CENTER); dialog.setCanceledOnTouchOutside(true); dialog.setCancelable(true); WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; dialog.getWindow().setAttributes(lp); dialog.show(); }
上面這段方法主要做了幾件事情:
-
創(chuàng)建了一個全屏背景半透明的 Dialog,這個全屏主要是通過樣式和設置 Dialog 的 WindowAttribute實現(xiàn)的
樣式:
<style name="fullscreen_dialog"> <item name="android:windowFullscreen">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item><!--是否浮現(xiàn)在activity之上--> <item name="android:windowIsTranslucent">false</item><!--透明--> <item name="android:windowBackground">@android:color/transparent</item><!--背景半透明--> <item name="android:backgroundDimEnabled">true</item><!--模糊--> </style>
設置為全屏大懈酃瘛:
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; dialog.getWindow().setAttributes(lp);
加載布局请契,加載圖片到 ImageView ,并設置到 Dialog 內(nèi)
顯示 Dialog
-