在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,其他手机没测试


4,目前无法解决,但是考虑到底部显示的话,我这里就直接做了一个偏移,

  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) {//                  //                }            }        });


这样也可以解决4.4系统你在底部操作(其实也不是完全在底部)


更多相关文章

  1. Android(安卓)向系统发送一条短信
  2. Android(安卓)SystemService类注释
  3. android AlarmManager 的相關應用
  4. android中使用线程(比如修改textview的text)
  5. android系统颜色大全
  6. Android(安卓)Log 日志系统
  7. Android(安卓)驱动之旅 第五章: 在Android(安卓)系统的应用程序框
  8. Android(安卓)滑动绘制流程探究 系统是如何提高滑动性能?
  9. 【Android】Android设计准则

随机推荐

  1. EventBus 《二》 Android EventBus的简单
  2. Android之SQLite 学习一
  3. Android进阶(二十二)设置TextView文字水
  4. Android 安全加密:对称加密详解
  5. 【Android Basics】Android是什么? (What
  6. Android手机上关于viewport的理解
  7. Android 漫游之路------Android电话拨号
  8. Android中minSdkVersion、targetSdkVersi
  9. Android窗体悬浮在另一个窗体
  10. android 设置app版本号