package com.cusnews.widgets; import android.content.Context; import android.util.AttributeSet; import android.webkit.WebView; /** * An extension of standard WebView that we can detect which direction user scrolled. * * @author Xinyue Zhao */ public final class WebViewEx extends WebView { /** * A listener hooks the WebView when it scrolled. */ private OnWebViewExScrolledListener mOnWebViewExScrolledListener; public WebViewEx( Context context ) { super( context ); } public WebViewEx( Context context, AttributeSet attrs ) { super( context, attrs ); } public WebViewEx( Context context, AttributeSet attrs, int defStyle ) { super( context, attrs, defStyle ); } @Override protected void onScrollChanged( int l, int t, int oldl, int oldt ) { if( t > 0 ) { if( mOnWebViewExScrolledListener != null ) { mOnWebViewExScrolledListener.onScrollChanged( t > oldt ); } } else { if( t == 0 ) { if( mOnWebViewExScrolledListener != null ) { mOnWebViewExScrolledListener.onScrolledTop(); } } } super.onScrollChanged( l, t, oldl, oldt ); } /** * Set listener hooks the WebView when it scrolled. * * @param onWebViewExScrolledListener * The instance of listener. */ public void setOnWebViewExScrolledListener( OnWebViewExScrolledListener onWebViewExScrolledListener ) { mOnWebViewExScrolledListener = onWebViewExScrolledListener; } /** * A listener hooks the WebView when it scrolled. * * @author Xinyue Zhao */ public interface OnWebViewExScrolledListener { /** * Event fired when user scrolled the WebView. * * @param isUp * True if user scrolled up, false then down. */ void onScrollChanged( boolean isUp ); /** * Event fired when user scrolled the WebView onto TOP. */ void onScrolledTop(); } }