Адаптивные баннеры позволяют задать ширину объявления, чтобы определить оптимальный размер для каждого устройства. В отличие от фиксированных адаптивных баннеров, встроенные адаптивные баннеры больше по размеру и высоте и не имеют фиксированной высоты. Встроенные адаптивные баннеры имеют переменную высоту. Такие баннеры могут занимать весь экран или иметь максимальную высоту, которую вы зададите.
В этом руководстве рассказывается, как создавать встроенные адаптивные баннеры и задавать их размер.
На изображении ниже показаны адаптивные встроенные баннеры в прокручиваемом контенте.
Подготовка
Прежде чем продолжить, настройте баннеры.
Чтобы посмотреть пример встроенного адаптивного баннера, скачайте следующее приложение:
Как реализовать встроенные адаптивные баннеры
Чтобы реализовать встроенные адаптивные баннеры, задайте размер объявления, создайте запрос объявления и загрузите объявление.
Чтобы задать размер встроенного адаптивного баннера, определите ширину объявления. Вот несколько распространенных подходов:
- Используется вся ширина экрана.
- Ширина родительского макета, содержащего объявление.
- Корректировка ширины с учетом безопасных зон устройства.
При создании объекта размера объявления используйте вычисленную ширину.
В примере ниже задается размер объявления, создается запрос объявления и загружается объявление:
Kotlin
private fun loadAd() {
// Create an inline adaptive ad size. 320 is a placeholder value.
// Replace 320 with your banner container width.
val adSize = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(this, 320)
// Step 1 - Create a BannerAdRequest object with ad unit ID and size.
val adRequest = BannerAdRequest.Builder("AD_UNIT_ID", adSize).build()
// Step 2 - Load the ad.
BannerAd.load(
adRequest,
object : AdLoadCallback<BannerAd> {
override fun onAdLoaded(ad: BannerAd) {
// Assign the loaded ad to the BannerAd object.
bannerAd = ad
// Step 3 - Call BannerAd.getView() to get the View and add it
// to view hierarchy on the UI thread.
activity?.runOnUiThread {
binding.bannerViewContainer.addView(ad.getView(requireActivity()))
}
}
override fun onAdFailedToLoad(loadAdError: LoadAdError) {
bannerAd = null
}
}
)
}
Java
private void loadAd() {
// Create an inline adaptive ad size. 320 is a placeholder value.
// Replace 320 with your banner container width.
AdSize adSize = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(this, 320);
// Step 1 - Create a BannerAdRequest object with ad unit ID and size.
BannerAdRequest adRequest = new BannerAdRequest.Builder("AD_UNIT_ID",
adSize).build();
// Step 2 - Load the ad.
BannerAd.load(
adRequest,
new AdLoadCallback<BannerAd>() {
@Override
public void onAdLoaded(@NonNull BannerAd ad) {
// Assign the loaded ad to the BannerAd object.
bannerAd = ad;
// Step 3 - Call BannerAd.getView() to get the View and add it
// to view hierarchy on the UI thread.
if (getActivity() != null) {
getActivity()
.runOnUiThread(() ->
binding.bannerViewContainer.addView(ad.getView(getActivity())));
}
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
bannerAd = null;
}
});
}
Как задать макет встроенного адаптивного баннера
Чтобы предварительно загрузить встроенный адаптивный баннер для определенной разметки, используйте следующие методы:
AdSize.getPortraitInlineAdaptiveBannerAdSize(Context context, int width)AdSize.getLandscapeInlineAdaptiveBannerAdSize(Context context, int width)
Если ваше приложение поддерживает книжную и альбомную ориентацию и вы хотите предварительно загрузить адаптивный баннер в текущем макете, используйте метод AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(Context context, int width).
Этот метод загружает объявление в текущий макет.
Как ограничить высоту встроенного адаптивного баннера
По умолчанию максимальная высота встроенных адаптивных баннеров, созданных без значения maxHeight, равна высоте устройства. Чтобы ограничить высоту встроенного адаптивного баннера, используйте метод AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight).