Android 在webview中平滑水平滚动

Android 在webview中平滑水平滚动,android,webview,horizontal-scrolling,android-scrollbar,Android,Webview,Horizontal Scrolling,Android Scrollbar,我有一个包含许多“页面”(文本列)的WevView,并且希望能够在列之间水平滚动以响应投掷手势。我可以使用scrollTo()很好地完成这项工作,但这太突然了,我真的希望能够从一个“页面”平滑地过渡到下一个页面 我看到的问题是:不能将滚动条附加到Web视图,也不应该将Web视图嵌套在滚动视图中 有没有人对在WebView中实现平滑或动画水平滚动有什么好主意 编辑添加:我试图实现knotmanish的一个想法,我使用一个独立的滚动条来计算距离 // vx and vy are from t

我有一个包含许多“页面”(文本列)的WevView,并且希望能够在列之间水平滚动以响应投掷手势。我可以使用scrollTo()很好地完成这项工作,但这太突然了,我真的希望能够从一个“页面”平滑地过渡到下一个页面

我看到的问题是:不能将滚动条附加到Web视图,也不应该将Web视图嵌套在滚动视图中

有没有人对在WebView中实现平滑或动画水平滚动有什么好主意

编辑添加:我试图实现knotmanish的一个想法,我使用一个独立的滚动条来计算距离

    // vx and vy are from the onfling event of the gesture detector 
    scroller.fling(page*x, 0, vx, vy, page*(x + 1), page*(x + 1), 0, 0);

    while(scroller.computeScrollOffset()){
        webview.scrollTo(scroller.getCurrX(), 0);
        webview.invalidate();
    }

。。。但是while循环似乎太慢,无法捕获滚动条的移动或其他内容,因为其行为看起来就像scrollTo()方法(视图跳转到滚动条的末尾)

您不能将滚动条附加到Web视图,但您可以使用该手势来执行相同的操作

手势使用此方法检测投掷

onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
将velocityX、velocityY与其他参数一起提供给scoller方法

fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)
扫描ComputeScrolOffset()值以查找getCurrX()、getCurrY()位置

扩展webview并覆盖onTouchEvent(MotionEvent ev)、dispatchTouchEvent(MotionEvent ev)方法以返回false,以便默认情况下,webview本身不会使用触摸事件。 现在实现gestureListener并重写上面提到的onfling方法。 将速度和其他参数传递给滚动条。 启动一个循环,扫描computeScrollOffset()值以查找getCurrX()和getCurrY(),并每次使视图无效。 根据需要传递此值以滚动webview


如果您需要什么,请告诉我。

好的,我会在早上试一试,然后公布结果。嗯。。。我可以将它附加到什么上以使webview滚动?如果未连接到某个对象,则不会发生任何事情,并且包含webview的布局不会拉伸,因此不会滚动。您可能需要设置缩放级别。试着把它设为1。我想我明白了。。。基本上,让滚动条只计算正确的滚动位置,而不附加任何内容,并在scrollTo中使用这些值?我会尝试一下。我已经尝试过这个(上面的代码片段),它会一直持续到最后,实际上,是同样的不自然行为。你能发现我做错了什么吗,或者你认为循环没有像它需要的那样快速捕捉滚动条的运动?