2011-10-17 55 views
1

我试图找到一种方法来检查横幅(广告)是否被选中,但它更难以接缝。Android检查是否按下了横幅

我试图

adView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //TODO 
     } 
    }); 

但它不工作(我把一个调试打印,但没有奏效。)

然后我试图创建一个包装AdView的一个的LinearLayout和把听众放在线性布局上,但它仍然不起作用。

然后我试着创建一个包含所有显示的更大的布局,并在其中添加了adView。我想把一个onTouchListener放进去,然后检查坐标,以检查添加是否被按下。但我并不真正了解如何找到我的横幅的正确坐标(我创建了一个获得x和y偏移量以及用于放置横幅的重力的方法)来检查,并且我真的希望有更好的方法存在。此外,我发现如果我按下横幅,该方法不会被执行,但仅当按下屏幕的其他部分时才会执行该方法。

那么,有没有办法知道它?我不在乎知道横幅页面是否被加载,或者它是否重定向到市场或浏览器,我只需要知道横幅是否被按下。

也许设置一个检查,当触摸屏幕时运行,并检查是否运行listner方法,如果没有运行横幅被触摸可以工作,但我不知道如何实现它..

任何想法如何做到这一点?

谢谢

+0

我想你只需要添加一个'OnTouchListener'的广告横幅。当调用'onTouch'时,它被点击。不需要检查坐标。 –

+0

@stevehb \t 你试过了吗?在我身边,我已经尝试过了,它不起作用。可能是因为触摸被传递到处理横幅的活动,并且不会为触摸输入提供任何回调 –

+0

我之前遇到过麻烦,通过向视图添加“OnClickListener”而不是“OnTouchListener”。点击监听器从来没有得到任何输入,但是一个人的触摸,我认为这可能是你的问题。另外,我不认为'Activity'有任何输入处理。如果您可以发布加载横幅视图的示例活动,添加触摸监听器,并且仍然没有响应,那将更容易。 –

回答

0

您是否尝试在点击事件中加入敬酒?

该应用是否可以编译并运行?

您有重复的ID吗?

+0

我把一个调试打印,从不显示在logcat中。如果我举杯祝酒,会不一样?我不认为..代码是根本没有执行.. 是的,它运行良好,除了onClickListener从未被称为 该视图是在运行时创建的,所以没有id存在。 –

+0

你打开了你的文章 我在找一个方法来检查横幅(广告)是否被选中 – Herb

0

好吧,我解决了,因为我失去了相当多的时间来找到解决方案,我把它张贴在这里,让每个人都可以找到并使用它!

LinearLayout containAdView = null; 

    if(registerTouch) 
    { 
      containAdView = new LinearLayout(pActivity){ 

      public boolean onInterceptTouchEvent(MotionEvent ev) 
      { 
       if(ev.getAction() == MotionEvent.ACTION_UP) 
       { 
        bannerClicked(pActivity, shared_Prefs_name, shared_Save_name); 

        if(mainMenu.ISDEV) 
        { 
         final Toast tost = Toast.makeText(pActivity, "Banner Clicked", Toast.LENGTH_SHORT); 
         tost.show(); 
        } 
       } 

       return super.onInterceptTouchEvent(ev); 
      } 
     }; 
     containAdView.addView(adView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 
    } 
1

我不知道为什么其他人没有说出您正在使用哪个adView? 大部分(就我所知,)提供了一个可以提供的侦听器,它可以回调点击广告的时间。

MobFox例如有setBannerListener(BannerListener listener),并且该收听者有一个方法adClicked()。其他提供者(如admob,inmobi,mopub)都有类似的听众可以设置。

这应该是处理这个问题的方法,而不是黑客入侵containerview。

1

对于那些谁如何仍然不知道:

其使用AdListener的

adView.setAdListener(new AdListener() { 
      public void onDismissScreen(Ad arg0) { 
       Toast.makeText(BannerAdListener.this, "Back to app", Toast.LENGTH_SHORT).show(); 
      } 

      public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { 
       Toast.makeText(BannerAdListener.this, "Error loading", Toast.LENGTH_SHORT).show(); 

      } 

      public void onLeaveApplication(Ad arg0) { 
       Toast.makeText(BannerAdListener.this, "Left app", Toast.LENGTH_SHORT).show(); 

      } 

      public void onPresentScreen(Ad arg0) { 
       Toast.makeText(BannerAdListener.this, "Sumthin sumthin", Toast.LENGTH_SHORT).show(); 

      } 

      public void onReceiveAd(Ad arg0) { 
       Toast.makeText(BannerAdListener.this, "Ad Received", Toast.LENGTH_SHORT).show(); 

      } 
      });