如何监听webview的滚动事件

一:自定义一个webview

package app.coolwhether.com.zhihudailynews.support;

import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;

/**
 * Created by kirito on 2017.12.30.
 */

public class EnhanceWebView extends WebView {
    private onScrollChangeCallback callback;

    public EnhanceWebView(Context context) {
        super(context);
    }

    public EnhanceWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EnhanceWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (callback != null){
            callback.onScroll(l-oldl,t-oldt);
        }
    }

    public onScrollChangeCallback getOnScrollChangeCallback(){
        return callback;
    }

    public void setScrollChangeCallback(onScrollChangeCallback callback){
        this.callback = callback;
    }

    //设置回调借口,获取webview滑动的上下,左右距离差
    public static interface onScrollChangeCallback{
        public void onScroll(int dx,int dy);
    }
}

二:在webview使用的地方设置监听,实现上滑隐藏actionbar,下滑显示actionbar

mWebView.setScrollChangeCallback(new EnhanceWebView.onScrollChangeCallback() {
            @Override
            public void onScroll(int dx, int dy) {
                //Log.e(TAG, "onScroll: ---dy:"+dy );
                if (dy >= 3){//页面往下走隐藏actionbar
                    getSupportActionBar().hide();
                }else if (dy <= -3){//页面往上走,显示actionbar
                    getSupportActionBar().show();
                }

            }
        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容