2014-12-03 71 views
3

我在res/drawable文件夾(不是drawable-hdpi,drawable-ldpi等文件夾)中有1280x720px圖像。但在運行時,大小爲2560x1440像素。這怎麼可能? Android會調整可繪製文件夾中的圖像嗎?「drawable」文件夾中的圖像會自動調整大小?

下面是代碼:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.start_image_left); 
    int h = bitmap.getHeight(), w = bitmap.getWidth(); 

我在摩托羅拉Moto G的第二代測試此。

+1

我認爲確保不縮放的唯一方法是使用drawable-nodpi文件夾。 – zgc7009 2014-12-03 19:36:27

+0

@ zgc7009:「你如何加載你的圖像」是什麼意思?我只是把它放在資源中,後來我把它解決了。何時需要擴展? – 2014-12-03 19:37:04

+0

我正在查看手機上的問題,並未在您的問題中看到您的代碼。我以爲你把它加載到視圖中,這會導致縮放。 Android會在可繪製文件夾中縮放圖像,我不確定如何處理縮放比例,但是它可以縮放它們。保證不縮放(我認爲)的唯一方法是將文件放入nodpi限定的可繪製文件夾中。 – zgc7009 2014-12-03 19:40:36

回答

7

確實沒有理由你應該永遠把位圖到根目錄drawable。它通常應該只用於XML可繪製。 drawable目錄中的位圖基本上將被處理,就好像它們在drawable-mdpi(其他密度按比例放大)一樣。

如果您的目標是在所有密度上具有相同像素大小的位圖圖像,則需要將其放入drawable-nodpi。這會導致它不被縮放。

+2

如果你不想要(爲什麼),你正在使用'BitmapFactory.decodeResource';你也可以使用'BitmapFactory.Options#inScaled = false;'來禁止縮放 – Lovis 2014-12-03 19:56:44

0

你是對的,Android會根據當前設備配置自動縮放圖像。但是,如果你不希望這樣的行爲,你可以創建一個位圖資源文件,放在drawable文件夾並將其指向你要使用這樣的

<bitmap xmlns:android="http://schemas.android.com/apk/res/android android:src="@drawable/yourDrawableHere" android:gravity="center" />

被拉伸通過指定重心,機器人不管怎樣,都不會縮放圖像。

要使用此位圖資源文件,在你的代碼,檢索像這樣

Drawable drawable = getResources().getDrawable(R.drawable.yourBitmaoResourceFileName);

+0

你可以把它放到'drawable-nodpi'文件夾中,而不是使用hack – Lovis 2014-12-03 19:55:18

+1

。是的,因爲像你的答案已經在上面說過了,所以我只是想提供另一種解決方法。 – Biu 2014-12-03 19:58:35

相關問題