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

发布于 2016-12-08 13:11:05 字数 143 浏览 1421 评论 5

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(5

灵芸 2017-06-12 13:27:22

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

夜无邪 2017-04-09 11:49:18

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

灵芸 2017-02-28 04:17:50

我是这么监听的,不过我是判断是否达到了顶端,我只需要知道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 14:05:05

重写webview 重写onFling方法。

晚风撩人 2016-12-30 10:13:02

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

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) ;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文