webview界面的滑动监听

时间:2024-04-01 10:26:05


     最近在写一个商城的APP,是原生与html5混编。这项目中有这样一个功能要求:  首页上要有一个标题,如图上面要实现一些功能扫描登录的功能,下面整个是webview界面,要求在向下滑动的时候标题消失,滑动到顶端的时候把标题显示出来。webview界面的滑动监听

      要完成以上功能,就要对webview界面进行滑动监听。

        首先我们自定义一个Mywebview,代码如下:

public class MyWebView extends WebView {
   private OnScrollChangeListener mOnScrollChangeListener;

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

   @Override
   protected void onScrollChanged(int l, int t, int oldl, int oldt) {
      super.onScrollChanged(l, t, oldl, oldt);
      // webview的高度
      float webcontent = getContentHeight() * getScale();
      // 当前webview的高度
      float webnow = getHeight() + getScrollY();
      if (Math.abs(webcontent - webnow) < 1) {
         //处于底端
         mOnScrollChangeListener.onPageEnd(l, t, oldl, oldt);
      } else if (getScrollY() == 0) {
         //处于顶端
         mOnScrollChangeListener.onPageTop(l, t, oldl, oldt);
      } else {
         mOnScrollChangeListener.onScrollChanged(l, t, oldl, oldt);
      }
   }

   public void setOnScrollChangeListener(OnScrollChangeListener listener) {
      this.mOnScrollChangeListener = listener;
   }

   public interface OnScrollChangeListener {

      public void onPageEnd(int l, int t, int oldl, int oldt);

      public void onPageTop(int l, int t, int oldl, int oldt);

      public void onScrollChanged(int l, int t, int oldl, int oldt);

   }

}
 

 

       然后在编写webview界面时使用我们的自定义的MyWebView,让后做滑动监听,代码如下:


mWebView.setOnScrollChangeListener(new MyWebView.OnScrollChangeListener() {
    @Override
    public void onPageEnd(int l, int t, int oldl, int oldt) {
        mTitleLin.setVisibility(View.GONE);
    }

    @Override
    public void onPageTop(int l, int t, int oldl, int oldt) {
        mTitleLin.setVisibility(View.VISIBLE);
    }

    @Override
    public void onScrollChanged(int l, int t, int oldl, int oldt) {
        mTitleLin.setVisibility(View.GONE);
    }
});

    当开始滑动时和滑动到低端时,标题栏隐藏起来,当滑动到顶端是,标题栏显示,这样我们要的效果就出来了