【发布时间】:2011-12-23 14:55:38
【问题描述】:
免责声明:这是一个奇怪的问题,仅在 Kindle Fire 中发生(到目前为止)。
涉及的技术:Android SDK、Eclipse、LibGDX。
我有一个使用LibGDX 运行的相对简单的应用程序。 LibGDX 的工作方式是拥有一个 OpenGL 线程,该线程将调用 Create()(一次),然后尽可能多次调用 Render()(这样您就可以进行渲染……)。
因此,当您初始化设备时,您的“Create()”方法会被调用,然后当 OpenGL 表面初始化时(所有这些都是自动发生的),您的 Render() 会开始被调用。
如果 OpenGL 上下文丢失、破坏等,您的 Resize(width,height) 方法将由 LibGDX 调用。
到目前为止。超好的。
现在我在 Kindle Fire 上遇到了一个奇怪的问题,其中的东西看起来偏离了几个像素或“剪切”了几个像素。 Kindle Fire 在屏幕底部有一个“软栏”(20 像素),您无法隐藏或跳过它,这“还可以”,因为该设备没有物理按钮。您应该触摸这个软条并获得更大的条以返回,回家等。根据亚马逊的说法,此条无法移除。 (不是 100% 清楚,但没有人找到一种方法——不违反亚马逊规则)。我见过的唯一一个删除它的应用是亚马逊视频播放器仅适用于从亚马逊云中流式传输的视频。如您所见,似乎没有办法“永久”隐藏该栏。
因此,如果存在该条,则您的真实屏幕状态不是硬件分辨率 1024x600(横向)而是 1024x580。所以我在我的方法中添加了一些日志记录以查看发生了什么,并且对此感到惊讶……(记住 create()、render() 和 resize() 方法):
12-23 15:17:04.119: I/myapp(19921): SCREEN HEIGHT AT CREATE(): 600
[snip other unrelated log stuff]
12-23 15:17:04.673: I/myapp(19921): SCREEN HEIGHT AT RENDER() LOOP: 600
[snip other unrelated log stuff]
12-23 15:17:04.705: I/myapp(19921): MyApp - Resize() Called.
12-23 15:17:04.705: I/myapp(19921): SCREEN HEIGHT AT RENDER() LOOP: 580
因此,Kindle Fire“在某个时候”“调整了”屏幕的大小。
有人遇到过这种情况吗?
这是一个屏幕截图(请注意顶部的黑条,这不是我添加的!)。请原谅我模糊了图像,但这是客户的项目,我不能“披露”任何东西。
有趣的部分开始于有时,该栏将不存在,应用程序将看起来像下一个(再次,为模糊而抱歉)。请注意顶部栏不存在...
在仔细检查两个镜头后,您可以看出底部(应该相同)不是。 kindle 正在做奇怪的事情。
有什么想法吗?
资源最初打包为 1024x600,但我们已更改(现在为 580)并假设视口现在为 1024x580,但我想知道是否有人找到更好的方法来处理这种废话? :)
注意:我们在清单中有 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"。什么都不做。
提前致谢。
【问题讨论】:
-
我对 Kindle 问题本身无能为力,但是 resize() 方法可以在任何时间点调用,并且与上下文丢失无关。调用 resume() 表明上下文丢失。
-
@badlogic hi Mario ;) (这里是 Gryzor)。是的,我们正在等待 resize() 但这似乎是一个 Kindle Fire 问题(由其他人报告)。亚马逊在那里做了一些令人讨厌的事情……:谢谢你
标签: android libgdx kindle-fire