Встроенные адаптивные баннеры

Адаптивные баннеры позволяют задать ширину объявления, чтобы определить оптимальный размер для каждого устройства. В отличие от фиксированных адаптивных баннеров, встроенные адаптивные баннеры больше по размеру и высоте, а также не имеют фиксированной высоты. Встроенные адаптивные баннеры имеют переменную высоту. Такие баннеры могут занимать весь экран или иметь заданную вами максимальную высоту.

В этом руководстве рассказывается, как создавать адаптивные встроенные баннеры и задавать их размер.

На изображении ниже показаны адаптивные встроенные баннеры в прокручиваемом контенте:

Диаграмма, на которой показаны различия между адаптивными и встроенными адаптивными баннерами

Подготовка

Прежде чем продолжить, убедитесь, что вы настроили баннеры.

Чтобы посмотреть пример встроенного адаптивного баннера, скачайте пример приложения:

Как реализовать встроенные адаптивные баннеры

Чтобы реализовать встроенные адаптивные баннеры, задайте размер объявления, создайте запрос объявления и загрузите объявление.

Чтобы задать размер встроенного адаптивного баннера, определите ширину объявления. Общие подходы включают следующее:

  • Используется вся ширина экрана.
  • Ширина родительского макета, содержащего объявление.
  • Ширина корректируется с учетом безопасных областей устройства.

При создании объекта размера объявления используйте эту рассчитанную ширину.

В примере ниже задается размер объявления, создается запрос объявления и загружается объявление.

Kotlin

private fun loadInlineAdaptiveBannerAd(adView: AdView, activity: Activity) {
  // Create an inline adaptive ad size. 320 is a placeholder value.
  // Replace 320 with your banner container width.
  val bannerWidth = 320
  val adSize = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(activity, bannerWidth)
  val adRequest = BannerAdRequest.Builder(AD_UNIT_ID, adSize).build()

  adView.loadAd(
    adRequest,
    object : AdLoadCallback<BannerAd> {
      override fun onAdLoaded(ad: BannerAd) {
        Log.d(TAG, "Inline adaptive banner ad loaded.")
      }

      override fun onAdFailedToLoad(adError: LoadAdError) {
        Log.d(TAG, "Inline adaptive banner ad failed to load: $adError")
      }
    },
  )
}

Java

private void loadInlineAdaptiveBannerAd(@NonNull AdView adView, @NonNull Activity activity) {
  // Create an inline adaptive ad size. 320 is a placeholder value.
  // Replace 320 with your banner container width.
  int bannerWidth = 320;
  AdSize adSize = AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(activity, bannerWidth);
  BannerAdRequest adRequest = new BannerAdRequest.Builder(AD_UNIT_ID, adSize).build();

  adView.loadAd(
      adRequest,
      new AdLoadCallback<BannerAd>() {
        @Override
        public void onAdLoaded(@NonNull BannerAd bannerAd) {
          Log.d(TAG, "Inline adaptive banner ad loaded.");
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          Log.d(TAG, "Inline adaptive banner ad failed to load: " + adError);
        }
      });
}

Замените AD_UNIT_ID идентификатором своего рекламного блока.

Задайте размер объявления, который не превышает размер экрана устройства. Чтобы определить максимальный размер экрана, используйте метод Resources.getDisplayMetrics. Размеры объекта AdSize указываются в пикселях, не зависящих от плотности экрана (dp). При сравнении преобразуйте размер экрана из пикселей в dp. Подробнее о требованиях к размерам запросов объявлений…

Как настроить макет встроенного адаптивного баннера

Чтобы предварительно загрузить адаптивный встроенный баннер для определенного макета, используйте следующие методы:

Если ваше приложение поддерживает книжную и альбомную ориентацию и вы хотите предварительно загрузить адаптивный баннер в текущий макет, используйте метод AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(Context context, int width). Этот метод загружает объявление в текущий макет.

Ограничение высоты встроенного адаптивного баннера

По умолчанию встроенные адаптивные баннеры, созданные без значения maxHeight, имеют максимальную высоту, равную высоте устройства. Чтобы ограничить высоту встроенного адаптивного баннера, используйте метод AdSize.getInlineAdaptiveBannerAdSize(int width, int maxHeight).