是否可以在運行時從給定URL加載hdpi,mdpi和ldpi的drawables並使用它們?下載hdpi,mdpi和ldpi drawables並使用它們
如果不是,我該如何克服這個denisity問題?
是否可以在運行時從給定URL加載hdpi,mdpi和ldpi的drawables並使用它們?下載hdpi,mdpi和ldpi drawables並使用它們
如果不是,我該如何克服這個denisity問題?
基於屏幕密度您可以設置圖像的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();
}
這是不可能的。您在建立項目後無法做到這一點。 使用此:
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
如果你真的想,你可以get the screen density at runtime和download a bitmap根據結果。但是,這是支持多種屏幕密度的非常低效的方式,應該避免。
如果您需要適當地調整你必須下載(而不是一個,這將是目前在每次運行時)的圖像,看看在BitmapDrawable類。
您有什麼方式的「密度問題」? – Ernir
我只是想獲得支持多個屏幕denisity http://developer.android.com/guide/practices/screens_support.html#support – ohadinho
這個鏈接包含這種情況下的最佳實踐 - 提供不同密度的drawables把它們放在res /子文件夾中,名爲drawable- [density],其中[density]是ldpi,mdpi,hdpi或xhdpi。 – Ernir