2

我正在像这样初始化一个 Drawable:

Drawable drawable = new BitmapDrawable(bitmap);

位图的尺寸为 50 x 77(与调试器确认,此值在字段 mWidth 和 mHeight 中设置)。

但是我的drawable初始化大小为33 x 51,这是为什么呢?

我在这一行之后检查了可绘制变量,值是:

mBitmapWidth = 33

mBitmapHeight = 51

drawable.getIntrinsicWidth();
drawable.getIntrinsicHeight();

也返回 33 x 51。

但是drawable也有位图字段mBitmap,它有正确的大小50 x 77。那么为什么drawable被初始化为33 x 51呢?

4

2 回答 2

3

的尺寸Bitmap像素为单位,而 的尺寸Drawabledp(与密度相关的像素)为单位。

在您的情况下,显示器的密度可能类似于 1.5:

50 / 33 = 77 / 51 = 1.5

请注意,通过setTargetDensity方法设置密度时,可绘制尺寸会更新。

于 2012-12-04T16:10:18.470 回答
2

BitmapDrawable将位图的尺寸调整为设备的密度。

请注意,您使用的构造函数已弃用,文档建议使用BitmapDrawable(Resources res, Bitmap bitmap)

于 2012-12-04T16:10:36.853 回答