public class MyWebView extends WebView {
private float oldX;
private boolean overScrollLeft = false;
private boolean overScrollRight = false;
private boolean isScrolling = false;
public MyWebView(Context context) {
super(context);
this.loadUrl("http://www.baidu.com");
}
public MyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.loadUrl("http://www.baidu.com");
}
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setScrollbarFadingEnabled(false);
this.getSettings().setSupportZoom(true);
this.getSettings().setBuiltInZoomControls(true);
this.loadUrl("http://www. baidu.com/");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int scrollBarWidth = getVerticalScrollbarWidth();
int viewWidth = computeHorizontalScrollExtent();
int innerWidth = computeHorizontalScrollRange();
int scrollBarLeftPos = computeHorizontalScrollOffset();
int scrollBarRightPos = scrollBarLeftPos + viewWidth - scrollBarWidth;
Log.d("z","scrollBarRightPos===>"+scrollBarRightPos);
Log.d("z","innerWidth===>"+innerWidth);
if (scrollBarRightPos >= innerWidth-10) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
oldX=event.getX();
super.onTouchEvent(event);
return true;
}
if(event.getX()<oldX){
return false;
}
else{
this.getParent().requestDisallowInterceptTouchEvent(true);
super.onTouchEvent(event);
return true;
}
}else if(scrollBarLeftPos <= 10){
if(event.getAction()==MotionEvent.ACTION_DOWN ){
oldX=event.getX();
super.onTouchEvent(event);
return true;
}
if(event.getX()>oldX){
return false;
}
else{
this.getParent().requestDisallowInterceptTouchEvent(true);
super.onTouchEvent(event);
return true;
}
}
else {
this.getParent().requestDisallowInterceptTouchEvent(true);
super.onTouchEvent(event);
return true;
}
}
}
// 灵感来自 http://blog.youkuaiyun.com/ultrapro/article/details/7847183
Viewpager中的WebView处理翻屏手势问题
最新推荐文章于 2022-05-03 21:06:29 发布