一直有接触webview,也用到了很多关于webview的各种特性,一直没找到时机吧所有的webview的用法总结起来,这次也暂时先记录一下webview加载网页,我们在网页中的点击,滑动等动作的事件处理机制。当时的需求大概是我在fragment中使用WebView,当无操作15秒之后退出该fragment,回到activity。我的想法就是监听网页中的点击和滑动事件,然后有操作就让一个int变量值为0,然后handler里面对这个值进行判断,大于15就退出,小于15就++。话不多说,直接上代码
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,继承自webview,这里我们重写onTouchEvent方法,并对外提供一个接口。最后在fragment中setOnTouchEventCallback,示例如下
webView.setOnTouchEventCallback(new MyWebView.OnTouchEventCallback() {
@Override
public void onActionDown() {
Log.e(TAG, "onActionDown");
}
@Override
public void onActionMove() {
Log.e(TAG, "onActionMove");
}
});