package com.circlegate.liban.view;
import com.circlegate.liban.view.Common.OnScrollChangedListener;
import com.circlegate.liban.view.Common.OnSizeChangedListener;
import com.circlegate.liban.view.ScrollViewHelper.ScrollViewHelperHost;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;
public class CustomScrollView extends ScrollView implements ScrollViewHelperHost {
private final ScrollViewHelper helper;
private OnScrollChangedListener onScrollChangedListener;
private OnSizeChangedListener onSizeChangedListener;
public CustomScrollView(Context context) {
this(context, null);
}
public CustomScrollView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.helper = new ScrollViewHelper(this);
}
//
// GETTERS
//
@Override
public boolean isScrolledToTop() {
return getScrollY() == 0;
}
//
// SETTERS
//
public void setScrollingEnabled(boolean scrollingEnabled) {
this.helper.setScrollingEnabled(scrollingEnabled);
}
public void setRefuseOverscroll(boolean refuseOverscroll) {
this.helper.setRefuseOverscroll(refuseOverscroll);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!helper.onAnyTouchEvent(ev))
return false;
else
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!helper.onAnyTouchEvent(ev))
return false;
else
return super.onTouchEvent(ev);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (this.onScrollChangedListener != null) {
this.onScrollChangedListener.onScrollChanged(l, t, oldl, oldt);
}
}
public void setOnScrollChangedListener(OnScrollChangedListener l) {
this.onScrollChangedListener = l;
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (this.onSizeChangedListener != null) {
this.onSizeChangedListener.onSizeChanged(w, h, oldw, oldh);
}
}
public void setOnSizeChangedListener(OnSizeChangedListener l) {
this.onSizeChangedListener = l;
}
}