私のAndroidアプリケーションのドローアブルフォルダに、解像度が1000x600のjpg画像があります。その画像をこのようにビットマップにロードします
Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
この後、bitMap .getWidth()
1500を返す電話をかけます。どうすればよいでしょうか。そして、画像の正しい幅と高さを取得する方法は?
私のAndroidアプリケーションのドローアブルフォルダに、解像度が1000x600のjpg画像があります。その画像をこのようにビットマップにロードします
Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
この後、bitMap .getWidth()
1500を返す電話をかけます。どうすればよいでしょうか。そして、画像の正しい幅と高さを取得する方法は?
これはおそらく密度が異なるためです。リソースはおそらく中密度フォルダーに保存されていますが、デバイスはhdpiです。中密度は160dpi、高密度は240dpiです。したがって、ビットマップは元のサイズの1.5倍にスケーリングされます。詳細については、複数の画面のドキュメントを参照してください。
リソースが正しい密度で利用できない場合、システムはデフォルトのリソースをロードし、現在の画面の密度に一致するように必要に応じてそれらをスケールアップまたはスケールダウンします。
これを高密度にする場合は、drawableまたはdrawable-mdpiではなくdrawable-hdpiに配置します。
アップデート:
密度を無視したい場合は、drawable-nodpiフォルダーに入れてください。また、同じドキュメントから:
事前スケーリングを回避する最も簡単な方法は、nodpi構成修飾子を使用してリソースをリソースディレクトリに配置することです。例えば:
res/drawable-nodpi/icon.png
システムがこのフォルダーのicon.pngビットマップを使用する場合、現在のデバイス密度に基づいてスケーリングされません。