Android webview用户体验优化-场景恢复
来源:互联网 发布:processing是什么软件 编辑:程序博客网 时间:2024/06/07 06:11
上一篇文章讲到了webview技术方面的优化(没有看到的朋友可以看看http://blog.csdn.net/fkingu007/article/details/44650031),这次进一步完善一下,主要完成状态保留工作,也是解决了我的一个疑问,下面看看如何做到的。
转载请标明文章出处 http://blog.csdn.net/fkingu007/article/details/44675129,尊重原创。
1、 activity意外被杀
上个博文已经说到了,在onSaveInstanceState(Bundle)调用webview.saveState(bundle)保存状态,在onCreate(Bundle saveInstanceState)里通过savedInstanceState == null判断,不为null,即可通过webview.restoreState(bundle)恢复,这里不多讲了。
2、用户正常back
我们都知道back是不会触发onSaveInstanceState()方法的,那么我们就得通过其他途径保存状态了,哈哈,研究发现可以通过webview.getContentHeight(),webview.getSrollY()得到滚动位置所占html页面实际内容长度的比例,由于html加载内容可能显示不完全,getContentHeight()的值很有可能是会变化的,所以我们最好算出这个百分比,下次恢复的时候也根据百分比再滚动,思路有了,代码实现就没问题啦,下面是关键代码:
// 计算当前滚动位置所占网页内容的百分比private float calculateProgression(WebView content) { float positionTopView = content.getTop(); float contentHeight = content.getContentHeight(); float currentScrollPosition = content.getScrollY(); float percentWebview = (currentScrollPosition - positionTopView) / contentHeight; Log.e(TAG, "positionTopView:"+positionTopView); Log.e(TAG, "contentHeight:"+contentHeight); Log.e(TAG, "currentScrollPosition:"+currentScrollPosition); Log.e(TAG, "percentWebview:"+percentWebview); return percentWebview;}
onDestory()里保留一下这个值:
@Overrideprotected void onDestroy() {mProgressToRestore = calculateProgression(wv);ll.removeAllViews();wv.stopLoading();wv.removeAllViews();wv.destroy();wv = null;ll = null;super.onDestroy();}
WebViewClient.onPageFinished()里进行滚动,加一个标志位只跳转一次
@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubif (mHasToRestoreState && 0<mProgressToRestore) { mHasToRestoreState = false; view.postDelayed(new Runnable() { @Override public void run() { float webviewsize = wv.getContentHeight() - wv.getTop(); float positionInWV = webviewsize * mProgressToRestore; int positionY = (int) (wv.getTop() + positionInWV); wv.scrollTo(0, positionY); } // 延迟一下 }, 100); }super.onPageFinished(view, url);Log.d(TAG, "pageFinished:"+url);}
- Android webview用户体验优化-场景恢复
- Android Glide 优化用户体验
- Android Glide 优化用户体验
- Android Glide 优化用户体验
- Android Glide 优化用户体验
- Android-WebView初体验
- Android WebView初体验
- Android webview初体验
- 量化和优化Android设备的用户体验
- Android:利用selector优化布局,提升用户体验
- WebView性能、体验分析与优化
- WebView性能、体验分析与优化
- WebView性能、体验分析与优化
- WebView性能、体验分析与优化
- WebView性能、体验分析与优化(转载)
- WebView性能、体验分析与优化
- WebView性能、体验分析与优化
- 性能优化及用户体验
- LightSwitch Load Data Quickly
- 黑马程序员——JAVA String总结
- Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- UVALA 3263 That Nice Euler Circuits(欧拉定理,判断线段相交)
- 数塔 hdu 2391
- Android webview用户体验优化-场景恢复
- iptables防火墙添加规则
- icp/sp申请要点
- iOS 8 使用本地通知 UILocalNotification时需要注册
- PhoneGap开发环境搭建
- 简单使用Github - 2015
- Oracle中的AS和IS的不同,以及使用,两者基本上没有不同 。
- 国内最全最详细的Hadoop2.2.0集群的HA高可靠的最简单配置
- B/S体系结构