2011-07-24 35 views
7

我已經在res/drawable中放置了一些位圖。我不希望Android自動調整位圖大小

在我通過BitmapFactory.decodeResource()加載位圖後,我發現它們根據密度自動調整大小。

這不是我想要的。 我希望他們保持原來的大小(像素大小)。

我該怎麼辦?

+1

第二輪goggling後,我發現有一個名爲「drawable-nodpi」的文件夾。因此,問題似乎解決了。 – Sunny

回答

1

如果您在hdpi,ldpi和mdpi中保存了單獨的圖像,並且您正在使用資源來訪問這些圖像,那麼您不會做太多工作。

如果您只是想要使用一個圖像,請將其保存在mdpi文件夾中,並刪除其中的一個。

-1

將您的圖像放在一個名爲「drawable」的文件夾中(沒有ldpi,mdpi,hdpi等。後綴)。你可能需要自己創建它(例如Eclipse,不會自動創建它)。

之後,從其他可繪製文件夾中刪除繪圖資源。

+0

我已將這些位圖放置在res/drawable中 – Sunny

+1

可繪製文件夾的使用方式與drawable-mdpi/160dpi /相同。 – Kostadin

+0

這個評論是完全錯誤的。正確答案是將inScaled設置爲false或其他答案中概述的-nodpi文件夾。 – RichieHH

17

正如在另一個問題中所說,使用drawable-nodpi文件夾將阻止android調整圖片大小。

此外,如果要爲hdpi和ldpi格式創建多個版本的圖像,但不希望系統調整它們的大小(例如,保留兩個分辨率的權力),則可以使用以下代碼同時加載你的bitmpap:

// ask the bitmap factory not to scale the loaded bitmaps 
BitmapFactory.Options opts = new BitmapFactory.Options(); 
opts.inScaled = false; 

// load the bitmap 
Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.id.mybmp, opts); 
+1

您需要將選項添加到加載isntruction:位圖位圖= BitmapFactory.decodeResource(ctx.getResources(),R.id.mybmp,opts); –