/*
*
* Copyright (C) 2013 HalZhang.
* http://www.gnu.org/licenses/gpl-3.0.txt
*/
package com.halzhang.android.apps.startupnews.ui.widgets;
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;
/**
* StartupNews
* <p>
* </p>
*
* @author <a href="http://weibo.com/halzhang">Hal</a>
* @version Aug 25, 2013
*/
public class ObservableWebView extends WebView {
private final static int TOUCH_STATE_REST = 0;
private final static int TOUCH_STATE_SCROLL_UP = 1;
private final static int TOUCH_STATE_SCROLL_DOWN = 2;
private int mTouchState = TOUCH_STATE_REST;
private OnScrollChangedCallback mOnScrollChangedCallback;
public ObservableWebView(final Context context) {
super(context);
}
public ObservableWebView(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
public ObservableWebView(final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onScrollChanged(final int l, final int t, final int oldl, final int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mOnScrollChangedCallback != null) {
mOnScrollChangedCallback.onScroll(l, t, oldl, oldt);
if (t >= 0 && oldt >= 0) {
if (oldt > t && mTouchState != TOUCH_STATE_SCROLL_UP) {
mTouchState = TOUCH_STATE_SCROLL_UP;
mOnScrollChangedCallback.onScrollUp();
} else if (oldt < t && mTouchState != TOUCH_STATE_SCROLL_DOWN) {
mTouchState = TOUCH_STATE_SCROLL_DOWN;
mOnScrollChangedCallback.onScrollDown();
}
}
}
}
public OnScrollChangedCallback getOnScrollChangedCallback() {
return mOnScrollChangedCallback;
}
public void setOnScrollChangedCallback(final OnScrollChangedCallback onScrollChangedCallback) {
mOnScrollChangedCallback = onScrollChangedCallback;
}
/**
* Impliment in the activity/fragment/view that you want to listen to the
* webview
*/
public static interface OnScrollChangedCallback {
public void onScroll(int l, int t, int oldl, int oldt);
/**
* 向上滚动
*/
public void onScrollUp();
/**
* 向下滚动
*/
public void onScrollDown();
}
}