Android - Admob - загрузка рекламы и изменение видимости вызывают проблемы - PullRequest
1 голос
/ 17 ноября 2011

Длинная версия: у меня есть игра для Android. На каждом «экране» я показываю рекламу, НО сам игровой экран - где вы на самом деле играете. Теперь, если вы запустили приложение-игру (реклама начинает загружаться), а затем нажали «Пуск» до того, как реклама закончила загрузку - она ​​не будет отображаться, когда она должна быть (только маленькая полоска)

Короткая версия: вызов AdView.loadAd, а затем AdView.setVisibility(View.INVISIBLE) до получения объявления будет получен странный результат, если мы вызовем AdView.setVisibility(View.VISIBLE) после загрузки объявления.

Это происходит:

enter image description here

Вместо, например:

enter image description here

Теперь нажатие на эту крошечную полоску слева все еще засчитывается как нажатие на объявление - нажатие на него делает все, что будет делать нажатие на объявление (запуск браузера и т. Д.)

И если вы вернетесь к начальному экрану (т.е. нажмите кнопку «Домой»), а затем вернетесь к приложению, объявление снова будет отображаться, как и должно.

Кто-нибудь предложил это, и есть ли у кого-нибудь идеи, как это решить? Спасибо.

РЕДАКТИРОВАТЬ: Вот соответствующий код:

Создание просмотра объявления:

this.mAdView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxx");

Создание параметров макета:

final FrameLayout.LayoutParams adViewLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT,
                    Gravity.TOP | Gravity.CENTER_HORIZONTAL);

Создание корневой группы представлений и ее параметров макета:

final FrameLayout frameLayout = new FrameLayout(this);
final FrameLayout.LayoutParams frameLayoutLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
                    FrameLayout.LayoutParams.FILL_PARENT);

Добавление в корневую группу представлений:

frameLayout.addView(this.mAdView, adViewLayoutParams);

И, наконец, настройка просмотра содержимого:

this.setContentView(frameLayout, frameLayoutLayoutParams);

Ответы [ 3 ]

4 голосов
/ 27 января 2014
adContainer = (LinearLayout) view.findViewById(R.id.adViewContainer);
    adContainer.setVisibility(View.GONE);
    adContainer.addView(adView);

// ваш код для определения adView находится здесь.

adView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
            adContainer.setVisibility(View.VISIBLE);
        }
    });
2 голосов
/ 18 ноября 2011

Мне удалось решить это следующим образом:

  1. В методе, который изменяет видимость, я сначала проверяю, было ли загружено объявление.Если это не так, я не изменяю видимость:

  2. Установите AdListener для AdView.в методе onReceivedAd я проверяю условие, чтобы скрыть его - если он должен быть скрыт, я скрываю.

Работает нормально таким образом.

0 голосов
/ 17 ноября 2011

Может быть, вы можете попытаться поместить admobView в AbsoluteLayout и сделать Invisible полным макетом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...