2012-12-04 186 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