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
回來的時候在設定移動距離,這次滾動的位置應該就是準確的了~