Как разместить рекламный баннер вверху в альбомной ориентации и внизу в портретной ориентации?

Я хочу, чтобы мой баннер AdMob отображался внизу экрана, когда приложение находится в портретном режиме, и вверху экрана, когда оно находится в ландшафтном режиме. Итак, как я могу добавить их в свое приложение?

В настоящее время я использую отдельный макет (layout-port и layout-land).


person user2120449    schedule 14.12.2015    source источник
comment
отправить запрос, чтобы показать адмоб в зависимости от ориентации, настроить 2 разных адмоб (пейзаж и портрет) на сервере и вызывать каждый соответственно?   -  person Daniel Mendel    schedule 14.12.2015
comment
У вас есть два отдельных макета и вам нужен код (xml-) для этого? Или у вас есть решение с двумя макетами и вам нужен (Java-) код?   -  person serv-inc    schedule 14.12.2015


Ответы (2)


Почему бы вам не попробовать распознать ориентацию экрана. всякий раз, когда экран изменяется, он воссоздает действие, которое вы можете получить с помощью метода определения ориентации экрана.

int orientation=this.getResources().getConfiguration().orientation;
if(orientation==Configuration.ORIENTATION_PORTRAIT){
   //code for portrait mode
}
else{
    //code for landscape mode
}

попробуйте добавить свой макет программно. Если вы используете относительный макет, вы можете использовать addRule следующим образом.

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, height);
lp.addRule(RelativeLayout.BELOW, lastId);   

Вы можете добавить правила в соответствии с требованиями. выше это способ добавить правило. аналогично есть способ удалить правило

params.removeRule(RelativeLayout.BELOW);

Или, если хотите, можете раздуть новый макет в соответствии с вашими потребностями. Надеюсь, это поможет!

person MrDumb    schedule 14.12.2015

Есть как минимум два способа сделать это.

На основе XML (рекомендуется во многих случаях, также @CommonsWare).

Что-то вроде

<com.google.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    app:adSize="BANNER"
    app:adUnitId="a1512f50d8c3692"
    app:loadAdOnCreate="true"
    app:testDevices="TEST_EMULATOR, TEST_DEVICE_ID" >
</com.google.ads.AdView>

Это должно добавить его в конец через android:layout_alignParentBottom="true" и android:layout_alignParentLeft="true". Если вы хотите, чтобы он был вверху, попробуйте android:layout_alignParentTop вместо этого.

Вам, вероятно, придется это немного подкорректировать (на ум приходит adUnitId). Затем в коде заполните его что-то вроде

AdView adView = (AdView) findViewById(R.id.adView);
adView.loadAd(new AdRequest());

на основе кода

Если вы действительно хотите сделать это сложным путем, ответ @ashutiwari4 на первый взгляд выглядит хорошо.

person serv-inc    schedule 14.12.2015