Banner & MREC Ads
Integrate CloudX banner and MREC ads in Android apps
CloudX-rendered creatives
CloudX-served creatives are rendered by the built-in renderer, which ships inside the core SDK — no separate renderer adapter module is required. The creative type is selected automatically from the bid response, so no publisher integration is needed to render either format. The renderer supports MRAID 3.0 (HTML) and VAST creatives across the ad formats:
| Ad format | HTML (MRAID 3.0) | VAST |
|---|---|---|
| Banner | ✓ | — |
| MREC | ✓ | — |
| Interstitial | ✓ | ✓ |
| Rewarded | ✓ | ✓ |
Banner Ads (320x50)
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)
}
// CloudXAdViewListener callbacks
override fun onAdLoaded(cloudXAd: CloudXAd) {
Log.d("CloudX", "Banner ad loaded from ${cloudXAd.networkName}")
}
override fun onAdLoadFailed(adUnitId: String, cloudXError: CloudXError) {
Log.e("CloudX", "Banner ad failed to load: ${cloudXError.message}")
}
override fun onAdClicked(cloudXAd: CloudXAd) {
Log.d("CloudX", "Banner ad clicked")
}
override fun onAdExpanded(cloudXAd: CloudXAd) {
Log.d("CloudX", "Banner ad expanded")
}
override fun onAdCollapsed(cloudXAd: CloudXAd) {
Log.d("CloudX", "Banner ad collapsed")
}
// CloudXAdRevenueListener callback
override fun onAdRevenuePaid(cloudXAd: CloudXAd) {
Log.d("CloudX", "Banner bid-time revenue: ${cloudXAd.revenue} from ${cloudXAd.networkName}")
}
override fun onDestroy() {
super.onDestroy()
bannerAd.destroy()
}
}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 callbacks
@Override
public void onAdLoaded(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "Banner ad loaded from " + cloudXAd.getNetworkName());
}
@Override
public void onAdLoadFailed(@NonNull String adUnitId, @NonNull CloudXError cloudXError) {
Log.e("CloudX", "Banner ad failed to load: " + cloudXError.getMessage());
}
@Override
public void onAdClicked(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "Banner ad clicked");
}
@Override
public void onAdExpanded(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "Banner ad expanded");
}
@Override
public void onAdCollapsed(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "Banner ad collapsed");
}
// CloudXAdRevenueListener callback
@Override
public void onAdRevenuePaid(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "Banner bid-time revenue: " + cloudXAd.getRevenue() + " from " + cloudXAd.getNetworkName());
}
}Banner ads auto-refresh by default. To control refresh manually:
bannerAd.stopAutoRefresh() // Stop auto-refresh
bannerAd.load() // Manually load a new ad
bannerAd.startAutoRefresh() // Re-enable auto-refreshbannerAd.stopAutoRefresh(); // Stop auto-refresh
bannerAd.load(); // Manually load a new ad
bannerAd.startAutoRefresh(); // Re-enable auto-refreshOptional placement and custom data for tracking:
bannerAd.setPlacement("home_screen")
bannerAd.setCustomData("level:5,coins:100")bannerAd.setPlacement("home_screen");
bannerAd.setCustomData("level:5,coins:100");MREC Ads (300x250)
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)
}
// CloudXAdViewListener callbacks (same as Banner)
override fun onAdLoaded(cloudXAd: CloudXAd) {
Log.d("CloudX", "MREC ad loaded from ${cloudXAd.networkName}")
}
override fun onAdLoadFailed(adUnitId: String, cloudXError: CloudXError) {
Log.e("CloudX", "MREC ad failed to load: ${cloudXError.message}")
}
override fun onAdClicked(cloudXAd: CloudXAd) {
Log.d("CloudX", "MREC ad clicked")
}
override fun onAdExpanded(cloudXAd: CloudXAd) {
Log.d("CloudX", "MREC ad expanded")
}
override fun onAdCollapsed(cloudXAd: CloudXAd) {
Log.d("CloudX", "MREC ad collapsed")
}
// CloudXAdRevenueListener callback
override fun onAdRevenuePaid(cloudXAd: CloudXAd) {
Log.d("CloudX", "MREC bid-time revenue: ${cloudXAd.revenue} from ${cloudXAd.networkName}")
}
override fun onDestroy() {
super.onDestroy()
mrecAd.destroy()
}
}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 callbacks (same as Banner)
@Override
public void onAdLoaded(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "MREC ad loaded from " + cloudXAd.getNetworkName());
}
@Override
public void onAdLoadFailed(@NonNull String adUnitId, @NonNull CloudXError cloudXError) {
Log.e("CloudX", "MREC ad failed to load: " + cloudXError.getMessage());
}
@Override
public void onAdClicked(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "MREC ad clicked");
}
@Override
public void onAdExpanded(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "MREC ad expanded");
}
@Override
public void onAdCollapsed(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "MREC ad collapsed");
}
// CloudXAdRevenueListener callback
@Override
public void onAdRevenuePaid(@NonNull CloudXAd cloudXAd) {
Log.d("CloudX", "MREC bid-time revenue: " + cloudXAd.getRevenue() + " from " + cloudXAd.getNetworkName());
}
}MREC ads also auto-refresh by default. Use the same refresh control methods as Banner ads.