---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/easy/integration/android/formats/interstitial.md
  - https://ads.yandex.com/helpcenter/ru/easy/integration/android/formats/interstitial.md
  - https://ads.yandex.com/helpcenter/zh/easy/integration/android/formats/interstitial.md
  - href: zh/easy/integration/android/formats/interstitial.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/zh/llms.txt

# 插播广告

<!-- source: zh/easy/_includes/sdk-guide.md -->
插屏广告是一种全屏广告格式，会在自然停顿处（例如当用户进入游戏下一关卡或完成转化操作时）嵌入到应用内容中。
<!-- endsource: zh/easy/_includes/sdk-guide.md -->

<!-- source: zh/easy/_includes/notes-android-easy-guide.md -->
{% note info %}

[演示项目](https://ads.yandex.com/helpcenter/zh/easy/integration/android/testing.md#demo) 中提供了展示所有格式类型运作原理的示例。

{% endnote %}
<!-- endsource: zh/easy/_includes/notes-android-easy-guide.md -->

#|
||

**实体**

|

**描述**

||
||

`onAdFailedToLoad`

|

如果 `onAdFailedToLoad()` 返回错误，请勿尝试**使用相同方法**再次加载新广告。

||
||

`InterstitialAdEventListener`

|

请勿保存之前显示过的广告的链接。对之前显示的广告调用 `set AddEventListener(null)`。如果不再使用加载器，请为其调用 `setAdLoadListener(null)`。这可以释放资源并防止内存泄漏。

||
||

`adUnitId`

|

使用：

- **Development mode**，用于配合[演示广告单元](https://ads.yandex.com/helpcenter/zh/easy/integration/android/testing.md#blocks) 使用。

- **Production mode**，用于配合 `R-M-XXXXXX-Y` 使用（实际 ID 请在 Yandex Advertising Network 界面查询）。`R-M-XXXXXX-Y` 是您实际广告单元 ID 的模板，将用于接收各种广告创意。

||
|#


## 使用即用型 XML 文件创建插屏广告的示例

{% list tabs %}

- Kotlin

  ```kotlin
  class InterstitialAdActivity : AppCompatActivity(), InterstitialAdEventListener {

      private var interstitialAd: InterstitialAd? = null
      private lateinit var interstitialAdLoader: InterstitialAdLoader
      private lateinit var binding: ActivityInterstitialAdBinding
      private val adUnitId = "demo-interstitial-yandex" // 使用 R-M-XXXXXX-Y 或演示广告单元（请参阅下方说明）
      private val config = AdRequestConfiguration.Builder(adUnitId).build()

      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          binding = ActivityInterstitialAdBinding.inflate(layoutInflater)
          setContentView(binding.root)

          interstitialAdLoader = InterstitialAdLoader(this)
          binding.showBanner.isEnabled = false

          binding.loadBanner.setOnClickListener { loadAd() }
          binding.showBanner.setOnClickListener { showAd() }

          interstitialAdLoader.setAdLoadListener(object : InterstitialAdLoadListener {
              override fun onAdLoaded(ad: InterstitialAd) {
                  interstitialAd = ad
                  binding.showBanner.isEnabled = true
              }

              override fun onAdFailedToLoad(error: AdRequestError) {
                  binding.showBanner.isEnabled = false
              }
          })
      }

      private fun loadAd() {
          binding.showBanner.isEnabled = false
          interstitialAdLoader.loadAd(config)
      }

      private fun showAd() {
          interstitialAd?.apply {
              setAdEventListener(this@InterstitialAdActivity)
              show(this@InterstitialAdActivity)
          } ?: run {
          }
      }

      override fun onDestroy() {
          interstitialAd?.setAdEventListener(null)
          interstitialAd = null
          interstitialAdLoader.setAdLoadListener(null)
          super.onDestroy()
      }

      override fun onAdClicked() {}
      override fun onAdDismissed() {
          interstitialAdLoader.loadAd(config)
      }
      override fun onAdFailedToShow(adError: AdError) {}
      override fun onAdImpression(impressionData: ImpressionData?) {}
      override fun onAdShown() {}
  }
  ```

- Java

  ```java
  public class InterstitialAdActivity extends AppCompatActivity implements InterstitialAdEventListener {

      private InterstitialAd interstitialAd = null;
      private InterstitialAdLoader interstitialAdLoader;
      private ActivityInterstitialAdBinding binding;

      private final String adUnitId = "demo-interstitial-yandex"; // 使用 R-M-XXXXXX-Y 或演示广告单元（请参阅下方说明）
      private final AdRequestConfiguration config = new AdRequestConfiguration.Builder(adUnitId).build();

      @Override
      protected void onCreate(@Nullable Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          binding = ActivityInterstitialAdBinding.inflate(getLayoutInflater());
          setContentView(binding.getRoot());

          interstitialAdLoader = new InterstitialAdLoader(this);
          binding.showBanner.setEnabled(false);

          binding.loadBanner.setOnClickListener(v -> loadAd());
          binding.showBanner.setOnClickListener(v -> showAd());

          interstitialAdLoader.setAdLoadListener(new InterstitialAdLoadListener() {
              @Override
              public void onAdLoaded(@Nullable InterstitialAd ad) {
                  interstitialAd = ad;
                  binding.showBanner.setEnabled(true);
              }

              @Override
              public void onAdFailedToLoad(@Nullable AdRequestError error) {
                  binding.showBanner.setEnabled(false);
              }
          });
      }

      private void loadAd() {
          binding.showBanner.setEnabled(false);
          interstitialAdLoader.loadAd(config);
      }

      private void showAd() {
          if (interstitialAd != null) {
              interstitialAd.setAdEventListener(this);
              interstitialAd.show(this);
          }
      }

      @Override
      protected void onDestroy() {
          if (interstitialAd != null) {
              interstitialAd.setAdEventListener(null);
              interstitialAd = null;
          }
          if (interstitialAdLoader != null) {
              interstitialAdLoader.setAdLoadListener(null);
          }
          super.onDestroy();
      }
      @Override
      public void onAdClicked() {}
      @Override
      public void onAdDismissed() {
          interstitialAdLoader.loadAd(config);
      }
      @Override
      public void onAdFailedToShow(@Nullable AdError adError) {}
      @Override
      public void onAdImpression(@Nullable ImpressionData impressionData) {}
      @Override
      public void onAdShown() {}
  }
  ```

- activity_interstitial_ad.xml

  ```xml
  <androidx.constraintlayout.widget.ConstraintLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:id="@+id/coordinatorLayout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".InterstitialAdActivity">

      <Button
          android:id="@+id/loadBanner"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Load Banner"
          app:layout_constraintLeft_toLeftOf="parent"
          app:layout_constraintRight_toRightOf="parent"
          app:layout_constraintTop_toTopOf="parent"
          app:layout_constraintBottom_toBottomOf="parent" />

      <Button
          android:id="@+id/showBanner"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Show Banner"
          app:layout_constraintTop_toBottomOf="@id/loadBanner"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintEnd_toEndOf="parent"
          android:layout_marginTop="16dp" />

  </androidx.constraintlayout.widget.ConstraintLayout>
  ```

{% endlist %}


## 使用以编程方式生成的活动创建插屏广告的示例

{% list tabs %}

- Kotlin

  ```kotlin
  class InterstitialAdActivity : AppCompatActivity(), InterstitialAdEventListener, InterstitialAdLoadListener {

      private lateinit var interstitialAdLoader: InterstitialAdLoader
      private var interstitialAd: InterstitialAd? = null

      private lateinit var loadButton: Button
      private lateinit var showButton: Button

      private val adUnitId = "demo-interstitial-yandex" // 使用 R-M-XXXXXX-Y 或演示广告单元（请参阅下方说明）
      val config = AdRequestConfiguration.Builder(adUnitId).build()
      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)

          val rootLayout = ConstraintLayout(this).apply {
              layoutParams = LayoutParams(MATCH_PARENT, MATCH_PARENT)
          }

          loadButton = Button(this).apply {
              text = "Load Interstitial"
              id = View.generateViewId()
          }

          showButton = Button(this).apply {
              text = "Show Interstitial"
              id = View.generateViewId()
              isEnabled = false
          }

          rootLayout.addView(loadButton, LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply {
              topToTop = LayoutParams.PARENT_ID
              bottomToBottom = LayoutParams.PARENT_ID
              startToStart = LayoutParams.PARENT_ID
              endToEnd = LayoutParams.PARENT_ID
          })

          rootLayout.addView(showButton, LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply {
              topToBottom = loadButton.id
              startToStart = LayoutParams.PARENT_ID
              endToEnd = LayoutParams.PARENT_ID
              topMargin = 24
          })

          setContentView(rootLayout)
          interstitialAdLoader = InterstitialAdLoader(this)
          loadButton.setOnClickListener { loadAd() }
          showButton.setOnClickListener { showAd() }
          interstitialAdLoader.setAdLoadListener(this@InterstitialAdActivity)
      }

      private fun loadAd() {
          interstitialAd = null
          showButton.isEnabled = false
          interstitialAdLoader.loadAd(config)
      }

      private fun showAd() {
          interstitialAd?.apply {
              setAdEventListener(this@InterstitialAdActivity)
              show(this@InterstitialAdActivity)
          }
      }

      override fun onDestroy() {
          interstitialAd?.setAdEventListener(null)
          interstitialAd = null
          interstitialAdLoader.setAdLoadListener(null)
          super.onDestroy()
      }

      override fun onAdClicked() {}
      override fun onAdDismissed() {
          interstitialAdLoader.loadAd(config)
      }
      override fun onAdFailedToShow(adError: AdError) {}
      override fun onAdImpression(impressionData: ImpressionData?) {}
      override fun onAdShown() {}
      override fun onAdFailedToLoad(error: AdRequestError) {}
      override fun onAdLoaded(interstitialAd: InterstitialAd) {
          this.interstitialAd = interstitialAd
          showButton.isEnabled = true
      }
  }
  ```

- Java

  ```java
  public class InterstitialAdActivity extends AppCompatActivity
          implements InterstitialAdEventListener, InterstitialAdLoadListener {

      private InterstitialAdLoader interstitialAdLoader;
      private InterstitialAd interstitialAd;

      private Button loadButton;
      private Button showButton;

      private final String adUnitId = "demo-interstitial-yandex"; // 使用 R-M-XXXXXX-Y 或演示广告单元（请参阅下方说明）
      private final AdRequestConfiguration config =
              new AdRequestConfiguration.Builder(adUnitId).build();

      @Override
      protected void onCreate(@Nullable Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);

          ConstraintLayout rootLayout = new ConstraintLayout(this);
          rootLayout.setLayoutParams(new LayoutParams(
                  LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

          loadButton = new Button(this);
          loadButton.setText("Load Interstitial");
          loadButton.setId(View.generateViewId());

          showButton = new Button(this);
          showButton.setText("Show Interstitial");
          showButton.setId(View.generateViewId());
          showButton.setEnabled(false);

          LayoutParams loadBtnParams = new LayoutParams(
                  LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
          loadBtnParams.topToTop = LayoutParams.PARENT_ID;
          loadBtnParams.bottomToBottom = LayoutParams.PARENT_ID;
          loadBtnParams.startToStart = LayoutParams.PARENT_ID;
          loadBtnParams.endToEnd = LayoutParams.PARENT_ID;
          rootLayout.addView(loadButton, loadBtnParams);

          LayoutParams showBtnParams = new LayoutParams(
                  LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
          showBtnParams.topToBottom = loadButton.getId();
          showBtnParams.startToStart = LayoutParams.PARENT_ID;
          showBtnParams.endToEnd = LayoutParams.PARENT_ID;
          showBtnParams.topMargin = 24;
          rootLayout.addView(showButton, showBtnParams);

          setContentView(rootLayout);

          interstitialAdLoader = new InterstitialAdLoader(this);
          interstitialAdLoader.setAdLoadListener(this);

          loadButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  loadAd();
              }
          });

          showButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  showAd();
              }
          });
      }

      private void loadAd() {
          interstitialAd = null;
          showButton.setEnabled(false);
          interstitialAdLoader.loadAd(config);
      }

      private void showAd() {
          if (interstitialAd != null) {
              interstitialAd.setAdEventListener(this);
              interstitialAd.show(this);
          }
      }

      @Override
      protected void onDestroy() {
          if (interstitialAd != null) {
              interstitialAd.setAdEventListener(null);
              interstitialAd = null;
          }
          if (interstitialAdLoader != null) {
              interstitialAdLoader.setAdLoadListener(null);
          }
          super.onDestroy();
      }
      @Override
      public void onAdClicked() {}
      @Override
      public void onAdDismissed() {
          // 可选重新加载
          interstitialAdLoader.loadAd(config);
      }
      @Override
      public void onAdFailedToShow(@Nullable AdError adError) {}
      @Override
      public void onAdImpression(@Nullable ImpressionData impressionData) {}
      @Override
      public void onAdShown() {}
      @Override
      public void onAdFailedToLoad(@Nullable AdRequestError error) {}
      @Override
      public void onAdLoaded(InterstitialAd interstitialAd) {
          this.interstitialAd = interstitialAd;
          showButton.setEnabled(true);
      }
  }
  ```

{% endlist %}

## 检查集成

<!-- source: zh/easy/_includes/notes-android-easy-guide.md -->
创建并运行您的项目。您可以通过在 **Logcat** 中搜索 `YandexAds` 关键字来检查集成是否成功：
<!-- endsource: zh/easy/_includes/notes-android-easy-guide.md -->

```
[Integration] Ad type interstitial was integrated successfully
```
