热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidAndEngine游戏启动画面中移除广告

本文探讨了如何在游戏启动画面中移除广告,特别是在游戏数据加载期间(大约5-6秒)广告会短暂显示的问题。通过调整XML布局和代码逻辑,可以实现广告的延迟加载或完全移除。

在使用AndEngine开发Android游戏时,一个常见的问题是广告会在游戏数据加载期间(大约5-6秒)短暂显示。这不仅影响用户体验,还可能分散玩家的注意力。如何在启动画面中移除这些广告呢?

一种有效的方法是通过调整XML布局文件和代码逻辑来控制广告的显示时机。

首先,在布局文件中定义广告视图,并将其初始状态设置为不可见:


android:id="@+id/footer_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="bottom"
android:orientation="vertical" >
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="@string/admob_id"
android:visibility="gone" />

接下来,在代码中处理广告的加载时机。可以在游戏资源和场景加载完成后,再加载广告:

@Override
protected void onSetContentView() {
RelativeLayout relativeLayout = new RelativeLayout(this);
FrameLayout.LayoutParams relativeLayoutLayoutParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT);
mRenderSurfaceView = new RenderSurfaceView(this);
mRenderSurfaceView.setRenderer(mEngine, this);
RelativeLayout.LayoutParams surfaceViewLayoutParams = new RelativeLayout.LayoutParams(
super.createSurfaceViewLayoutParams());
surfaceViewLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
// 加载AndEngine视图
relativeLayout.addView(mRenderSurfaceView, surfaceViewLayoutParams);
// 加载XML视图
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vv = vi.inflate(R.layout.main, null);
vv.bringToFront();
vv.setVisibility(View.GONE);
relativeLayout.addView(vv, createAdViewLayoutParams());
setContentView(relativeLayout, relativeLayoutLayoutParams);
}

在加载启动画面资源和场景时,确保广告视图保持不可见:

@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception {
splashBackgroundTextureAtlas = new BitmapTextureAtlas(getTextureManager(), 480, 800, TextureOptions.NEAREST);
splashBackgroundTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(splashBackgroundTextureAtlas, this, "gfx/splash.png", 0, 0);
mEngine.getTextureManager().loadTexture(splashBackgroundTextureAtlas);
pOnCreateResourcesCallback.onCreateResourcesFinished();
}
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception {
splashScene = new Scene();
splashScene.setBackgroundEnabled(false);
splashScene.attachChild(new Sprite(0, 0, splashBackgroundTextureRegion, this.getVertexBufferObjectManager()));
pOnCreateSceneCallback.onCreateSceneFinished(splashScene);
}

在游戏资源和场景加载完成后,再加载广告:

@Override
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
mEngine.registerUpdateHandler(new TimerHandler(0.01f, new ITimerCallback() {
public void onTimePassed(final TimerHandler pTimerHandler) {
mEngine.unregisterUpdateHandler(pTimerHandler);
loadResources();
loadScene();
mEngine.setScene(scene);
runOnUiThread(new Runnable() {
public void run() {
View vv = findViewById(R.id.footer_layout);
vv.setVisibility(View.VISIBLE);
AdView adView = (AdView) findViewById(R.id.adView);
adView.loadAd(new AdRequest());
}
});
}
}));
pOnPopulateSceneCallback.onPopulateSceneFinished();
}

通过上述步骤,可以有效地在游戏启动画面中移除广告,提升用户体验。


推荐阅读
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 本文介绍了一个项目中如何在Windows平台上实现多声道音频数据的采集,特别是针对DANTE音频接口的8路立体声音频通道。文章详细描述了使用Windows底层音频API进行音频采集的方法,并提供了一个具体的实现示例。 ... [详细]
  • 在Java应用程序开发过程中,FTP协议被广泛用于文件的上传和下载操作。本文通过Jakarta Commons Net库中的FTPClient类,详细介绍如何实现文件的上传和下载功能。 ... [详细]
  • 本文针对Android 6.0平台的输入子系统进行了详细探讨,特别关注了智能电视开发中常见的KeyEvent事件处理机制。通过分析InputManagerService的启动过程、应用程序如何注册键盘消息监听、InputReader读取键盘消息的方式、InputDispatcher分发键盘消息的过程以及Java层的键盘消息分发机制,为开发者提供了一个全面的视角。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 虽然SQL因其直观易学的语法受到广泛欢迎,但转向Pandas进行数据处理时,初学者可能会感到不适应。本文旨在通过一系列实例,展示如何在Pandas中实现类似SQL的数据查询功能。 ... [详细]
  • Android商城应用开发指南(第二部分):创建启动欢迎页
    大多数商城应用程序在启动时会显示一个欢迎页面,以提升用户体验。本文将指导您如何实现一个基本的欢迎页,该页面会在用户打开应用后短暂展示,随后自动跳转至主界面。 ... [详细]
  • 任务,栈, ... [详细]
  • Python基础教程:条件语句与函数进阶
    本文深入探讨了Python中的基本操作与函数特性,包括条件语句的扩展使用及函数的多种定义方式。 ... [详细]
  • 本文档提供了如何使用C#代码从客户订单中提取产品信息的方法,适用于需要处理和分析产品数据的应用场景。 ... [详细]
  • Java中String类为何设计为final?其不可变性与其他包装类的特性
    探讨Java中String类设计为final的原因及其不可变性,同时分析其他基本数据类型包装类及枚举类型的不可变性。 ... [详细]
  • 本文将指导如何在JFinal框架中快速搭建一个简易的登录系统,包括环境配置、数据库设计、项目结构规划及核心代码实现等环节。 ... [详细]
  • Android中实现复合旋转动画效果
    本文将探讨如何在Android应用中实现动态且吸引人的旋转动画。通过结合多种动画类型,如透明度变化、旋转、缩放和位移,可以创造出更为复杂的视觉效果。我们将从XML布局和Java代码两个方面进行详细介绍。 ... [详细]
  • 本文介绍如何在Android中利用Handler和Bundle来发送包含多个参数的消息,并详细说明了消息的构建与处理方法。 ... [详细]
  • 本文详细介绍了Manacher算法,该算法能够在O(n)时间内找到字符串中的最长回文子串。通过对字符串进行预处理,并使用动态规划的思想,Manacher算法能够高效地解决这一问题。 ... [详细]
author-avatar
KellylikePchy_224
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有