> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudx.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 横幅和 MREC 广告

> 在 Android 应用中集成 CloudX 横幅和 MREC 广告

## 横幅广告 (320x50)

<CodeGroup>
  ```kotlin Kotlin theme={null}
  class MainActivity : AppCompatActivity(), CloudXAdViewListener, CloudXAdRevenueListener {
      private lateinit var bannerAd: CloudXAdView

      private fun createBannerAd() {
          bannerAd = CloudX.createBanner(this, "your-banner-ad-unit-id")
          bannerAd.listener = this
          bannerAd.revenueListener = this

          val layoutParams = LinearLayout.LayoutParams(
              LinearLayout.LayoutParams.WRAP_CONTENT,
              LinearLayout.LayoutParams.WRAP_CONTENT
          )
          layoutParams.gravity = Gravity.CENTER_HORIZONTAL
          findViewById<LinearLayout>(R.id.banner_container).addView(bannerAd, layoutParams)
      }

      override fun onDestroy() {
          super.onDestroy()
          bannerAd.destroy()
      }

      // CloudXAdViewListener 回调
      override fun onAdLoaded(cloudXAd: CloudXAd) {
          Log.d("CloudX", "横幅广告已加载，来自 ${cloudXAd.networkName}")
      }

      override fun onAdLoadFailed(adUnitId: String, cloudXError: CloudXError) {
          Log.e("CloudX", "横幅广告加载失败: ${cloudXError.message}")
      }

      override fun onAdClicked(cloudXAd: CloudXAd) {
          Log.d("CloudX", "横幅广告被点击")
      }

      override fun onAdExpanded(cloudXAd: CloudXAd) {
          Log.d("CloudX", "横幅广告已展开")
      }

      override fun onAdCollapsed(cloudXAd: CloudXAd) {
          Log.d("CloudX", "横幅广告已折叠")
      }

      // CloudXAdRevenueListener 回调
      override fun onAdRevenuePaid(cloudXAd: CloudXAd) {
          Log.d("CloudX", "横幅竞价时收入: ${cloudXAd.revenue}，来自 ${cloudXAd.networkName}")
      }
  }
  ```

  ```java Java theme={null}
  public class MainActivity extends AppCompatActivity implements CloudXAdViewListener, CloudXAdRevenueListener {
      private CloudXAdView bannerAd;

      private void createBannerAd() {
          bannerAd = CloudX.createBanner(this, "your-banner-ad-unit-id");
          bannerAd.setListener(this);
          bannerAd.setRevenueListener(this);

          LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
              LinearLayout.LayoutParams.WRAP_CONTENT,
              LinearLayout.LayoutParams.WRAP_CONTENT
          );
          layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
          ((LinearLayout) findViewById(R.id.banner_container)).addView(bannerAd, layoutParams);
      }

      @Override
      protected void onDestroy() {
          super.onDestroy();
          if (bannerAd != null) {
              bannerAd.destroy();
          }
      }

      // CloudXAdViewListener 回调
      @Override
      public void onAdLoaded(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "横幅广告已加载，来自 " + cloudXAd.getNetworkName());
      }

      @Override
      public void onAdLoadFailed(@NonNull String adUnitId, @NonNull CloudXError cloudXError) {
          Log.e("CloudX", "横幅广告加载失败: " + cloudXError.getMessage());
      }

      @Override
      public void onAdClicked(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "横幅广告被点击");
      }

      @Override
      public void onAdExpanded(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "横幅广告已展开");
      }

      @Override
      public void onAdCollapsed(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "横幅广告已折叠");
      }

      // CloudXAdRevenueListener 回调
      @Override
      public void onAdRevenuePaid(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "横幅竞价时收入: " + cloudXAd.getRevenue() + "，来自 " + cloudXAd.getNetworkName());
      }
  }
  ```
</CodeGroup>

横幅广告默认自动刷新。手动控制刷新：

<CodeGroup>
  ```kotlin Kotlin theme={null}
  bannerAd.stopAutoRefresh()  // 停止自动刷新
  bannerAd.load()             // 手动加载新广告
  bannerAd.startAutoRefresh() // 重新启用自动刷新
  ```

  ```java Java theme={null}
  bannerAd.stopAutoRefresh();  // 停止自动刷新
  bannerAd.load();             // 手动加载新广告
  bannerAd.startAutoRefresh(); // 重新启用自动刷新
  ```
