【问题标题】:Displaying Ad In AndEngine在 AndEngine 中展示广告
【发布时间】:2012-02-14 23:24:00
【问题描述】:

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

我无法弄清楚这是如何完成的,因为它不使用布局来膨胀视图,而是使用精灵。

我使用 BaseGameActivity 为我想在其上显示添加的每个场景创建我的应用程序。

在 GreyStrip 中,这就是他们告诉您在应用程序中集成广告的方式..

在您的应用程序中向 GSSDK 添加调用之前,您需要 将 SDK 合并到您的 AndroidManifest.xml 中。添加以下内容 在部分中,替换 具有对您的应用程序唯一的包标识符。这 Content Provider 管理广告内容的本地存储,而 Activity 管理广告展示。

 <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,请在以下位置调用 initialize 方法 启动。这应该在应用程序的 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,与任何 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();
        }
    });

【问题讨论】:

  • 你有什么样的布局?至少你必须有某种线性/相对布局来在屏幕上排列你的组件。如果是这样,只需创建 LayoutParams lp ... 然后 mymainview.addView(myBanner,lp);继续努力。
  • 使用 GreyStripe,您可以使用 BannerView。正如我在我的问题中所说的那样。检查我的更新..问题是我无法弄清楚如何将它与 AndEngine 集成
  • 您在 AdView 中的 onCreate() 是什么以及您如何在其中设置 setContentView()?
  • 我认为这可能是你的情况stackoverflow.com/questions/8237346/…
  • 页面上的最后一个答案看起来像我需要的东西。就 BannerView 而言,它看起来如何?你可以给我一个很棒的伪代码。

标签: android andengine


【解决方案1】:

我正在使用 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 类中。

【讨论】:

  • Jong 拯救了这一天..再次! (= 伙计,你真棒。你真的帮了我很多忙。谢谢你。同样在 frameLayout.addView(this.mAdView, bannerViewLayoutParams); 应该是 frameLayout.addView(this.bannerView, bannerViewLayoutParams); 对吗?
  • 是的,我只是忘记更改它(这是我游戏中的一个方法,但我使用了 AdMob AdView。我现在会修复它:))
  • 您的游戏上市了吗?我想试试看。
  • 这里是:market.android.com/details?id=com.jong.angryballs。我没有投入太多精力(我的第一个 AndEngine 游戏……可能是 2 周),但我确实尝试使用许多 SDK 来学习不同的游戏附加组件(所以这里我们有 AdMob、Facebook 和 Open Feint在职的)。您也应该添加它们,Open Feint 非常酷且易于添加:)
  • 尝试 :) 我的表弟在这些方面提供了一些帮助。该游戏中的图形很简单而且很蹩脚,因此每个设备都可以运行它。游戏玩法远比图形重要,imo。
猜你喜欢
  • 2020-09-06
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多