Android:从特定的-dpi文件夹访问drawable?

时间:2012-08-28 18:32:09

标签: android resources drawable

我有两个可绘制的文件夹:drawable-mdpi和drawable-ldpi

我想保留这种结构(即我不想将我的图像移动到/ assets),因此Android会根据设备密度自动选择合适的图片,但有时我需要访问更小的设备上更大的可绘制版本。

有没有办法从代码中访问drawable-ldpi文件夹?我认为以下可能是答案,但它不起作用:

    Uri path = Uri.parse("android.resource://com.example.test/res/drawable-ldpi/icon");
    imageview.setImageURI(path); //assume imageview is already initialized etc.

我收到一个java.io.FileNotFoundException(没有这样的文件或目录)警告(它没有崩溃,但它也没有加载)。

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:2)

可能没什么帮助,但有Resources.getDrawableForDensity(),但这是针对API 15: - (

答案 1 :(得分:0)

通常情况下,如果您需要使用HDPI版本,请仅保留图像的HDPI版本,较低密度的手机将自动使用HDPI drawable,因为它没有选择(即具有该可绘制名称的较低分辨率图像不存在)。

如果你真的需要在hdpi和mdpi版本之间切换,我会建议使用不同的文件名并以编程方式进行交换,或者显示/隐藏XML元素,如果你喜欢这样做......但这似乎有点笨拙。

答案 2 :(得分:-1)

ImageView image = (ImageView)findViewById(R.id.imageView);
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.abc);
image.setImageBitmap(bm);

尝试阅读THIS LINK以了解有关hdpi和mdpi概念的更多研究