私は新しいAndroidプロジェクトを作成し、ファイルをres/drawable
フォルダに入れました。 file
コマンドによって報告されるように、その統計は、このようなものです:(。サイズ1000x846)Androidでjpgリソースを読み込むと、画像のサイズが変わるのはなぜですか?
map.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 200x200, segment length 16, baseline, precision 8, 1000x846, frames 3
プロジェクトは分SDKのバージョン21と24
は、私は、ファイルを開くターゲットSDKのバージョンを使用していますこのような私のクラス(ビューサブクラスである)(Kotlin)に:エミュレータで実行
mBitmap = BitmapFactory.decodeResource(resources, R.drawable.map)
Log.i(TAG, "Our map's size is " + mBitmap.width + "x" + mBitmap.height)
(480X800 hdpi、APIレベル25)が1500年として、ビットマップのサイズを報告しますx1269、またはファイルのサイズから1.5倍にスケールされます。
デバイス(Samsung Galaxy A3、APIレベル24)で実行すると、2000x1692のサイズ、または2xの縮尺でレポートされます。
どうしてですか?読み込まれたビットマップのサイズにはどのようなものがありますか?
(ちなみに、resources.getDrawable()
とDrawable.getIntrinsicWidth()
を経由して、リソースを読み取る別の方法は、同じサイズを報告します。)
ありがとうございます。いいえ、接尾辞のないバージョンは 'mdpi'の同義語で、スケーリングされていることは明白ではありませんでした。私は、「デフォルト」の資源源としての役割は、「触れない」ことを意味するとも考えました。 – Arry
@Arry:いいえ、申し訳ありません。理由は、ドロアブル密度の概念がAndroid 1.5または1.6まで追加されていないためです。 Android 1.0と1.1では、すべてのドロウアブルは 'res/drawable /'にありました。後方互換性のために、元のAndroidデバイスで使用されていた密度の同義語として 'res/drawable /'を設定します: 'mdpi'。このルールは、これらの年の間、下位互換性を維持するために残っています。Googleではこれについて多くのことを話していませんし、 'res/drawable /'が汎用のものであるという印象を与えるAndroidスタジオのテンプレートでは愚かなことをしています。 – CommonsWare