在使用WebView时,保存上次阅读位置。
来源:互联网 发布:树上10只鸟 程序员 编辑:程序博客网 时间:2024/06/09 17:08
需求:很多时候,我们阅读类的app都会帮助用户存储上一次的阅读位置,方便用户进入到下一次的阅读位置。那如果我们开发者使用的是WebView时,是否可以记住阅读位置呢?
首先,我们废话不多说, 开始上代码。
/** * 自定义的webview,用于监听滑动的位置 */public class MyWebView extends WebView { public MyWebView(Context context) { super(context); } public MyWebView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyWebView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //clampedX,clampedY用于判断是否发生了onOverScrolled @Override protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); //设置监听,如果没有滑动到底部,则记录下当前的位置,如果滑动完毕,则返回true if (onOveredScroll != null) { onOveredScroll.onOvered(scrollY); } } //自定义一个滚动完毕的监听接口 onOveredScroll onOveredScroll = null; public interface onOveredScroll { void onOvered(int scrollY); } public void setOnOveredScroll(MyWebView.onOveredScroll onOveredScroll) { this.onOveredScroll = onOveredScroll; }}通过查阅webview的源代码,我们发现。在onOverScrolled这个方法中,会传入scrollX和scrollY 这两个参数,他们分别代表当前WebView 滑动时的坐标。 亲们,是不是突然恍然大悟了? 下面我们就可以通过一个接口,在Activity中实施监听Webview的滑动位置了!
//设置滚动位置监听int curPos =-1; mWebView.setOnOveredScroll(new MyWebView.onOveredScroll() { @Override public void onOvered(int scrollY) { curPos = scrollY; } });这时候,我们可以保存scrollY 到数据库或者sharedpreferences中, 读取位置的坐标后。 再用mWebView.scrollto 方法自动跳转到用户上次查阅的地方啦!
0 0
- 在使用WebView时,保存上次阅读位置。
- pdf阅读,保存上次阅读位置
- pdf阅读,保存上次阅读位置
- KMplayer保存上次播放位置
- pdf阅读,自动恢复上次阅读位置
- [Android初级]关于实现在阅读文章后保持上次阅读位置的方法即关于ScrollView的位置监听
- ReactJS 页面跳转保存当前scrollTop回来时,自动移动到上次浏览器的位置
- 如何保存ListView上次的滚动条的位置
- vue-router如何在返回时返回到上次滚动位置 方法集锦
- vue-router如何在返回时返回到上次滚动位置 方法集锦
- 使word打开时保持上次阅读
- Vim 退出时保存上次状态
- 微信文章webview记录上次访问位置的实现原理和代码,webview记录并定位到上次访问位置
- 设置vim打开文件光标指在上次退出位置
- 使用WebView实现离线阅读
- 使用WebView实现离线阅读
- PDF 记录上次位置
- vim 恢复上次文件打开位置及自动更新,自动保存文件
- 如何调试Android Framework?
- C++中explicit 的用法
- PAT算法笔记(二)————数字分类
- VS2015 Update 3正式版下载汇总
- go windows下的安装和hello,world
- 在使用WebView时,保存上次阅读位置。
- call()、apply()
- (4)spring boot热部署实现
- 深入理解JVM 一内存
- HDU3714:Error Curves(三分)
- HOJ 2200
- 嵌入式面试题——ARM面试题(三)
- Angular企业级开发(8)-控制器的作用域
- 大数据平台cloudera manager安装