恢复webview滚动位置?

时间:2016-10-13 12:19:27

标签: android scroll webview

我想在用户离开应用时以页面滚动位置 保存webView的状态,并在用户再次打开应用时恢复它们。这样,用户可以继续阅读向下滚动到恢复位置的已恢复webview内容。

以下是我正在使用的方法:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book);
    webView = (WebView)this.findViewById(R.id.webView);
    if (savedInstanceState != null) {
        int positionY = Math.round(scrollPos);
        webView.scrollTo(0, positionY);
    } esle {
      //do something
    }

计算位置的函数:

    private int calculateProgression(WebView content) {
    int positionTopView = content.getTop();
    int contentHeight = content.getContentHeight();
    int currentScrollPosition = content.getScrollY();
    int percentWebview = (currentScrollPosition - positionTopView) / contentHeight;
    return percentWebview;
}

保存/恢复功能:

    @Override
    protected void onSaveInstanceState(Bundle outState) {
    outState.putInt("position", calculateProgression(webView));
    super.onSaveInstanceState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    scrollPos = savedInstanceState.getFloat("position");
    }

1 个答案:

答案 0 :(得分:0)

您可以在OnDestroy方法的SharedPreferences中保存该位置,并使用OnCreate方法检索该位置。

编辑:如上所述hereOnPause应该是存储数据的地方,而不是OnDestroy