9

在 Netflix 的 Android 应用中,有一个 WebView 几乎覆盖了整个应用的区域。当您从左到右拖动一行时,它将仅滚动该行,并使用良好的惯性滚动来滚动。如果您上下拖动,它将上下滚动整个页面。

安卓上的Netflix应用

我已经设法在 iOS 上复制了这个功能(在 uiWebView 以及 Safari 中),但在 Android 上没有。在 Android 设备上,我所做的任何事情要么滚动起来非常缓慢,要么你必须非常小心地垂直滚动才能从触摸行之间的背景区域开始。两者都不可接受。显然,我不想在 javascript 中做滚动动画,因为那太慢了。

我知道 Netflix 使用 WebView 来做这件事,所以....他们使用的技巧是什么?

我尝试使用 css 属性(用于行 div):

overflow-y: hidden;
-webkit-overflow-scrolling-x: touch

无济于事。

4

3 回答 3

3

如果您无法获得与特定 WebView 兼容的 css Android,为什么不创建仅将请求的行输出到单独的 WebView 的服务器端功能呢?

我将执行以下操作:
* 查询 Web 服务器以确定有多少行。
* 以编程方式添加 Web 服务器所说的行数。例如,如果服务器报告有 5 行,则创建 5 个 WebView,每个都有自己的 URL 参数(例如:第一个 WebView 将查询mydomain.com/wv?row=1)。
* 将WebView的每一行放在一个Horizo​​ntalScrollView中,将所有Horizo​​ntalScrollViews放在一个VerticalScrollView中。
* 在 URL 更改时,转到显示单击磁贴详细信息的全页 WebView。
* 在后按时,关闭整页 WebView 并重新加载行。

不是最干净的解决方案,但应该可以正常工作。

于 2013-08-20T08:08:45.867 回答
0

尝试在您的 HTML中使用iScroll 。
在链接中,您可以找到源代码、示例和 javascript 库。
它也有一些有用的回调。
我在使用 WebViews 时经常使用它。

于 2013-08-20T10:55:43.887 回答
0

Netflix 可以使用自定义手势检测并查看滚动是否更水平然后垂直或更垂直而不是水平,然后根据滚动的距离水平或垂直滚动​​ webview

于 2013-08-21T15:34:37.587 回答