2012-12-04 132 views
2

我初始化绘制对象是这样的:不正确BitmapDrawable尺寸

Drawable drawable = new BitmapDrawable(bitmap); 

位图的尺寸为50×77(与调试器证实,此值在字段mWidth和mHeight设置)。

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

予检查的可绘制的变量只是这一行之后,这些值是:

mBitmapWidth = 33

mBitmapHeight = 51

而且

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

也返回33×51。

但drawable还有位图fi字段mBitmap,它具有正确的大小50 x 77.那么,为什么drawable被初始化为33 x 51?

+1

注意是不是某种程度上与屏幕像素密度? – fiddler

回答

3

Bitmap的尺寸是在像素Drawable的尺寸以DP(密度依赖性像素)。

在你的情况,显示器的密度可能是类似1.5:

三十三分之五十○=51分之77= 1.5

注意,可绘制的尺寸被更新,当设置密度通过setTargetDensity方法。

+0

Hm ok,但为什么用'getResources()。getDrawable(R.drawable.mydrawable)'实例化的Drawable的尺寸是以像素为单位的? (我正因为这种不匹配而遇到这个问题)。关于它在文档中也没有什么... – Ixx

+0

这是一个很好的问题...我注意到,通过'setTargetDensity'设置密度时,可绘制尺寸被更新,所以我猜'getResources()。getDrawable'不会设置密度 – fiddler

+0

好的。你们俩都是对的,这里调整尺寸'private void computeBitmapSize(){ mBitmapWidth = mBitmap.getScaledWidth(mTargetDensity); mBitmapHeight = mBitmap.getScaledHeight(mTargetDensity); ',谢谢。 – Ixx