gpt4 book ai didi

android - Android 2.0.1 WVGA854 中具有意外大小的 BitmapDrawable

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:14 25 4
gpt4 key购买 nike

我想在 Android 2.0.1 中显示存储在 SD 卡中的 480x320 JPEG 文件,具有 WVGA854 皮肤和 240 lcd 密度(摩托罗拉 Droid)。

但是,当我通过 Drawable.createFromPath() 创建 BitmapDrawable 时,生成的 BitmapDrawable 具有以下值:

mBitmapWidth = 320

mBitmapHeight = 213

目标密度 = 160

list 包括以下配置:

<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().getWidth() 和 BitmapDrawable.geBitmap().getWidth()。

另一种方法是直接使用 BitmapFactory 并使用 BitmapFactory.Options.inScaled 关闭重新缩放。此属性仅在 API 级别 4 之后可用,因此如果您想要以 API 级别 3 设备为目标,您可能需要使用反射来检查其存在。

我仍然不明白为什么 SD 卡图像需要这种重新缩放以及这对程序员有何好处。是的,密度为 160 的 320x213 区域(大约)变为密度为 240 的 480x320 区域,但是如果 Drawable.createFromPath() 返回一个密度为 240 的 480x320 可绘制对象到以 240 密度运行的应用程序,这不是更有意义吗?

关于android - Android 2.0.1 WVGA854 中具有意外大小的 BitmapDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1973439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com