【问题标题】:How to load image for Android ImageView from classpath?如何从类路径加载 Android ImageView 的图像?
【发布时间】:2011-01-31 16:59:07
【问题描述】:

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

查看我的应用程序的 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);

但它不起作用(我真的没想到它会这么简单)。 图像仍然是空的。

感谢您的帮助!

问候克劳斯

【问题讨论】:

    标签: android


    【解决方案1】:

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

    只需使用这个:

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 2020-10-27
      • 2016-10-01
      相关资源
      最近更新 更多