+-
android-在webview中平滑水平滚动
我有一个带有多个“页面”(文本列)的wevbiew,并且希望能够根据Fling手势在各列之间水平滚动.我可以使用scrollTo()很好地做到这一点,但这是突然的,我真的很希望能够从一个“页面”平滑过渡到下一个页面.

我所看到的问题是:您不能将Scroller附加到WebView,也不应将WebView嵌套在ScrollView中.

有没有人有在WebView中实现平滑或动画水平滚动的好主意?

编辑添加:我试图实现一个knotmanish的想法,在这里我使用一个独立的Scroller计算距离.

    // 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)

将sX速度和速度X以及其他参数一起赋给scoller方法

fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)

扫描computeScrollOffset()值以找到getCurrX(),getCurrY()位置.

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

如果您需要任何东西,请告诉我.

点击查看更多相关文章

转载注明原文:android-在webview中平滑水平滚动 - 乐贴网