Java Android检查是否按下了横幅

Java Android检查是否按下了横幅,java,android,touch,listener,Java,Android,Touch,Listener,我试图找到一种方法来检查横幅(广告)是否被检查,但它更难 我试过了 adView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TODO } }); 但它不工作(我放了一个调试打印,但它不工作…) 然后我尝试创建一个LinearLayout来包装adView并将侦听器放在线性布局上

我试图找到一种方法来检查横幅(广告)是否被检查,但它更难

我试过了

adView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //TODO
        }
    });
但它不工作(我放了一个调试打印,但它不工作…)

然后我尝试创建一个LinearLayout来包装adView并将侦听器放在线性布局上,但它仍然不起作用

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

那么,有什么办法知道吗?我不想知道是否加载了横幅页面,或者是否将其重定向到市场或浏览器,我只想知道是否按下了横幅

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

你知道怎么做吗


谢谢你

你有没有试着在你的点击活动中敬酒

应用程序是否编译并运行


你有重复的身份证吗

好的,我解决了,因为我浪费了很多时间来寻找解决方案,所以我把它贴在这里,这样每个人都可以找到并使用它

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

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

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


这应该是解决问题的方法,而不是侵入containerview。

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

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

            }
            });

我想你只要在广告横幅上添加一个
OnTouchListener
。调用
onTouch
时,会单击它。不需要检查坐标。@stevehb你试过了吗?就我而言,我已经试过了,但没有效果。。可能是因为触摸被传递给了处理横幅的活动,并且没有为触摸输入提供任何回调。我以前在视图中添加了
OnClickListener
而不是
OnTouchListener
时遇到过麻烦。点击式监听器从未收到过输入,但触摸式监听器收到了,我想这可能是你的问题。另外,我认为
活动
不会进行任何输入处理。如果你可以发布一个示例活动,加载横幅视图,添加触摸监听器,但仍然没有响应,那么就更容易弄清楚了。如果我敬酒会有什么不同吗?我不认为。。代码根本不被执行。。是的,它运行正常,只是从来没有调用onClickListener。视图是在运行时创建的,因此没有id。您打开了帖子,我正在试图找到一个方法来检查是否选中了横幅(ad)