下载hdpi,mdpi和ldpi drawables并使用它们

时间:2012-11-25 16:48:51

标签: android android-layout

是否可以在运行时从给定的URL加载我的drawables for hdpi,mdpi和ldpi并使用它们?

如果没有,我怎样才能克服这种拒绝问题?

3 个答案:

答案 0 :(得分:3)

根据屏幕密度,您可以设置图片网址

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();
}

答案 1 :(得分: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

答案 2 :(得分:0)

如果你真的真的想要,你可以get the screen density at runtimedownload a bitmap取决于结果。但是,这是一种支持多屏幕密度的非常低效的方法,应该避免使用。

如果您需要适当调整必须下载的图像(而不是每次运行时都会出现的图像),请查看BitmapDrawable类。