Как скрыть/отключить рекламу admob?

Я скрываю admob adview с помощью view.gone:

//adView.setClickable(false);
//adView.clearFocus();
//adView.setEnabled(false);
//adView.setFilterTouchesWhenObscured(true);
//adView.setFocusable(false);
//adView.setFocusableInTouchMode(false);
adView.setVisibility(View.GONE);
adView.startAnimation( animation );

Это скрывает рекламу, но сама реклама по-прежнему доступна для касания, поэтому, если я коснусь области рекламы, она все равно откроет браузер и перенаправит меня к рекламе, хотя сама реклама не видна.

Как отключить сенсорное событие? Я пробовал все строки выше, но ни одна из них не сработала.

Любой совет?


person Tamas    schedule 22.04.2012    source источник


Ответы (3)


Попробуйте использовать setOnTouchListener и Override onTouch, как хотите. Также вы можете использовать removeView():

LinearLayout linLay = (LinearLayout)findViewById(R.id.ad_layout);
linLay.removeView(adView); 
LinearLayout.LayoutParams params = new  LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
linLay.addView(adView, params);

и добавить его обратно, когда вам нужно.

person jumper0k    schedule 22.04.2012
comment
Не думал об удалении и добавлении представления. Спасибо. - person Tamas; 23.04.2012

Установка adView.setVisibility(View.GONE) и удаление представления AdMob из иерархии представлений в большинстве случаев скроет рекламу и предотвратит взаимодействие с пользователем.

Не забудьте завершить жизненный цикл AdView, когда действие, отображающее рекламу, завершено (уничтожено). Из Javadoc AdMob SDK:

public void destroy()

Уничтожает AdView. AdView больше не следует использовать после вызова этого метода.

Сделайте вызов destroy() в обратном вызове Activity onDestroy():

@Override
public void onDestroy() {
    if (adView != null) {
        adView.destroy();
    }
super.onDestroy();
}
person mjama    schedule 21.08.2012
comment
adView имеет тип AdView. В Simple View нет метода destroy(). - person Mark; 23.09.2013
comment
@Mark AdView имеет собственный определенный метод destroy(). - person Vektor88; 25.02.2014
comment
@mjama должен ли я также вызывать .destroy(), если я создал AdView через XML? В руководстве кажется, что мне не нужно вызывать уничтожение: developers.google.com/mobile-ads-sdk/docs/admob/ - person Accollativo; 24.06.2014

final com.google.ads.AdView ad = (AdView) findViewById(R.id.rect_ad);
   if ( ad != null) {
            ad.stopLoading();
            ad.destroy();
            getWindowManager().removeView(ad);
   }

даже этот код не уничтожает AdMob =((( У меня есть обработчик и WebView в памяти, хранящие мою активность

person Andrew Matiuk    schedule 30.09.2013
comment
Обходной путь заключается в том, чтобы не полагаться на XML-версию AdView, а создавать представление программно и добавлять в него контейнер. Таким образом, вы можете использовать контекст приложения. Если вы используете XML-версию, она будет использовать контекст Activity, который будет подвержен утечкам памяти. (Я тоже недавно это обнаружил) - person Ionut Negru; 11.01.2017