如何从类路径加载图片到Android ImageView?

6

我有一个包含外部依赖jar库的Android应用程序。这个外部库包含一些png位图,我想在我的应用程序中的某些ImageView上显示它们。

查看我的应用程序的apk文件,我可以像预期的那样在一个子目录("aq\img")中找到这些图片。

展示一个类路径内的图像(insight the classpath)在ImageView上的最佳方法是什么?

我尝试了这个:

    ImageView imgView01 = (ImageView) findViewById(R.id.imageView1);
    Drawable d = Drawable.createFromPath("aq/img/sample.png");
    imgView01.setImageDrawable(d);

并且这个

    InputStream is = ClassLoader
            .getSystemResourceAsStream("sample.png");
    Bitmap bm = BitmapFactory.decodeStream(is);
    imgView01.setImageBitmap(bm);

但它没有起作用(我并没有真正期望它会这么简单)。图像仍然是空的。

感谢您的帮助!

祝好,Klaus

1个回答

4
PNG 图像不是“系统资源”,因为在 Android 上,系统资源是常规文件系统中的文件。您想要的图像位于 APK 存档文件中。您可以使用 getSystemResourceAsStream 打开一个 InputStream 以读取 APK 存档字节,但除非您自己实现提取文件的逻辑,否则无法访问存档文件内的文件。

只需使用以下代码:

InputStream is = getClass().getClassLoader().getResourceAsStream("aq/img/sample.png");

编辑:请注意,在Android上,传递给getSystemResourceAsStream的名称被视为相对于根目录(/)的文件路径。因为APK文件存储在/data/app中,所以要打开一个用于读取APK文件的InputStream,可以使用ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk"),其中"PACKAGE"是您的应用程序的包名。


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