【发布时间】:2016-10-13 12:19:27
【问题描述】:
我想在用户离开应用程序时保存我的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");
}
【问题讨论】: