在AndEngine中显示广告

时间:2012-01-20 11:24:35

标签: android andengine

我正在尝试使用AndEngine中的Greystrip显示广告。

我无法弄清楚这是如何完成的,因为它不会使用布局来夸大视图,但却是精灵。

我使用BaseGameActivity为我想要显示的每个场景创建我的应用程序。

在GreyStrip中,他们会告诉您如何在应用中集成广告。

  

在将应用程序中的调用添加到GSSDK之前,您需要   将SDK合并到AndroidManifest.xml中。添加以下内容   在该部分,取代   使用您的应用程序独有的包标识符。这个   内容提供商管理广告内容的本地存储,而   活动管理广告显示。

 <provider android:name="com.greystripe.android.sdk.AdContentProvider"
    android:authorities="<YOUR_APPLICATION_PACKAGE>.AdContentProvider"
android:multiprocess="true"
android:exported="false" />
<activity android:name="com.greystripe.android.sdk.AdView"
android:configChanges="keyboard|keyboardHidden|orientation" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
  

要初始化Greystripe SDK,请调用初始化方法   启动。这应该在你的应用程序的onCreate()中完成   方法。这个调用将产生一个后台线程来初始化我们的   活动,然后将控制权返回给您的应用。在这背景下,   Greystripe活动将下载广告以及任何SDK更新。   参数:ctx:您的应用程序上下文实例appId:使用   应用程序注册期间提供的appId。提供无效的appId   将导致SDK显示错误通知广告。

 public static GSSDK initialize(Context ctx, String appId)
  

要使用横幅,请将以下内容放在main.xml文件中:

<view class="com.greystripe.android.sdk.BannerView"
android:id="@+id/gsBanner"
android:layout_width="320dp"
android:layout_height="48dp"/>
  

要在代码中引用横幅视图,请使用findViewById,与any一样   main.xml元素:

BannerView myBanner = (BannerView) findViewById(R.id.gsBanner);

要求添加电话

myBanner.refresh();

现在的问题是因为我没有xml布局我无法弄清楚我如何为广告视图扩充布局?

有人有什么想法吗?

编辑:

我见过有人在网上教程中这样做,但我怎样才能在andengine中充气呢?

try {
    String applicationId = Utils.scrapeIgnoreCase(externalParams, "<param name=\"id\">", "</param>");           
    GSSDK.initialize(context, applicationId);

    BannerView myBanner = new BannerView(context);          
    myBanner.setLayoutParams(view.getLayoutParams());
    myBanner.addListener(new GreyStripeBannerListener());           
    view.addView(myBanner);
    myBanner.refresh();
    myBanner.setOnClickListener(new  View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Click();
        }
    });

1 个答案:

答案 0 :(得分:6)

我正在使用AdMob但它应该类似。

如引用@Sergey Benner,您必须在活动中覆盖onSetContentView,然后手动创建RenderSurfaceView和广告视图。

首先,创建一个FrameLayout以包含AndEngine的视图和广告视图。 添加AndEngine的视图并创建广告视图,然后将框架布局设置为内容视图。

@Override
protected void onSetContentView() {
    //Creating the parent frame layout:
    final FrameLayout frameLayout = new FrameLayout(this);
    //Creating its layout params, making it fill the screen.
    final FrameLayout.LayoutParams frameLayoutLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,
                    FrameLayout.LayoutParams.FILL_PARENT);

    //Creating the banner view.
    BannerView bannerView = new BannerView(this);

    //....
    //Do any initiallizations on the banner view here.
    //....

    //Creating the banner layout params. With this params, the ad will be placed in the top of the screen, middle horizontally.
    final FrameLayout.LayoutParams bannerViewLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT,
                    Gravity.TOP | Gravity.CENTER_HORIZONTAL);

    //Creating AndEngine's view.
    this.mRenderSurfaceView = new RenderSurfaceView(this);
    mRenderSurfaceView.setRenderer(mEngine, this);

    //createSurfaceViewLayoutParams is an AndEngine method for creating the params for its view.
    final android.widget.FrameLayout.LayoutParams surfaceViewLayoutParams =
            new FrameLayout.LayoutParams(super.createSurfaceViewLayoutParams());

    //Adding the views to the frame layout.
    frameLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams);
    frameLayout.addView(bannerView, bannerViewLayoutParams);

    //Setting content view
    this.setContentView(frameLayout, frameLayoutLayoutParams);
}

将此方法放在BaseGameActivity课程中。