如何从类路径加载Android ImageView的图像?

时间:2011-01-31 16:59:07

标签: android

我有一个Android应用程序,其中包含一个外部dependend jar库。这个外部库包含一些png-bitmaps,我想在我的应用程序中的某些ImageView上显示它。

查看我的应用程序的apk文件,我可以按预期在子目录(“aq \ img”)中找到图像。

在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);

但它不起作用(我真的不希望它那么简单)。 图像仍然是空的。

感谢您的帮助!

问候克劳斯

1 个答案:

答案 0 :(得分:4)

PNG图像不是“系统资源”,因为Android上的系统资源是常规文件系统中的文件。您想要的图像位于APK存档中。您可以使用getSystemResourceAsStream打开InputStream来读取APK档案的字节,但不能打开档案中的文件,除非您实施了自行提取文件的逻辑。

只需使用:

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

编辑:请注意,在Android上,传递给getSystemResourceAsStream的名称被视为相对于root(/)的文件路径。由于APK存储在/data/app中,然后要打开InputStream来阅读APK,您可以使用ClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk"),其中“PACKAGE”是您应用的包。