Центр баннера MoPub на SurfaceView - PullRequest
4 голосов
/ 10 июля 2011

Я бы хотел добавить объявление MoPub в мою игру для Android. Игра создана на Классе SurfaceView. У меня нет XML-файла макета. Проблема в том, что я не могу центрировать рекламу на экране. Я стараюсь центрировать и притягивать все. Все еще не работает. MoPubView расширяет FrameLayout.

    MoPubView mAdView = new MoPubView(this);
    mAdView.setAdUnitId("_MY__ID_"); 
    mAdView.loadAd();

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

    RelativeLayout mRelativeLayout = new RelativeLayout(this);

    mRelativeLayout.setGravity(Gravity.CENTER_HORIZONTAL);
    mRelativeLayout.addView(mSurface);
    mRelativeLayout.addView(mAdView, layoutParams);

    mRelativeLayout.invalidate();
    setContentView(mRelativeLayout);

Пожалуйста, посоветуйте мне что-нибудь, потому что это сводит меня с ума. Я чувствую, что упускаю что-то легкое.

Ответы [ 4 ]

1 голос
/ 20 июня 2012

Просто создайте макет контейнера с параметрами "FILL_PARENT" и добавьте в него вид вашего объявления следующим образом:

MoPubView mAdView = new MoPubView(this);
mAdView.setAdUnitId(XXXXXXX);

RelativeLayout adContainer = new RelativeLayout(this);
addContentView(adContainer, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

LayoutParams adParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 1); //to align vertically at top
adParams.addRule(RelativeLayout.CENTER_IN_PARENT, 1); //to align horizontally at center

adContainer.addView(mAdView, adParams);
mAdView.loadAd();
1 голос
/ 03 августа 2011

Вы не можете центрировать контент непосредственно в MoPub, или, по крайней мере, я не нашел способа сделать это. Он основан на FrameLayout.

Вы должны центрировать объявление в HTML. Если вы используете собственный HTML-код в своей кампании MoPub, просто оберните код внутри <div style="text-align:center">...</div>. (Сделайте это через веб-страницу администрирования MoPub). Это решило мою проблему, я использовал поставщика объявлений OpenX.

0 голосов
/ 26 сентября 2018

Я сделал то же самое с приведенным ниже фрагментом кода. Я использую Java-движок LibGDX.

Relativelayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
                                RelativeLayout.LayoutParams.WRAP_CONTENT);
                adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

                moPubView = new MoPubView(mActivity.getApplicationContext());
                moPubView.setAdUnitId("XXXXXX");// Banner test Ad unit Id.
                moPubView.setAutorefreshEnabled(true);
                moPubView.setVisibility(View.GONE);
                layout.addView(moPubView,adParams);

1.У меня есть Относительный макет в родительском.

2.Добавлен MoPubView вРодительский относительный макет только с layoutParams ALIGN_PARENT_BOTTOM && CENTER_HORIZONTAL

layout.addView(moPubView,adParams);
0 голосов
/ 05 августа 2011

Я знаю, что не стоит устанавливать постоянную ширину баннера, но пока ваши баннеры имеют 320px, они работают нормально:

final float scale = getResources().getDisplayMetrics().density;

MoPubView mAdView = new MoPubView(this);
mAdView.setAdUnitId(MOPUB_ID); 
mAdView.loadAd();

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int) (320*scale), LayoutParams.WRAP_CONTENT);

layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

RelativeLayout mRelativeLayout = new RelativeLayout(this);

mRelativeLayout.addView(mSurface);
mRelativeLayout.addView(mAdView, layoutParams);

mRelativeLayout.invalidate();
setContentView(mRelativeLayout);
...