WebView載入的網頁中touch事件處理
阿新 • • 發佈:2018-11-02
一直有接觸webview,也用到了很多關於webview的各種特性,一直沒找到時機吧所有的webview的用法總結起來,這次也暫時先記錄一下webview載入網頁,我們在網頁中的點選,滑動等動作的事件處理機制。當時的需求大概是我在fragment中使用WebView,當無操作15秒之後退出該fragment,回到activity。我的想法就是監聽網頁中的點選和滑動事件,然後有操作就讓一個int變數值為0,然後handler裡面對這個值進行判斷,大於15就退出,小於15就++。話不多說,直接上程式碼
這是一個自定義的webview,繼承自webview,這裡我們重寫onTouchEvent方法,並對外提供一個介面。最後在fragment中setOnTouchEventCallback,示例如下public class MyWebView extends WebView { private OnTouchEventCallback mOnTouchEventCallback; public MyWebView(Context context) { super(context); } public MyWebView(Context context, AttributeSet attrs) { super(context, attrs); } public MyWebView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: if (mOnTouchEventCallback!=null){ mOnTouchEventCallback.onActionDown(); } break; case MotionEvent.ACTION_MOVE: if (mOnTouchEventCallback!=null){ mOnTouchEventCallback.onActionMove(); } break; } return super.onTouchEvent(event); } public OnTouchEventCallback getOnTouchEventCallback() { return mOnTouchEventCallback; } public void setOnTouchEventCallback( final OnTouchEventCallback onTouchEventCallback) { mOnTouchEventCallback = onTouchEventCallback; } public static interface OnTouchEventCallback { public void onActionDown(); public void onActionMove(); } }
webView.setOnTouchEventCallback(new MyWebView.OnTouchEventCallback() { @Override public void onActionDown() { Log.e(TAG, "onActionDown"); } @Override public void onActionMove() { Log.e(TAG, "onActionMove"); } });