5

画面全体をカバーするカスタム ImageView があります。画像は、drawable-hdpi、drawable-xhdpi、drawable-sw600dp などのドローアブル フォルダーの 1 つから取得され、密度バケットごとに個別の画像があります。

これまでのところ、アプリケーションは xhdpi および hdpi デバイスで正常に動作しますが、Nexus 7 でテストすると問題が発生します。sw600dp フォルダーに保存されている画像のサイズは 1600x1600 で、画面に直接描画するのに十分なはずです (スケーリングなし)。 )、ただし、アプリを実行すると、画面が完全に空白になり、次の警告が表示されます。

03-04 16:25:46.338: W/OpenGLRenderer(25457): ビットマップが大きすぎてテクスチャにアップロードできません (2130x2130、最大 = 2048x2048)

何らかの理由で、1600x1600 ビットマップは 2130x2130 にスケーリングされますが、手動でスケーリングしたことはありません (マトリックス ポストスケールまたは scaleX/scaleY は適用されません)。

なぜこれが起こっているのでしょうか?これが発生する理由の説明とともに解決策を提供してください。

4

2 に答える 2

7

Nexus 7 は tvdpi であるため、すべての画像を元の値の 1.33 にスケーリングします。したがって、1600 は (1600*1.33)= ~2130 になります。sw600dp フォルダからは表示されません。

詳細情報:- http://developer.android.com/guide/practices/screens_support.html

他のすべての 7 インチ タブレットに使用しているのと同じ画像を使用できます (つまり、解像度 1024*600 の)。

于 2013-04-22T15:56:19.537 に答える
0

あなたが得ているエラーについていくつかの情報を共有したい..

Romain Guy (Android フレームワーク エンジニア)によると:

ハードウェア アクセラレーションを使用する場合、テクスチャのサイズに制限があります。ビットマップをレンダリングするときは、最初に OpenGL テクスチャにアップロードする必要があります。ビットマップがたまたま Xoom の最大テクスチャ サイズ (2048x2048) より大きくなっています。より小さいビットマップを使用するか、複数のビットマップに分割する必要があります。

その他の SO リンクが役立つ場合があります :ここをクリック 1ここをクリック 2

Git:ここをクリック

更新: この回答は、エラーが発生している理由のみを示しています (テクスチャ サイズの制限のため)。申し訳ありませんが、1600x1600 ビットマップが 2130x2130 にスケーリングされる理由についての完全な回答ではありません!!

于 2013-03-11T06:37:01.230 に答える