1. 程式人生 > >webview記錄滾動位置,下次開啟滾動到記錄點

webview記錄滾動位置,下次開啟滾動到記錄點

網上看了挺多方法,自己都試了試發現不好用。

最後參考的是這篇文章。

http://blog.csdn.net/qiushi_1990/article/details/51849890

      這篇文章某些情況下應該是可以獲得正確結果的。這位博主用的 webview.getScrollY();儲存和webview..scrollTo()方法。但是使用之後我的問題沒有得到解決,我發現大部分時候直接都滾動到了底部。

      我稍微滾動一點,再次進入後就滾動了很長一段距離。我看了下webview裡的屬性,onPageFinished()裡的webview裡scale值和離開的時候scale值並不相同。

     so,這件事就很簡單了,onPageFinished的時候頁面縮放值和離開頁面時的縮放值不同,導致了頁面滾動距離並不正確。

     因為getScale()這個方法已經過時了,可以在WebViewClient的監聽裡繼承onScaleChanged方法。

      webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onScaleChanged(WebView view, float oldScale, float newScale) {
                super.onScaleChanged(view, oldScale, newScale);
            }

     }

離開頁面儲存的記錄點的時候,對比一下oldScale和newScale 。正確的移動距離= webview.getScrollY()/newScale*oldScale

回來的時候在設定移動距離,這次滾動的位置應該就是準確的了~