【问题标题】:Android WebView image displayed partlyAndroid WebView 图像部分显示
【发布时间】:2015-10-29 22:38:06
【问题描述】:

我有一个 webview,它会打开一个显示不同图像的页面,例如画廊。

图像本地保存在 sdcard 上,并通过 css 加载 background-image: url(file://...)。

由于某种原因,这个问题似乎(虽然不确定)与 Android 的资源请求有关。操作系统需要资源的时间越长,白色(或黑色)波段就越大。

这并不总是在一个测试会话中发生,并且会随机影响图像(在一个循环中,某个图像显示正常,在下一个则不会)。而且它似乎只影响图像,显示 iframe 总是正常加载。

如果这种情况发生一秒钟然后它会正常显示,我不会有问题,问题是图像会一直保持这种状态,直到下一次刷新 webview。

android 的版本是 4.4.2。如果有任何帮助,它就是 mk808b plus 设备...

关于如何解决或以某种方式减少发生这种情况的时间的任何想法......任何真正的......除了使用 imageview,我想将所有内容都保留在 webview 中。任何进一步调试的指导也非常感谢。

感谢您提供的任何帮助。

【问题讨论】:

    标签: android css image webview


    【解决方案1】:

    如果可能的话,我会尝试将背景图像转换为矢量格式(如 SVG)。渲染应该更容易,内存消耗更少。

    【讨论】:

    • 使用这种方法有什么缺点吗?除了在上传时发生的转换。
    • 缺点是计算成本更高(将图像解压缩为位图很简单,在 SVG 中按照步骤绘制图像)和矢量图像的灵活性较低(复杂图像有很多步骤,渲染需要更多时间)。我刚刚使用 svg 格式 (demosthenes.info/assets/images/thumbnails/homer-simpson.svg) 和 png (postimg.org/image/4s9m7x931) 的相同图像对 WebView 进行了基准测试。最后,我占用了相同数量的 ram,但使用 png 我有一个对应于减压的大尖峰 (2x)。
    • 由于这些图像是没有压缩的jpeg,我想它肯定会使用更多的cpu。无论如何,这至少是一个方向......谢谢!
    • 其实我才意识到不能自动将这些jpg转成svg...所以这种方法是行不通的。
    • 您能否提供一个例如 html 并使用 android studio 工具报告您的应用程序的内存使用情况?可能存在内存泄漏,并且有很多与之相关的堆栈溢出帖子。
    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多