</CodeGroup>

可选的广告位和自定义数据用于跟踪：

<CodeGroup>
  ```kotlin Kotlin theme={null}
  bannerAd.setPlacement("home_screen")
  bannerAd.setCustomData("level:5,coins:100")
  ```

  ```java Java theme={null}
  bannerAd.setPlacement("home_screen");
  bannerAd.setCustomData("level:5,coins:100");
  ```
</CodeGroup>

## MREC 广告 (300x250)

<CodeGroup>
  ```kotlin Kotlin theme={null}
  class MainActivity : AppCompatActivity(), CloudXAdViewListener, CloudXAdRevenueListener {
      private lateinit var mrecAd: CloudXAdView

      private fun createMrecAd() {
          mrecAd = CloudX.createMREC(this, "your-mrec-ad-unit-id")
          mrecAd.listener = this
          mrecAd.revenueListener = this

          val layoutParams = LinearLayout.LayoutParams(
              LinearLayout.LayoutParams.WRAP_CONTENT,
              LinearLayout.LayoutParams.WRAP_CONTENT
          )
          layoutParams.gravity = Gravity.CENTER_HORIZONTAL
          findViewById<LinearLayout>(R.id.mrec_container).addView(mrecAd, layoutParams)
      }

      override fun onDestroy() {
          super.onDestroy()
          mrecAd.destroy()
      }

      // CloudXAdViewListener 回调（与横幅广告相同）
      override fun onAdLoaded(cloudXAd: CloudXAd) {
          Log.d("CloudX", "MREC 广告已加载，来自 ${cloudXAd.networkName}")
      }

      override fun onAdLoadFailed(adUnitId: String, cloudXError: CloudXError) {
          Log.e("CloudX", "MREC 广告加载失败: ${cloudXError.message}")
      }

      override fun onAdClicked(cloudXAd: CloudXAd) {
          Log.d("CloudX", "MREC 广告被点击")
      }

      override fun onAdExpanded(cloudXAd: CloudXAd) {
          Log.d("CloudX", "MREC 广告已展开")
      }

      override fun onAdCollapsed(cloudXAd: CloudXAd) {
          Log.d("CloudX", "MREC 广告已折叠")
      }

      // CloudXAdRevenueListener 回调
      override fun onAdRevenuePaid(cloudXAd: CloudXAd) {
          Log.d("CloudX", "MREC 竞价时收入: ${cloudXAd.revenue}，来自 ${cloudXAd.networkName}")
      }
  }
  ```

  ```java Java theme={null}
  public class MainActivity extends AppCompatActivity implements CloudXAdViewListener, CloudXAdRevenueListener {
      private CloudXAdView mrecAd;

      private void createMrecAd() {
          mrecAd = CloudX.createMREC(this, "your-mrec-ad-unit-id");
          mrecAd.setListener(this);
          mrecAd.setRevenueListener(this);

          LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
              LinearLayout.LayoutParams.WRAP_CONTENT,
              LinearLayout.LayoutParams.WRAP_CONTENT
          );
          layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
          ((LinearLayout) findViewById(R.id.mrec_container)).addView(mrecAd, layoutParams);
      }

      @Override
      protected void onDestroy() {
          super.onDestroy();
          if (mrecAd != null) {
              mrecAd.destroy();
          }
      }

      // CloudXAdViewListener 回调（与横幅广告相同）
      @Override
      public void onAdLoaded(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "MREC 广告已加载，来自 " + cloudXAd.getNetworkName());
      }

      @Override
      public void onAdLoadFailed(@NonNull String adUnitId, @NonNull CloudXError cloudXError) {
          Log.e("CloudX", "MREC 广告加载失败: " + cloudXError.getMessage());
      }

      @Override
      public void onAdClicked(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "MREC 广告被点击");
      }

      @Override
      public void onAdExpanded(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "MREC 广告已展开");
      }

      @Override
      public void onAdCollapsed(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "MREC 广告已折叠");
      }

      // CloudXAdRevenueListener 回调
      @Override
      public void onAdRevenuePaid(@NonNull CloudXAd cloudXAd) {
          Log.d("CloudX", "MREC 竞价时收入: " + cloudXAd.getRevenue() + "，来自 " + cloudXAd.getNetworkName());
      }
  }
  ```
</CodeGroup>

MREC 广告也默认自动刷新。使用与横幅广告相同的刷新控制方法。
