有些時候我們需要監(jiān)聽webview的滾動事件,但WebView沒有直接監(jiān)聽滑動的方法,看WebView的源碼則會發(fā)現(xiàn)有一個protected void onScrollChanged(int l, int t, int oldl, int oldt)方法。
創(chuàng)新互聯(lián)是專業(yè)的云龍網(wǎng)站建設(shè)公司,云龍接單;提供成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行云龍網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!這個方法。是受到保護的所以我們無法直接使用,所以我們寫一個加強的WebView,重寫onScrollChanged方法并利用接口回調(diào)。
public class NewWebView extends WebView{ private OnScrollChangeListener mOnScrollChangeListener; public NewWebView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); // webview的高度 float webcontent = getContentHeight() * getScale(); // 當前webview的高度 float webnow = getHeight() + getScrollY(); if (Math.abs(webcontent - webnow) < 1) { //處于底端 mOnScrollChangeListener.onPageEnd(l, t, oldl, oldt); } else if (getScrollY() == 0) { //處于頂端 mOnScrollChangeListener.onPageTop(l, t, oldl, oldt); } else { mOnScrollChangeListener.onScrollChanged(l, t, oldl, oldt); } } public void setOnScrollChangeListener(OnScrollChangeListener listener) { this.mOnScrollChangeListener = listener; } public interface OnScrollChangeListener { public void onPageEnd(int l, int t, int oldl, int oldt); public void onPageTop(int l, int t, int oldl, int oldt); public void onScrollChanged(int l, int t, int oldl, int oldt); } }