我想在用户离开应用时以页面滚动位置 保存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");
}
答案 0 :(得分:0)
您可以在OnDestroy
方法的SharedPreferences
中保存该位置,并使用OnCreate
方法检索该位置。
编辑:如上所述here,OnPause
应该是存储数据的地方,而不是OnDestroy
。