是否在 webview 中加载图像?

Posted

技术标签:

【中文标题】是否在 webview 中加载图像?【英文标题】:Image load in webview or not? 【发布时间】:2013-11-26 01:57:32 【问题描述】:

我正在使用 webview 来显示图像。我使用了 webview.loadUrl("imagepath");这些代码显示图像但 webview 无法加载图像然后我想在 webview 中显示我的默认图像。

【问题讨论】:

【参考方案1】:

您必须在图像路径前添加file:///

你尝试过类似的东西

// Exemple from asset folder
webview.loadUrl("file:///android_asset/mu_image.jpg");
 // From external storage
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = "file://"+ base + "/YOUR_FILE.jpg";
webview.loadUrl(base);

编辑(理解问题后...)

你必须检查你的网络文件是否存在

public static boolean exists(String URLName)
try 
  HttpURLConnection.setFollowRedirects(false);
  // note : you may also need
  //        HttpURLConnection.setInstanceFollowRedirects(false)
  HttpURLConnection con =
     (HttpURLConnection) new URL(URLName).openConnection();
  con.setRequestMethod("HEAD");
  return (con.getResponseCode() == HttpURLConnection.HTTP_OK);

catch (Exception e) 
   e.printStackTrace();
   return false;

  

然后有 2 个选择: - 文件存在,显示它 - 或者,显示您的默认图像

来源:Check if file exists on remote server using its URL

【讨论】:

图片路径如upload/student/image1.png。我只想在 webview 中不显示错误消息(如网页不可用),而不是加载学生的默认图像(如空白图像)。 你的路径必须是 imagePath = "file://"+ base + "/upload/student/image1.png";我不明白你想要什么。如果没有什么可显示的,是不是要显示一些东西? 如果没有可显示的内容,则显示默认图像。图片不在服务器上图片所在的设备中。 非常感谢 azerto00。【参考方案2】:

在 web 视图中加载图像不是一个好习惯。

解决方案是使用某种图像加载器,最适合您的情况是 VOLLEY。它提供了比任何其他图像加载器更好的缓存和图像加载功能。

这里是link。

【讨论】:

还有github.com/nostra13/Android-Universal-Image-Loader 是一个很好很简单的库 VOLLEY 更加高效和有用,因为它在 GOOGLE I/O 中被讨论过,并且第一次看起来很难实现,但是当你使用它一次时,这样做永远不会成为问题...

以上是关于是否在 webview 中加载图像?的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Javascript 在 WebView 中加载图像

如何在 Android WebView 中加载本地图像

在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像

iOS:如何在 webview 或 wkwebview 中加载动画 webp 图像

如何在cordova webview中加载第三方非安全图像?

Android:WebView 中加载的图像中的像素质量降低