Skip to content

Commit 4255718

Browse files
Mobile Ads Developer Relationscopybara-github
authored andcommitted
Add a wrapper view for AppLovin banner view.
PiperOrigin-RevId: 780662780
1 parent 9226813 commit 4255718

5 files changed

Lines changed: 35 additions & 12 deletions

File tree

ThirdPartyAdapters/applovin/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#### Next version
44
- Removed 300x250 banner size support.
5+
- Fixes banner's height issue.
56

67
#### Version 13.3.1.0
78
- Verified compatibility with AppLovin SDK 13.3.1.

ThirdPartyAdapters/applovin/applovin/src/main/java/com/applovin/mediation/ApplovinAdapter.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import android.text.TextUtils;
2626
import android.util.Log;
2727
import android.view.View;
28+
import android.widget.FrameLayout;
2829
import androidx.annotation.NonNull;
2930
import androidx.annotation.Nullable;
3031
import com.applovin.adview.AppLovinAdView;
@@ -73,6 +74,7 @@ public class ApplovinAdapter extends AppLovinMediationAdapter
7374
private MediationInterstitialListener mediationInterstitialListener;
7475

7576
// Banner objects.
77+
private FrameLayout adViewWrapper;
7678
private AppLovinAdView adView;
7779

7880
// Controlled fields.
@@ -246,6 +248,12 @@ public void requestBannerAd(@NonNull final Context context,
246248
return;
247249
}
248250

