Android检查是否按下横幅

时间:2011-10-17 21:53:22

标签: java android touch listener

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

我试过

adView.setOnClickListener(new View.OnClickListener() {

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

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

然后我尝试创建一个包装adView并将侦听器放在线性布局上的LinearLayout,但它仍然无效。

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

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

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

知道怎么做吗?

谢谢

4 个答案:

答案 0 :(得分:1)

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

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

这应该是处理这个问题的方法,而不是黑客攻击容器视图。

答案 1 :(得分: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();

            }
            });

答案 2 :(得分:0)

您是否尝试过点击事件?

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

你有重复的ID吗?

答案 3 :(得分: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));
    }