Webviewインタフェースのスライドリスニング

7041 ワード

最近、ショッピングモールのアプリを書いていますが、原生とhtml 5が混在しています.このプロジェクトには、トップページにタイトルが必要です.図のように機能スキャンログインの機能を実現し、下全体が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);
    }
});

スライドを開始したときとローエンドにスライドしたとき、タイトルバーが非表示になり、トップにスライドすると、タイトルバーが表示され、効果が得られます.