+-

我有一个带有多个“页面”(文本列)的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中平滑水平滚动 - 乐贴网