2016-03-04 56 views
0

我爲我的android應用準備了圖片。由於設備尺寸不同,我將具有不同尺寸的圖像放入可繪製的文件夾中。現在我想從url獲取這些內容。我想要獲得最適合設備尺寸的圖像。我應該怎麼做?有什麼建議嗎?來自不同大小的網址的Android圖片

+0

把圖像不同像www.example.com/thumb/1.jpg, 再次www.example.com/normal/1.jpg,下一個www.example.com/small/1.jpg –

+0

是的,我會這樣做。但是,我怎麼知道哪個圖像是正確的? –

+0

你製作的圖像具有你想要的特定尺寸... –

回答

1

從API,您需要發送URI的所有尺寸的圖像,然後在android系統,你需要下載一個適合該設備的DPI值的圖像,該代碼是這樣的:

你可以得到設備的這樣

float density = Resources.getSystem().getDisplayMetrics().density * 160f; 

float density = context.getResources().getDisplayMetrics().density * 160f; 

密度值。然後你做一系列if else語句,並從服務器下載相應的圖像。

if (density == DisplayMetrics.DENSITY_HIGH) { 
    return downloadLargeImage(); 
} else if (density == DisplayMetrics.DENSITY_MEDIUM) { 
    return downloadMediumImage(); 
} else if (density == DisplayMetrics.DENSITY_LOW) { 
    return downloadSmallImage(); 
} else { 
    return downloadMediumImage(); 
} 

有哪些可以運行在的if else循環更密度值,我通常只是採取的3個案例

或者有過另一種方式照顧,你可以做的就是發送設備密度值以及圖像的獲取請求,並在服務器上執行此操作,並返回相應的圖像文件。

這兩種方法都是有效的相同,但第二個方法是語義錯誤,您的服務器不應該是一個決定要發送的圖像,而是你的設備確定哪些圖像尺寸下載

+0

感謝您的回答。它幫助我找到答案。但你並不完全正確。你正在找到浮動的密度。但它不會等於DisplayMetrics.DENSITY_HIGHT或DisplayMetrics.DENSITY_MEDIUM或DisplayMetrics.DENSITY_LOW等等。 我研究並找到了如何找到int密度。所以,我應該找到像這樣的密度:DisplayMetrics metrics = getResources()。getDisplayMetrics(); int density =(int)(metrics.density * 160f); –

+0

@MeryemUysal我剛剛修好了你現在可以標記 – Bhargav

+0

好,再次感謝 –

相關問題