[置顶] 微信文章webview记录上次访问位置的实现原理和代码,webview记录并定位到上次访问位置
2016-07-07 11:36
766 查看
大家经常看微信上的公众号文章,可以看到我们每次浏览上次浏览过的文章时,就会定位到上次看到过的位置
这个功能很实用
下面就给大家讲讲它的实现原理,和使用代码,实现起来很简单
实现原理
就是用webview.getScrollY记录你当前的webview已经滑动的位置
下次再进入这个页面时,在网页加载完成时调用:webview.scrollTo(int x, int y)方法即可
实现步骤;
1,用SharedPreferences或者数据库保存当前webview滑动的位置,如果多个页面都要记录访问位置,就需要用
集合把url和位置都保存起来
我们可以在activity的
@Override
public void onPause() {
super.onPause();
//CacheUtils是我自己封装的SharedPreferences保存工具类
//记录上次访问的位置,这里的mArticleContent.aid是我的文章的id,
//当然你可用你的文章url作为key,value为你的webview滑动位置即可
if (webview != null) {
int scrollY = webview.getScrollY();
CacheUtils.putInt(this, mArticleContent.aid, scrollY);//保存访问的位置
}
}
2,获取保存的位置,用webview.scrollTo(int x, int y)定位到上次访问的位置
class webviewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//获取保存的位置position
int position = CacheUtils.getInt(DetailActivity.this, mArticleContent.aid, 0);
view.scrollTo(0, position);//webview加载完成后直接定位到上次访问的位置
}
}
为了照顾小白,下面贴出我的CacheUtils工具类
这个功能很实用
下面就给大家讲讲它的实现原理,和使用代码,实现起来很简单
实现原理
就是用webview.getScrollY记录你当前的webview已经滑动的位置
下次再进入这个页面时,在网页加载完成时调用:webview.scrollTo(int x, int y)方法即可
实现步骤;
1,用SharedPreferences或者数据库保存当前webview滑动的位置,如果多个页面都要记录访问位置,就需要用
集合把url和位置都保存起来
我们可以在activity的
@Override
public void onPause() {
super.onPause();
//CacheUtils是我自己封装的SharedPreferences保存工具类
//记录上次访问的位置,这里的mArticleContent.aid是我的文章的id,
//当然你可用你的文章url作为key,value为你的webview滑动位置即可
if (webview != null) {
int scrollY = webview.getScrollY();
CacheUtils.putInt(this, mArticleContent.aid, scrollY);//保存访问的位置
}
}
2,获取保存的位置,用webview.scrollTo(int x, int y)定位到上次访问的位置
class webviewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//获取保存的位置position
int position = CacheUtils.getInt(DetailActivity.this, mArticleContent.aid, 0);
view.scrollTo(0, position);//webview加载完成后直接定位到上次访问的位置
}
}
为了照顾小白,下面贴出我的CacheUtils工具类
public class CacheUtils { private static final String NAME = "huxiu"; private static SharedPreferences sp = null; // 存Strings public static void putString(Context context, String key, String value) { if (sp == null) { sp = context.getSharedPreferences(NAME, Context.MODE_PRIVATE); } sp.edit().putString(key, value).commit(); } // 取String public static String getString(Context context, String key, String defValue) { if (sp == null) { sp = context.getSharedPreferences(NAME, Context.MODE_PRIVATE); } return sp.getString(key, defValue); } //存Int值 public static void putInt(Context context, String key, int value) { if (sp == null) { sp = context.getSharedPreferences(NAME, Context.MODE_PRIVATE); } sp.edit().putInt(key, value).commit(); } //取int值 public static int getInt(Context context, String key, int defValue) { if (sp == null) { sp = context.getSharedPreferences(NAME, Context.MODE_PRIVATE); } return sp.getInt(key, defValue); } }
相关文章推荐
- JEEWX微信开发更便捷,Ngrok 内网穿透利器应用
- 史上最全微信运营工具
- JAVA版微信支付
- 基于微信的开发杂记
- 微信上线“企业信用查询”帮你轻松识别“老赖”企业
- 微信紧急上线“城市积水上报”功能应对南方持续暴雨
- 微信公众号运营的4个误区2种运营思路
- 微信红利期已过,身为内容创业者的你,未来要在哪里战斗?
- 西安微信开发公司哪家好?
- OpenCart 微信三级分销行业解决方案
- 微信获取code和openid
- 微信公众平台开发教程第21篇-“可信网址”白名单
- 微信公众平台开发教程第19篇-应用实例之人脸检测
- 微信公众帐号开发教程第18篇-应用实例之音乐搜索
- 微信公众帐号开发教程第16篇-应用实例之历史上的今天
- 微信公众帐号开发教程第15篇-自定义菜单的view类型(访问网页)
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应
- 微信公众帐号开发教程第13篇-图文消息全攻略
- 微信公众帐号开发教程第12篇-符号表情的发送(下)
- 微信公众帐号开发教程第9篇-QQ表情的发送与接收