在使用WebView时,保存上次阅读位置。

需求:很多时候,我们阅读类的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 方法自动跳转到用户上次查阅的地方啦!
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Electron中的webview标签来在桌面应用程序中嵌入一个web页面。可以使用webview标签来访问和控制网络内容,并且可以在Electron应用程序中嵌入HTML、CSS、JavaScript和其他web技术。 ### 回答2: Electron是一个可以使用Web技术构建跨平台桌面应用的开源框架。它是基于Chromium和Node.js的,使开发者能够以熟悉的Web技术(HTML、CSS和JavaScript)创建桌面应用程序。 在Electron中使用webview标签,可以插入并显示一个独立的Web内容或网页。下面是如何在Electron中使用webview标签的步骤: 1. 在Electron应用的渲染进程中,使用HTML的方式添加webview标签。例如: ``` <webview src="https://example.com" style="width:100%; height:100%;"></webview> ``` 这将在应用窗口内显示一个webview,并加载指定URL的内容。 2. 在应用的主进程中,使用Electron提供的相关API来与webview进行交互。例如,可以通过webContents.sendToAll方法向webview发送消息,并通过webview.addEventListener方法监听来自webview的消息。 3. 可以使用webview标签的各种属性来控制webview的行为和外观。例如,可以使用preload属性指定一个预加载脚本,以便在webview中运行自定义逻辑。可以使用useragent属性设置webview的User Agent信息。还可以使用partition属性来隔离多个webview实例之间的cookie和缓存数据。 需要注意的是,webview标签是在一个独立的进程中运行的,这有助于隔离渲染进程与webview之间的环境,并提高安全性和稳定性。 综上所述,使用Electron的webview标签可以方便地插入和显示独立的Web内容或网页,并且通过Electron提供的API,可以实现与webview的交互和控制。这使得开发者可以更好地利用Web技术来构建功能丰富的桌面应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值