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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章