【问题标题】:Loading an Android Resource into a WebView将 Android 资源加载到 WebView
【发布时间】:2011-06-18 19:22:29
【问题描述】:

我有一个显示漫画书的 Android 应用。为了使用内置的缩放控件,我将图片加载到 WebView 中,如下所示:

webView.loadUrl("file:///android_asset/page1.jpg");

这工作得很好,但是,由于图像位于资产文件夹中,它们没有被压缩,这使得我的 .apk 变得巨大。我想知道如何使用文件路径引用资源文件(来自res/drawable 文件夹),就像我在上面对资产所做的那样。有谁知道那条路会是什么样子?我尝试过"file:///res/drawable/pagetitle.jpg" 之类的方法,但没有成功。感谢您的帮助。


更新:

我发现"file:///android_res/drawable/page1.jpg" 是我正在寻找的路径。

【问题讨论】:

  • 我认为没有其他直接的方法。但是你可以尝试使用loadData 方法。
  • 我只是不明白你对进一步压缩 jpg 图像的想法。它们已经被压缩了!另外,Android 构建工具也不会压缩 res 文件夹中的图像,因为这些工具很聪明,避免了两次压缩 jpg/png 图像,这没有任何意义。
  • @PointerNull PNG 重新压缩很有意义,请参阅addyosmani.com/blog/image-optimization-tools - 在任何情况下都应避免再次压缩有损 JPG,除非将人工制品视为现代艺术......
  • @Philzen:我们说的是 JPG 或 PNG 的 ZIP 压缩,因为压缩后的 JPG 或 PNG 与原始文件大小相同(+-1%),这是没有用的。您的文章讨论了其他内容。

标签: android android-webview


【解决方案1】:

来自this site

使用资源id,格式为:

"android.resource://[package]/[res id]"

Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/" + R.raw.myvideo);

或者,使用资源子目录(类型)和资源名称(不带扩展名的文件名),格式为:

"android.resource://[package]/[res type]/[res name]"

Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/raw/myvideo");

【讨论】:

  • 我找到了一个不同的解决方案(请参阅更新),我还没有尝试过,但感谢您的回复。
  • android.resource://com.androidbook.samplevideo/" + R.raw.myvideowebView.loadUrl 一起使用似乎不起作用。
  • 使用file:///android_res/raw/myvideo.mp4 浏览网页。
  • 这是公认的答案,但我无法看到它是如何回答这个问题的。问题询问“如何使用文件路径引用资源文件......”,但这个答案给出了非fileUri。该问题询问有关加载资源的问题,并显示了webView.loadUrl(String)的使用,但是此答案没有说明如何加载资源,并且Uri不能直接传递给loadUrl()
【解决方案2】:

我还必须使用loadDataWithBaseURL 而不是简单的loadData 才能使file:///android_res/drawable/page1.jpg 工作。

【讨论】:

  • 这会利用其他限定符作为 -xhdpi 等吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 2012-02-02
  • 2015-02-15
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多