我有一个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);
但它不起作用(我真的不希望它那么简单)。 图像仍然是空的。
感谢您的帮助!
问候克劳斯
答案 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”是您应用的包。