免責事項:これは、Kindle Fireでのみ発生する奇妙な問題です(これまでのところ)。
関係するテクノロジー:Android SDK、Eclipse、LibGDX。
LibGDXで実行されている比較的単純なアプリがあります。LibGDXが機能する方法は、Create()(1回)を呼び出してからRender()を可能な限り何度も呼び出すOpenGLスレッドを使用することです(レンダリングを実行できるように…)。
したがって、デバイスを初期化すると、「Create()」メソッドが呼び出され、OpenGLサーフェスが初期化されると(これはすべて自動的に行われます)、Render()が呼び出され始めます。
OpenGLコンテキストが失われたり、破棄されたりした場合、Resize(width、height)メソッドがLibGDXによって呼び出されます。
ここのところ。とても良い。
今、私はKindle Fireで奇妙な問題に遭遇しました。そこでは、物事が数ピクセルずれているか、「カット」されているように見えました。Kindle Fireの画面下部(20ピクセル)には、非表示にしたりスキップしたりできない「ソフトバー」があります。これは、デバイスに物理的なボタンがないため、「大丈夫」です。このソフトバーに触れて、戻ったり、家に帰ったりするために、より大きなバーを取得することが期待されています。Amazonによると、このバーは削除できません。(100%明確ではありませんが、Amazonのルールに違反していない方法を見つけた人は誰もいません)。私が見た中でそれを削除する唯一のアプリは、Amazonのクラウドからのみストリーミングされたビデオ用のAmazonビデオプレーヤーです。ご覧のとおり、そのバーを「永続的に」非表示にする方法はないようです。
したがって、バーがそこにある場合、実際の画面の状態はハードウェア解像度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
そのため、画面は「ある時点で」KindleFireによって「サイズ変更」されました。
誰かがこのようなものに出くわしたことがありますか?
これはスクリーンショットです(上部の黒いバーに注意してください。これは私が追加したものではありません!)。画像がぼやけていることをお許しください。これはクライアントのプロジェクトであり、何も「開示」できません。
楽しい部分は、時々、バーがそこになく、アプリが次のように見えるときに始まります(繰り返しますが、ぼやけてください)。トップバーがないことに注意してください…</p>
両方のショットを詳しく調べると、下部(同じである必要があります)はそうではないことがわかります。Kindleは奇妙なことをしています。
何か案は?
アセットは元々1024x600としてパックされていましたが、これを変更し(現在は580)、ビューポートは1024x580であると想定しますが、このナンセンスに対処するためのより良い方法を誰かが見つけたかどうか疑問に思いました。:)
注:マニフェストにはandroid:theme = "@ android:style/Theme.NoTitleBar.Fullscreen"があります。何もしません。
前もって感謝します。