251+
FrameLayout.LayoutParams adViewLayoutParams =
252+
new FrameLayout.LayoutParams(
253+
adSize.getWidthInPixels(context), adSize.getHeightInPixels(context));
254+
adViewWrapper = new FrameLayout(context);
255+
adViewWrapper.setLayoutParams(adViewLayoutParams);
256+
249257
AppLovinInitializer.getInstance()
250258
.initialize(
251259
context,
@@ -266,6 +274,7 @@ public void onInitializeSuccess() {
266274
adView.setAdDisplayListener(listener);
267275
adView.setAdClickListener(listener);
268276
adView.setAdViewEventListener(listener);
277+
adViewWrapper.addView(adView);
269278

270279
if (!TextUtils.isEmpty(zoneId)) {
271280
sdk.getAdService().loadNextAdForZoneId(zoneId, listener);
@@ -279,7 +288,7 @@ public void onInitializeSuccess() {
279288
@NonNull
280289
@Override
281290
public View getBannerView() {
282-
return adView;
291+
return adViewWrapper;
283292
}
284293
// endregion
285294

ThirdPartyAdapters/applovin/applovin/src/main/java/com/google/ads/mediation/applovin/AppLovinAdFactory.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
import com.applovin.adview.AppLovinInterstitialAdDialog;
2121
import com.applovin.sdk.AppLovinAdSize;
2222
import com.applovin.sdk.AppLovinSdk;
23+
import com.google.android.gms.ads.AdSize;
2324

2425
/** A factory to create {@link AppLovinAdView} for AppLovin ads. */
2526
public class AppLovinAdFactory {
2627
AppLovinAdViewWrapper createAdView(
27-
AppLovinSdk sdk, AppLovinAdSize appLovinAdSize, Context context) {
28-
return AppLovinAdViewWrapper.newInstance(sdk, appLovinAdSize, context);
28+
AppLovinSdk sdk, AppLovinAdSize appLovinAdSize, AdSize adSize, Context context) {
29+
return AppLovinAdViewWrapper.newInstance(sdk, appLovinAdSize, adSize, context);
2930
}
3031

3132
public AppLovinInterstitialAdDialog createInterstitialAdDialog(AppLovinSdk sdk, Context context) {

ThirdPartyAdapters/applovin/applovin/src/main/java/com/google/ads/mediation/applovin/AppLovinAdViewWrapper.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,40 @@
1515
package com.google.ads.mediation.applovin;
1616

1717
import android.content.Context;
18+
import android.widget.FrameLayout;
1819
import com.applovin.adview.AppLovinAdView;
1920
import com.applovin.adview.AppLovinAdViewEventListener;
2021
import com.applovin.sdk.AppLovinAd;
2122
import com.applovin.sdk.AppLovinAdClickListener;
2223
import com.applovin.sdk.AppLovinAdDisplayListener;
2324
import com.applovin.sdk.AppLovinAdSize;
2425
import com.applovin.sdk.AppLovinSdk;
26+
import com.google.android.gms.ads.AdSize;
2527

2628
/**
27-
* Wrapper class for an instance {@link AppLovinAdView} created by {@link AppLovinAdViewFactory}. It
28-
* is used as a layer between the Adapter's and the AppLovin SDK to facilitate unit testing.
29+
* Wrapper class for an instance {@link AppLovinAdView} created by {@link AppLovinAdFactory}. It is
30+
* used as a layer between the Adapter's and the AppLovin SDK to facilitate unit testing.
2931
*/
3032
class AppLovinAdViewWrapper {
3133

3234
private final AppLovinAdView appLovinAdView;
35+
private final FrameLayout adViewWrapper;
3336

34-
private AppLovinAdViewWrapper(AppLovinSdk sdk, AppLovinAdSize appLovinAdSize, Context context) {
37+
private AppLovinAdViewWrapper(
38+
AppLovinSdk sdk, AppLovinAdSize appLovinAdSize, FrameLayout adViewWrapper, Context context) {
3539
appLovinAdView = new AppLovinAdView(sdk, appLovinAdSize, context);
40+
this.adViewWrapper = adViewWrapper;
41+
this.adViewWrapper.addView(appLovinAdView);
3642
}
3743

3844
public static AppLovinAdViewWrapper newInstance(
39-
AppLovinSdk sdk, AppLovinAdSize appLovinAdSize, Context context) {
40-
return new AppLovinAdViewWrapper(sdk, appLovinAdSize, context);
45+
AppLovinSdk sdk, AppLovinAdSize appLovinAdSize, AdSize adSize, Context context) {
46+
FrameLayout.LayoutParams adViewLayoutParams =
47+
new FrameLayout.LayoutParams(
48+
adSize.getWidthInPixels(context), adSize.getHeightInPixels(context));
49+
FrameLayout adViewWrapper = new FrameLayout(context);
50+
adViewWrapper.setLayoutParams(adViewLayoutParams);
51+
return new AppLovinAdViewWrapper(sdk, appLovinAdSize, adViewWrapper, context);
4152
}
4253

4354
public void setAdDisplayListener(AppLovinAdDisplayListener adDisplayListener) {
@@ -56,7 +67,7 @@ public void renderAd(AppLovinAd ad) {
5667
appLovinAdView.renderAd(ad);
5768
}
5869

59-
public AppLovinAdView getAppLovinAdView() {
60-
return appLovinAdView;
70+
public FrameLayout getAppLovinAdView() {
71+
return adViewWrapper;
6172
}
6273
}

ThirdPartyAdapters/applovin/applovin/src/main/java/com/google/ads/mediation/applovin/AppLovinBannerAd.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public static AppLovinBannerAd newInstance(
109109
public void loadAd() {
110110
context = mediationBannerAdConfiguration.getContext();
111111
Bundle serverParameters = mediationBannerAdConfiguration.getServerParameters();
112-
AdSize adSize = mediationBannerAdConfiguration.getAdSize();
112+
final AdSize adSize = mediationBannerAdConfiguration.getAdSize();
113113
String sdkKey = serverParameters.getString(ServerParameterKeys.SDK_KEY);
114114
if (TextUtils.isEmpty(sdkKey)) {
115115
AdError error =
@@ -141,7 +141,8 @@ public void onInitializeSuccess() {
141141
zoneId = AppLovinUtils.retrieveZoneId(serverParameters);
142142

143143
Log.d(TAG, "Requesting banner of size " + appLovinAdSize + " for zone: " + zoneId);
144-
appLovinAdViewWrapper = appLovinAdFactory.createAdView(sdk, appLovinAdSize, context);
144+
appLovinAdViewWrapper =
145+
appLovinAdFactory.createAdView(sdk, appLovinAdSize, adSize, context);
145146

146147
appLovinAdViewWrapper.setAdDisplayListener(AppLovinBannerAd.this);
147148
appLovinAdViewWrapper.setAdClickListener(AppLovinBannerAd.this);

0 commit comments

Comments
 (0)