【问题标题】:Android Check if banner is pressedAndroid 检查是否按下横幅
【发布时间】:2011-10-17 21:53:22
【问题描述】:

我正在尝试寻找一种方法来检查是否检查了横幅(广告),但它更难接缝。

我试过了

adView.setOnClickListener(new View.OnClickListener() {

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

但它不起作用(我放了一个调试打印但它不起作用..)

然后我尝试创建一个 LinearLayout 来包装 adView 并将监听器放在线性布局上,但它仍然没有工作。

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

那么,有什么方法可以知道吗?我不关心横幅页面是否已加载,或者是否重定向到市场或浏览器,我只需要知道横幅是否被按下。

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

知道怎么做吗?

谢谢

【问题讨论】:

  • 我认为您只需在广告横幅中添加一个OnTouchListener。当onTouch 被调用时,它被点击了。无需检查坐标。
  • @stevehb 你试过了吗?在我这边,我已经尝试过了,但它没有用。可能是因为触摸被传递给处理横幅的活动,并且没有为触摸输入提供任何回调
  • 我之前在视图中添加 OnClickListener 而不是 OnTouchListener 时遇到过麻烦。点击监听器从来没有得到输入,但触摸有,我认为这可能是你的问题。另外,我认为Activity 不会进行任何输入处理。如果您可以发布一个加载横幅视图、添加触摸侦听器但仍然无响应的示例 Activity,则更容易确定。

标签: java android touch listener


【解决方案1】:

我不知道为什么其他人没有谈论您使用的是哪个 adView? 大多数(据我所知)都提供了一个你可以提供的监听器,它有一个广告被点击时的回调。

例如,MobFox 有 setBannerListener(BannerListener listener),而该监听器有一个方法 adClicked()。其他提供者(如 admob、inmobi、mopub)都具有您可以设置的类似侦听器。

这应该是处理这个问题的方法,而不是侵入容器视图。

【讨论】:

    【解决方案2】:

    对于那些还不知道怎么做的人:

    它使用 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();
    
                }
                });
    

    【讨论】:

      【解决方案3】:

      您是否尝试在点击事件中添加祝酒词?

      应用程序是否编译并运行?

      你有重复的 id 吗?

      【讨论】:

      • 我放了一个调试打印,它永远不会显示在 logcat 中。如果我放一个吐司会不一样吗?我不认为..代码根本没有执行..是的,它运行良好,除了从未调用 onClickListener 视图是在运行时创建的,因此不存在 id。
      • 您打开了您的帖子我正在尝试寻找一种方法来检查是否检查了横幅(广告)
      【解决方案4】:

      好的,我解决了,由于我浪费了相当多的时间来寻找解决方案,所以我将它发布在这里,以便每个人都可以找到并使用它!

      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));
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-26
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 1970-01-01
        • 2012-06-26
        相关资源
        最近更新 更多