Android - 为另一个drawable文件夹获取图片

3
对于我的应用程序,我需要有相同的图像,其大小不同,分别为2或3个尺寸。
或者我想知道是否可以从另一个drawable文件夹中获取可用的drawables(即:具有不同分辨率的相同图像)。否则,我应该将相同的图像多次复制到每个drawable文件夹中(mdpi、hdpi、xhdpi)。
例如:我在hdpi文件夹中有drawable ima,我需要较小和较大的相同图像,在mdpi和xhdpi文件夹中是可用的=>如何获得它们,或者我必须将所需的图像复制到hdpi文件夹中?
抱歉我的英语不好,谢谢您的帮助。
3个回答

0

可以尝试以编程方式实现如下...

InputStream is=this.getResources().getAssets().open("drawable.png");

is=this.getResources().openRawResource(R.raw.myDrawable); 

或者

如果你想使用路径,请尝试以下方法:

private void showImage() {
    String uri = "drawable/icon";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}

但建议使用 R 引用:

int imageResource = R.drawable.icon; 

Drawable image = getResources().getDrawable(imageResource);

源代码

drawable-hdpi drawable-mdpi,drawable-ldpi 只是不同的文件夹,用于根据屏幕分辨率区分图像质量。其想法是将相同的图像放入具有不同分辨率的不同文件夹中...


事实上,我理解drawable文件夹的含义。我只是想知道是否可以像这样操作 => int imageResource = R.drawable-hdpi.icon; - sagat06
将您想要使用的图像放入drawable.hdpi中。 - Rahul Baradia
例如,我想使用mdpi设备访问drawable.hdpi...这就是问题所在。实际上,我在每个drawable文件夹中都有一个名为ima1的图像,并且我必须将它从drawable.hdpi复制并重命名为drawable.mdpi以便在mdpi设备上使用它。 - sagat06

0

名为mdpi,hdpi,xhdpi的文件夹是为随机设备而设计的,我的意思是它们适用于具有随机屏幕的设备。从屏幕大小考虑,Android设备有4种类型:小型、普通、大型、超大型,这就是为什么有这些文件夹,为什么您不想更改您的图片名称呢?如果这没有帮助,您能否更明确地解释您的问题?我不确定我是否正常理解了问题 :)

敬礼 Hayk Nahapetyan


对不起,我不知道什么是“pis names”。 - sagat06

0

我不确定我完全理解你的意思,但对我来说,你应该逻辑地组织你的可绘制图形,并将它们放到资产文件夹而不是资源文件夹中。然后你可以随心所欲地使用它们。

此外,我认为没有办法从另一个屏幕访问资源。

希望我正确地理解了你的帖子。

编辑
API Level 15 引入了 Resources.getDrawableForDensity() 方法。据我所知,旧版本无法启动该方法。


我想你明白我想知道的内容。所以,无法从另一个屏幕(=另一个可绘制文件夹)访问资源吗?我想这样做是为了限制我的应用程序中的可绘制对象,但我认为我会像现在一样继续做,将我需要的图像放在每个可绘制文件夹中,这样会更简单。谢谢。 - sagat06
我99.99%确定这是不可能的,但我没有尝试过。我这么说的原因是你只能通过R.java访问资源,并且Android会根据资源修饰符(屏幕大小、语言环境或其他)为你解析资源。我不知道你的应用程序是什么,但如果你有很多图片,在drawable-xxx文件夹中使用多组图片将显著增加APK的大小。 - Viacheslav
我理解你的意思,我会获取有关资产文件夹的信息。但是我已经看到了后果,我将不得不使用不同的布局文件夹来使用正确的图像(它们与drawable文件夹中的名称不同)。 - sagat06

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接