Android Web 视图中的非本机滚动条性能

Non-Native Scroller Performance within Android Webviews

本文关键字:本机 滚动条 性能 Web 视图 Android      更新时间:2023-09-26

有没有人对在 Web 视图中运行的应用程序的 3rd 方滚动器进行研究或有很好的体验?尤其是滚动的不止一个分区??即带有导航面板和详细信息面板的 Web 视图。

当只有一个分区需要滚动条时,它可以顺利工作,但在上述情况下,它非常不稳定。我相信很多开发人员都遇到过这个问题。

我已经尝试了iScroll(到目前为止是最好的(以及其他插件,但滚动的质量不太理想。我无法使用iFrames,因为我需要调整从我们的服务器中提取的一些HTML文档的样式。我已经在网上搜索了一种在 HTML 划分中调用本机滚动条的方法,但没有找到方法。 有没有办法,我该怎么做?

我一直在各种设备上使用 API 的 9 到 15,在非本机滚动器的性能方面,我没有看到任何区别。我目前正在 15 上开发该应用程序,如果这对您的答案有帮助。另外,我关闭了硬件加速,效果最好。

我玩过jqm,Sencha等,他们看到有令人满意的滚动器。 有谁知道他们用什么?我不主要使用这些平台的问题是批量和其他性能问题。

目前,我正在使用原始javascript构建一个应用程序,事实证明,这在Web视图布局中的所有动画中都有显着的性能改进 - 明显优于任何大牌跨平台解决方案。不幸的是,我没有足够的经验来构建自己的滚动条,所以我需要找到一个开箱即用的解决方案。

任何想法,线索或解决方案,以便其他更擅长使用javascript编写应用程序的人可以有机会构建高质量的应用程序,我们将不胜感激。

根据您的经验和专业知识,请包括您使用的 API 级别。

谢谢

我对此做了很多测试。我不会推荐仅基于HTML的第三方滚动,因为根据我的经验,问题不在于javascript,而在于Web视图本身:

1(WebView上的Iframe性能是弱弱弱的。 对于任何(复杂的(应用程序,我的性能都降低了近 40%,只是因为它放在 iframe 中。此外,如果您使用硬件加速,它们会导致更多问题。

2( 如果divs 中的内容简单且简短,则滚动 DIVS 是可以接受的,但是随着您向滚动添加更精细的内容,性能会降低。例如,就我而言,将所有内容包含在 ul/li 中(较慢(或不(明显更快(是有区别的。但是,这种感觉并不完美,也就是说,如果您习惯了本机滚动,则会意识到这不是本机滚动。

3(身体的原始滚动非常好。此外,您还可以获得类似本机的反馈,例如滚动的发光效果等。但请注意,此滚动没有使用javascript,它只是一个比Web视图更大的页面,您可以让用户滚动,WebView会处理它。就我而言,这是我想要的用户唯一可接受的滚动体验。

所以我提出了一个混合解决方案:我做了一个JavaScript可调用的Java函数,它将打开另一个具有请求大小的Web视图,就像iframe一样,所以我可以从HTML打开它并填充东西,这不是很难做到,而且改进很棒。

更多内容:

4(从Java滚动WebView(scrollTo(在我的情况下非常有用,在那里我加载了一个巨大的HTML页面(有点像杂志(可以滑动。如果我要求 Web 视图从 Java 滚动,性能比依靠 JavaScript 进行滚动要好得多。

5(硬件加速提高了100%的滚动速度-setLayerType(硬件(-但是为了能够使用它,您必须保持html非常简单。像 Display:none/block 等东西会完全破坏应用程序(有关更多信息,请参阅 WebView 无法呈现,直到触摸 Android 4.2.2(

6(大图像上的HTML5动画完全扼杀了滚动体验。

7(所有这些在几个月内都无效,goole正在将渲染引擎替换为"闪烁",所以谁知道会发生什么。我坐立不安。