重写WebView,在WebView中设置接口,相当于自定义一个OnClickListener接口,然后使用的时候就可以调用setOnTouchScreenListener()方法,实现你想要的效果。
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.webkit.WebView;
public class MyWebView extends WebView {
private OnTouchScreenListener onTouchScreenListener;
public MyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyWebView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (onTouchScreenListener != null)
onTouchScreenListener.onTouchScreen();
}
if (event.getAction() == MotionEvent.ACTION_UP) {
if (onTouchScreenListener != null)
onTouchScreenListener.onReleaseScreen();
}
return super.onTouchEvent(event);
}
public interface OnTouchScreenListener {
void onTouchScreen();
void onReleaseScreen();
}
public void setOnTouchScreenListener(OnTouchScreenListener onTouchScreenListener) {
this.onTouchScreenListener = onTouchScreenListener;
}
}
使用的时候:
mWebView.setOnTouchScreenListener(new OnTouchScreenListener() {
@Override
public void onTouchScreen() {
isFlowing = true;
if (flowBottomLL.getVisibility() == View.GONE) {
flowBottomLL.startAnimation(flowbottomLLAppearAS);
flowBottomLL.setVisibility(View.VISIBLE);
}
}
@Override
public void onReleaseScreen() {
isFlowing = false;
if (flowBottomLL.getVisibility() == View.VISIBLE) {
Message msg = handler.obtainMessage(1);
currentTime = System.currentTimeMillis();
Bundle bundle = new Bundle();
bundle.putLong("currentTime", currentTime);
msg.setData(bundle);
handler.sendMessageDelayed(msg, 3000);
}
}
});