我正在初始化这样的Drawable:
Drawable drawable = new BitmapDrawable(bitmap);
位图的尺寸为50 x 77(使用调试器确认,此值在mWidth和mHeight字段中设置。)
但是我的drawable初始化大小为33 x 51,为什么会这样?
我在这一行之后检查了drawable变量,值为:
mBitmapWidth = 33
mBitmapHeight = 51
和
drawable.getIntrinsicWidth();
drawable.getIntrinsicHeight();
也会返回33 x 51。
但是drawable也有位图字段mBitmap,它具有正确的大小50 x 77.那么为什么drawable被初始化为33 x 51?
答案 0 :(得分:3)
Bitmap
的尺寸为像素,而Drawable
的尺寸为 dp (密度相关像素)。
在您的情况下,显示器的密度可能类似于1.5:
50/33 = 77/51 = 1.5
请注意,通过setTargetDensity
方法设置密度时,会更新可绘制尺寸。
答案 1 :(得分:2)
BitmapDrawable
会将您的位图尺寸调整为您设备的密度。
请注意,您使用的构造函数已弃用,文档建议使用BitmapDrawable(Resources res, Bitmap bitmap)