アンドロイド2.0.1 WVGA854の予想外のサイズのBitmapDrawable
質問
私はWVGA854の皮膚と240 LCD密度(モトローラドロイド)とのAndroid 2.0.1でSDカードに保存されている480x320 JPEGファイルを表示したいです。
しかし、私はDrawable.createFromPathスルーBitmapDrawableを(作成)し、得られたBitmapDrawableは以下の値を有する
mBitmapWidth = 320
mBitmapHeight = 213
mTargetDensity = 160
マニフェストは、以下の構成を含みます
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
anyDensity="true"
/>
どうやらAndroidのは、ビットマップのサイズを変更しています。この動作の原因は何だろうか?私はそれを避けることができる方法は?
事前にありがとうございます。
解決
Drawable.createFromPath()は、その実装にBitmapFactoryを使用する便利な方法です。これは、APIレベル4以降のAndroidは、自動的にすべての描画可能ビットマップや他のリソースを再スケーリングと思われます。
ビットマップ描画可能に描画可能にキャストしBitmapDrawable.geBitmapを使用する必要がありますビットマップ1の元のサイズを取得するには()。のgetWidth()とBitmapDrawable.geBitmap()。のgetWidth()。
の代替直接BitmapFactoryを使用しBitmapFactory.Options.inScaledとオフ再スケーリング有効にすることができます。このプロパティは、あなたがターゲットAPIレベル3のデバイスにしたいそうだとすれば、唯一のAPIレベル4以降で使用可能です、あなたはその存在を確認するためにリフレクションを使用する場合があります。
そのような再スケーリングをSDカード内の画像とどのようにどのような方法で、この利点プログラマのために必要とされる理由私はまだ理解していません。はい、160密度の320x213の領域は(約)240密度の480x320の領域になりますが、Drawable.createFromPath()が240密度で実行中のアプリケーションに240密度で480x320描画可能に返された場合はどうなりますか?それはより多くの意味がありませんP>