【发布时间】:2012-05-07 00:59:38
【问题描述】:
我想在具有 WVGA854 皮肤和 240 lcd 密度(摩托罗拉 Droid)的 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 正在调整位图的大小。这种行为的原因可能是什么?如何避免?
提前谢谢你。
【问题讨论】:
-
谷歌搜索后,我发现在更高版本的 Android 中,BitmapFactory 根据屏幕密度缩放位图。 Drawable.createFromPath() 是一种在其实现中使用 BitmapFactory 的便捷方法。 BitmapFactory 似乎有一个选项可以关闭此缩放(inScaled = false),但其 API 级别为 4。解决方案可能需要反射才能在较低的 API 级别中工作。如果这会导致解决方案,将进行更多实验并发布答案。