我希望能够在用户离开应用时保存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");
}