124 lines
3.9 KiB
Java
124 lines
3.9 KiB
Java
package com.unity3d.mediation;
|
|
import android.util.Log;
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.view.ViewGroup;
|
|
import android.view.View;
|
|
import android.view.ViewTreeObserver;
|
|
import android.widget.FrameLayout;
|
|
import com.unity3d.mediation.BannerAdView;
|
|
import com.unity3d.mediation.BannerAdViewSize;
|
|
import com.unity3d.mediation.IBannerAdViewListener;
|
|
import com.unity3d.mediation.errors.LoadError;
|
|
|
|
public class BannerAd {
|
|
Handler handler;
|
|
BannerAdView bannerAdView;
|
|
BannerAnchor bannerAnchor;
|
|
Activity activity;
|
|
|
|
public BannerAd(Activity activity, String adUnitId, BannerAdViewSize size, IBannerAdViewListener bannerListener) {
|
|
this.handler = new Handler(Looper.getMainLooper());
|
|
this.activity = activity;
|
|
this.bannerAdView = new BannerAdView(activity);
|
|
|
|
bannerAdView.setAdUnitId(adUnitId);
|
|
bannerAdView.setSize(size);
|
|
|
|
bannerAdView.setListener(new IBannerAdViewListener() {
|
|
@Override
|
|
public void onBannerAdViewLoaded(BannerAdView bannerAdView) {
|
|
bannerListener.onBannerAdViewLoaded(bannerAdView);
|
|
}
|
|
|
|
@Override
|
|
public void onBannerAdViewFailedLoad(BannerAdView bannerAdView, LoadError loadError, String errorMessage) {
|
|
bannerListener.onBannerAdViewFailedLoad(bannerAdView, loadError, errorMessage);
|
|
}
|
|
|
|
@Override
|
|
public void onBannerAdViewRefreshed(BannerAdView bannerAdView, LoadError loadError, String errorMessage) {
|
|
bannerListener.onBannerAdViewRefreshed(bannerAdView, loadError, errorMessage);
|
|
}
|
|
|
|
@Override
|
|
public void onBannerAdViewClicked(BannerAdView bannerAdView) {
|
|
bannerListener.onBannerAdViewClicked(bannerAdView);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void destroy() {
|
|
bannerAdView.destroy();
|
|
}
|
|
|
|
public void load() {
|
|
bannerAdView.load();
|
|
}
|
|
|
|
public String getAdUnitId() {
|
|
return bannerAdView.getAdUnitId();
|
|
}
|
|
|
|
public AdState getAdState() {
|
|
return bannerAdView.getAdState();
|
|
}
|
|
|
|
public void setPosition(int anchor, int offsetX, int offsetY) {
|
|
activity.runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
if(bannerAdView.getParent() == null) {
|
|
activity.addContentView(bannerAdView, new FrameLayout.LayoutParams(
|
|
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
|
|
|
bannerAdView.post(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
setPositionInternal(anchor, offsetX, offsetY);
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
bannerAdView.post(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
setPositionInternal(anchor, offsetX, offsetY);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private void setPositionInternal (int anchor, int offsetX, int offsetY) {
|
|
FrameLayout.LayoutParams adLayoutParams = (FrameLayout.LayoutParams) bannerAdView.getLayoutParams();
|
|
if(adLayoutParams == null) return;
|
|
|
|
bannerAnchor = BannerAnchor.fromInteger(anchor);
|
|
int gravity = BannerAnchor.GetGravity(bannerAnchor);
|
|
|
|
adLayoutParams.gravity = gravity;
|
|
|
|
if(bannerAnchor.isTopRow()) {
|
|
adLayoutParams.topMargin = -offsetY;
|
|
}
|
|
else{
|
|
adLayoutParams.bottomMargin = offsetY;
|
|
}
|
|
|
|
if(bannerAnchor.isRightColumn()){
|
|
adLayoutParams.rightMargin = -offsetX;
|
|
}
|
|
else{
|
|
adLayoutParams.leftMargin = offsetX;
|
|
}
|
|
|
|
bannerAdView.setLayoutParams(adLayoutParams);
|
|
}
|
|
|
|
}
|
|
|