我想在Android 2.0.1中显示存储在SD卡中的480x320 JPEG文件,其中包含WVGA854皮肤和240 lcd密度(Motorola Droid).
但是,当我通过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"
/>
Run Code Online (Sandbox Code Playgroud)
显然Android正在调整位图的大小.可能是这种行为的原因是什么?我怎么能避免呢?
先感谢您.
Drawable.createFromPath()是一种在其实现中使用BitmapFactory的便捷方法.似乎自API级别4 Android自动重新调整所有位图drawables和其他资源.
要获得位图的原始大小,需要将drawable转换为可绘制的位图,并使用BitmapDrawable.geBitmap().getWidth()和BitmapDrawable.geBitmap().getWidth().
另一种方法是直接使用BitmapFactory并使用BitmapFactory.Options.inScaled关闭重新缩放.此属性仅在API级别4之后可用,因此,如果您要定位API级别3设备,则可能需要使用反射来检查其存在.
我仍然不明白为什么SD卡图像需要这种重新缩放以及它如何以任何方式使程序员受益.是的,160密度的320x213区域变为(大约)240密度的480x320区域,但如果Drawable.createFromPath()将240x密度的480x320可绘制返回到以240密度运行的应用程序,那么它是否更有意义?
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |