2012-11-25 36 views
1

是否可以在運行時從給定URL加載hdpi,mdpi和ldpi的drawables並使用它們?下載hdpi,mdpi和ldpi drawables並使用它們

如果不是,我該如何克服這個denisity問題?

+1

您有什麼方式的「密度問題」? – Ernir

+0

我只是想獲得支持多個屏幕denisity http://developer.android.com/guide/practices/screens_support.html#support – ohadinho

+0

這個鏈接包含這種情況下的最佳實踐 - 提供不同密度的drawables把它們放在res /子文件夾中,名爲drawable- [density],其中[density]是ldpi,mdpi,hdpi或xhdpi。 – Ernir

回答

3

基於屏幕密度您可以設置圖像的URL,

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
switch(metrics.densityDpi){ 
    case DisplayMetrics.DENSITY_LOW: 
       url = "your_ldpi_url"; 
       break; 
    case DisplayMetrics.DENSITY_MEDIUM: 
       url = "your_mdpi_url"; 
       break; 
    case DisplayMetrics.DENSITY_HIGH: 
       url = "your_hdpi_url"; 
       break; 
} 

而且你可以獲取該圖像和使用,

try { 
    InputStream is = (InputStream) this.fetch(url); 
    image = Drawable.createFromStream(is,"src"); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
0

這是不可能的。您在建立項目後無法做到這一點。 使用此:

res/drawable-ldpi/my_icon.png  // bitmap for low density 
res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
相關問題