Android-怎么判断android中WebView滑动到了低端

Android-怎么判断android中WebView滑动到了低端

想挽留 发布于 2016-12-08 字数 272 浏览 1237 回复 5

网上好多都是那个通过计算高度来判断的,但是那些需要在触摸的情况下。现在我来说一个情况,比如我在顶端快速的向下滑动,滑到低端是webview通过惯性自己到达的低端,这时候你手指是没有触摸的,这就需要组件自己有一个监听方法,来监听是否到达低端,我想问问各位大侠有没有好的办法?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

灵芸 2017-06-12 5 楼

if(webview.getContentHeight*webview.getScale() -(webvi ew.getHeight()+webview.getScrollY())){
//已经处于底端
}

夜无邪 2017-04-09 4 楼

重写 webview的onFling方法即可,参考楼下的,之前我打错了。

灵芸 2017-02-28 3 楼

我是这么监听的,不过我是判断是否达到了顶端,我只需要知道scrollY等于0就行了,所以你要判断是否达到底端还需要结合上面答案里面计算网页宽度和缩放率的方法算下网页有多长才知道是否达到了底端。computeScroll()会再每次重绘的时候由ViewGroup回调,所以理论上这个方法只要是“画面在动”就会回调,应该能满足你的需求。
public class ScrollWebView extends WebView {

public static final String TAG = "ScrollWebView";
private OnScrollListener onScrollListener;

public ScrollWebView(Context context) {
super(context);
}

public ScrollWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public void setOnScrollListener(OnScrollListener onScrollListener) {
this.onScrollListener = onScrollListener;
}

@Override
public void computeScroll() {
super.computeScroll();
if (onScrollListener != null) {
onScrollListener.onScroll(this, getScrollX(), getScrollY());
}
}

public static interface OnScrollListener {
void onScroll(WebView wv, int scrollX, int scrollY);
}

}

灵芸 2017-01-20 2 楼

重写webview 重写onFling方法。

晚风撩人 2016-12-30 1 楼

我特意把全部代码列出来,应该你可以直接用了,代码命名格式没有整理,不知能否达到你的意思:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Wv wv = (Wv)this.findViewById(R.id.test);
        wv.loadUrl("http://m.aoyou.com/about.aspx");
        
        wv.setOnCustomScroolChangeListener(new ScrollInterface(){
            @Override
            public void onSChanged(int l, int t, int oldl, int oldt) {
                Log.e("Value",(wv.getContentHeight()*wv.getScale() -(wv.getHeight()+wv.getScrollY()))+"");
                if(wv.getContentHeight()*wv.getScale() -(wv.getHeight()+wv.getScrollY())==0){  
                    //已经处于底端  
                    
                    }
            }
            
        });
    }  
}
public class Wv extends WebView{

    ScrollInterface mt;
    public Wv(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public Wv(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public Wv(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        //Log.e("hhah",""+l+" "+t+" "+oldl+" "+oldt);
        mt.onSChanged(l, t, oldl, oldt);
    }

    
    public void setOnCustomScroolChangeListener(ScrollInterface t){
        this.mt=t;
    }
}
public interface ScrollInterface {
    public void onSChanged(int l, int t, int oldl, int oldt) ;
}