在画布上展示广告

时间:2014-08-04 21:05:28

标签: java android canvas admob

现在我正在调用我的gamecanvas:

GameCanvas gameCanvas;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    gameCanvas = new GameCanvas(getApplicationContext());
    gameCanvas.setBackgroundColor(Color.DKGRAY);
    setContentView(gameCanvas);
}

在我的main.xml中我得到了

`<com.google.android.gms.ads.AdView android:id="@+id/adView"
                                       android:layout_width="wrap_content"
                                       android:layout_height="wrap_content"
                                       ads:adUnitId="ca-app-pub-ID"
                                       ads:adSize="BANNER"/>`

如果我将contentView设置为我的main.xml,我可以得到一个添加显示为

        AdView adView = (AdView) this.findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("DEVICE ID").build();
    adView.loadAd(adRequest);

那么如何在画布上添加一个admob横幅广告?

编辑:

如果我添加

<mb.jet.game.GameCanvas android:id="@+id/vMain"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content" />

到我的xml我收到错误

无法启动活动ComponentInfo {mb.jet.game/mb.jet.game.MyActivity}:android.view.InflateException:二进制XML文件行#12:错误膨胀类mb.jet.game.GameCanvas

2 个答案:

答案 0 :(得分:1)

这是我要做的。将您的gamecanvas放入片段中。通过FrameLayout动态地将您的片段添加到您的活动中。将FrameLayout放在RelativeLayout中。将Admob xml内容放入relativelayout中。这一切都变得简单,因为您可以相对于您的广告定位您的游戏扫描。我认为你的gamecanvas是一个GLSurfaceView(可能是错误的)?无论如何,您都可以使用xml创建视图。

完成所有操作后,将以下属性添加到admob xml引用...

android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"

添加到您的framelayout

android:layout_above ="@+id/adView"

您还可以使用addContentView向布局添加视图,但如果您问我最好使用Fragments。 =)

答案 1 :(得分:1)

我最终将所有内容都设置为相对布局,以便我的XML看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Hello World, MyActivity"
            />
    <RelativeLayout android:id="@+id/vMain"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" />
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:ads="http://schemas.android.com/apk/res-auto"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
        <com.google.android.gms.ads.AdView android:id="@+id/adView"
                                           android:layout_width="wrap_content"
                                           android:layout_height="wrap_content"
                                           android:layout_alignParentBottom="true"
                                           android:layout_centerInParent="true"
                                           ads:adUnitId="ca-app-pub-2945740687682775/6253169713"
                                           ads:adSize="BANNER"/>
    </RelativeLayout>
</RelativeLayout>

之后我将画布视图添加到相对布局,然后将广告添加到

setContentView(R.layout.main);

    RelativeLayout layout = (RelativeLayout)findViewById(R.id.vMain);
    layout.addView(gameCanvas);
    AdView adView = (AdView) this.findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("91BA1C88FB7946232E39E67D0C066208").build();
    adView.loadAd(adRequest);

我不确定这是最好的解决方案,还是其他人发布的内容,我只是误解了,所以我会暂时搁置这个问题。