package com.zy.tour.util.ui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import com.zy.tour.util.widget.LWebView;
/**
* @类名:MyWebView
* @功能描述:可监听WebView时候移动到了头部
* @作者:XuanKe'Huang
* @时间:2014-10-11 下午4:59:54
* @Copyright 2014
*/
public class MyWebView extends LWebView {
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);
}
public void setOnScrollTopLinstener(ScrollTopListener listener) {
this.listener = listener;
}
/**
* @类名:ScrollTopListener
* @功能描述:网页是否移动到头部监听
* @作者:XuanKe'Huang
* @时间:2014-10-11 下午5:11:06
* @Copyright 2014
*/
public interface ScrollTopListener {
/**
* 方法名: fingerMoveDistance
*
* 功能描述:手指正在移动中,未离开
*
* @param disatane
* 移动的距离
* @return void
*
* throws
*/
public void fingerMoveDistance(int disatane);
/**
* 方法名: fingerUpListener
*
* 功能描述:手指离开屏幕
*
* @param flag
* true表示移动距离过大,false表示移动距离过小
* @return void
*
* throws
*/
public void fingerUpListener(boolean flag);
}
private int startY = 0;// 开始点
private int moveDistance = 0;// 移动的距离
private ScrollTopListener listener;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:// 手指按下
startY = (int) ev.getRawY();
break;
case MotionEvent.ACTION_MOVE:// 手指移动
moveDistance = (int) (ev.getRawY() - startY);
if (moveDistance > 50 && this.getScrollY() == 0) {
listener.fingerMoveDistance(moveDistance);// 传回手指移动的距离
}
break;
case MotionEvent.ACTION_UP:// 手指离开
if (this.getScrollY() == 0) {
if (moveDistance > 100) {
listener.fingerUpListener(true);
} else {
listener.fingerUpListener(false);
}
}
startY = 0;
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
}
Android WebView监听是否滚到到了头部
最新推荐文章于 2023-03-15 17:14:51 发布