2010-11-03 73 views
1

我更新了我的版本以針對Android 1.6進行構建,現在我的位圖在高密度屏幕上縮小比例。我不想要這種行爲。我這給一個鏡頭:Android:如何停止縮放圖像的Android 1.6+

http://blog.tomgibara.com/post/190539066/android-unscaled-bitmaps

但圖像依然縮放,那就是除非我將它們設置爲一個特定的高度&寬度。如果我使用wrap_content,則會縮小比例。

我必須使用未縮放的位圖加載器來創建一個繪製了以下這樣一個圖像加載器:

Bitmap bm = UnscaledBitmapLoader.loadFromResource(imageBufferInputStream); 
drawable = new BitmapDrawable(bm); 

這是我後來分配到一個ImageView的,像這樣:

imageView.setImageDrawable(copyBitmapDrawable((BitmapDrawable) drawable)); 

回答

1

使用Drawable包裝位圖是問題所在。 Drawable規模爲Bitmap。而不是使用Drawable,直接使用imageView.setImageBitmap(Bitmap)Bitmap分配給ImageView

0

使用ImageView.ScaleTypeCENTER不變縮尺,所以我想這就是你要找的。

順便說一句,你使用像素或驟降作爲大小單位?使用驟降(密度無關像素)是在多種分辨率下標準化顯示的一種手段。你會發現一些技巧here

+0

我已經試過了,它不起作用。在將其分配給ImageView之前,某些東西正在縮放。 – 2010-11-03 23:29:50

+0

提供一些相關代碼片段(xml,java或whatnot)的機會嗎? – Vuk 2010-11-03 23:55:48

3

爲了在從資源中加載圖像時不縮放圖像(例如,使用BitmapFactory.decodeResource),必須將其定位在res/drawable-nodpi中,而不是通常的drawable,drawable-ldpi等。

+0

我正在從網上下載這些內容。 – 2010-11-05 22:08:31

2

使用的

new BitmapDrawable(this.getResources(), bmp); 

代替

new BitmapDrawable(bmp); 

應該解決的問題。

+0

我剛剛花了一段時間試圖解決這個完全相同的問題,這就是解決它所需要的一切。 Upvoted,因爲這是一個更有用的通用解決方案。 – Zulaxia 2012-01-31 12:18:11