21

私のAndroidアプリケーションのドローアブルフォルダに、解像度が1000x600のjpg画像があります。その画像をこのようにビットマップにロードします

 Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);

この後、bitMap .getWidth()1500を返す電話をかけます。どうすればよいでしょうか。そして、画像の正しい幅と高さを取得する方法は?

4

1 に答える 1

43

これはおそらく密度が異なるためです。リソースはおそらく中密度フォルダーに保存されていますが、デバイスはhdpiです。中密度は160dpi、高密度は240dpiです。したがって、ビットマップは元のサイズの1.5倍にスケーリングされます。詳細については、複数の画面のドキュメントを参照してください。

リソースが正しい密度で利用できない場合、システムはデフォルトのリソースをロードし、現在の画面の密度に一致するように必要に応じてそれらをスケールアップまたはスケールダウンします。

これを高密度にする場合は、drawableまたはdrawable-mdpiではなくdrawable-hdpiに配置します。

アップデート:

密度を無視したい場合は、drawable-nodpiフォルダーに入れてください。また、同じドキュメントから:

事前スケーリングを回避する最も簡単な方法は、nodpi構成修飾子を使用してリソースをリソースディレクトリに配置することです。例えば:

res/drawable-nodpi/icon.png

システムがこのフォルダーのicon.pngビットマップを使用する場合、現在のデバイス密度に基づいてスケーリングされません。

于 2011-11-19T23:54:35.033 に答える