Android WebView 平滑滚动

Posted

技术标签:

【中文标题】Android WebView 平滑滚动【英文标题】:Android WebView smooth scroll 【发布时间】:2012-11-07 21:12:20 【问题描述】:

我正在尝试以编程方式滚动 webview,但遇到了一些问题。 webView.setScrollY() 没有给我动画 webView.flingScroll() 似乎表现不同,具体取决于页面的长度。最好的方法是什么?

【问题讨论】:

【参考方案1】:

您可以使用 ObjectAnimator 滚动,方法是提供 webview 的当前位置,如 API 11+

ObjectAnimator anim = ObjectAnimator.ofInt(webView, "scrollY", webView.getScrollPositionY(), 0);
anim.setDuration(500).start();

【讨论】:

很好的答案,对我有用。唯一的问题是没有像getScrollPositionY()这样的方法,你应该使用webView.getScrollY()【参考方案2】:

您可以使用 webView.scrollTo(x, y) 方法。但是,这将立即滚动。

WebView 没有可用的方法来滚动动画。如果您确实必须这样做,请将 WebView 放入 ScrollView 然后您可以使用例如smoothScrollBy 等。

【讨论】:

嵌套可滚动视图不是最好的主意,如果处理不当会给您带来各种麻烦【参考方案3】:
 private final Property<WebView, Integer> WEBVIEW_SCROLL = new Property<WebView, Integer>(Integer.class, "") 
    @Override
    public Integer get(WebView object) 
        return object.getScrollY();
    

    @Override
    public void set(WebView object, Integer value) 
        object.scrollTo(object.getScrollX(), value);
    
;
ObjectAnimator.ofInt(mWebView, WEBVIEW_SCROLL, targetY).setDuration(duration).start();

对我有用~,你可以试试这个~

【讨论】:

以上是关于Android WebView 平滑滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何停止线性布局以使用webview滚动?

通过 webview 显示的 Android 本地图像模糊

Android WebView 重定向问题

Android WebView 获取网页的标题

Android WebView开发:WebView性能优化

Android WebView开发:WebView性能优化