在4.4以下的系统中,我们通常监听webview滑动到底端的方法如下:
1,先重新webview,FoundWebView
public class FoundWebView extends WebView {
ScrollInterface mt;
public FoundWebView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public FoundWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public FoundWebView(Context context, AttributeSet attrs) {
super(context, attrs);
// 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;
}
/**
* 定义滑动接口
* @param t
*/
public interface ScrollInterface {
public void onSChanged(int l, int t, int oldl, int oldt) ;
}
}
2,很少有人不自定义webview吧,直接调用系统的总是有一个地址栏太蛋疼了,所以一般都是在一个activity里加载webview
mWebView.setOnCustomScroolChangeListener(new ScrollInterface() {
@Override
public void onSChanged(int l, int t, int oldl, int oldt) {
// TODO Auto-generated method stub
webviewHight = mWebView.getContentHeight()*mWebView.getScale();
//已经处于底端
if((int)webviewHight == (mWebView.getHeight() + mWebView.getScrollY()) ){
}
//已经处于顶端
// if (mWebView.getScaleY() == 0) {
//
// }
}
});
3,在底端和顶端都可以操作,但是在4.4的系统中,我发现无论如何获取的高度都会成这样
(int)webviewHight > mWebView.getHeight() + mWebView.getScrollY()
在一个测试手机上发现差值总是1,其他手机没测试
mWebView.setOnCustomScroolChangeListener(new ScrollInterface() {
@Override
public void onSChanged(int l, int t, int oldl, int oldt) {
// TODO Auto-generated method stub
webviewHight = mWebView.getContentHeight()*mWebView.getScale();
//为解决4.4的系统无法获取正确的高度加一个“<10”的
if((int)webviewHight - (mWebView.getHeight() + mWebView.getScrollY()) < 10){
//已经处于底端 10个偏移量
}
//已经处于顶端
// if (mWebView.getScaleY() == 0) {
//
// }
}
});