|
|
108
|
protected boolean isReadyForPullStart() {
|
|
|
109
|
return mRefreshableView.getScrollY() == 0;
|
|
|
110
|
}
|
|
|
111
|
|
|
|
112
|
@Override
|
|
|
113
|
protected boolean isReadyForPullEnd() {
|
|
|
114
|
float exactContentHeight = (float) Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
|
|
|
115
|
return mRefreshableView.getScrollY() >= (exactContentHeight - mRefreshableView.getHeight());
|
|
|
116
|
}
|
|
|
117
|
|
|
|
118
|
@Override
|
|
|
119
|
protected void onPtrRestoreInstanceState(Bundle savedInstanceState) {
|
|
|
120
|
super.onPtrRestoreInstanceState(savedInstanceState);
|
|
|
121
|
mRefreshableView.restoreState(savedInstanceState);
|
|
|
122
|
}
|
|
|
123
|
|
|
|
124
|
@Override
|
|
|
125
|
protected void onPtrSaveInstanceState(Bundle saveState) {
|
|
|
126
|
super.onPtrSaveInstanceState(saveState);
|
|
|
127
|
mRefreshableView.saveState(saveState);
|
|
|
128
|
}
|
|
|
129
|
|
|
|
130
|
@TargetApi(9)
|
|
|
131
|
final class InternalWebViewSDK9 extends WebView {
|
|
|
132
|
|
|
|
133
|
// WebView doesn't always scroll back to it's edge so we add some
|
|
|
134
|
// fuzziness
|
|
|
135
|
static final int OVERSCROLL_FUZZY_THRESHOLD = 2;
|
|
|
136
|
|
|
|
137
|
// WebView seems quite reluctant to overscroll so we use the scale
|
|
|
138
|
// factor to scale it's value
|
|
|
139
|
static final float OVERSCROLL_SCALE_FACTOR = 1.5f;
|
|
|
140
|
|
|
|
141
|
public InternalWebViewSDK9(Context context, AttributeSet attrs) {
|
|
|
142
|
super(context, attrs);
|
|
|
143
|
}
|
|
|
144
|
|
|
|
145
|
@Override
|
|
|
146
|
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,
|
|
|
147
|
int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
|
|
|
148
|
|
|
|
149
|
final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
|
|
|
150
|
scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
|
|
|
151
|
|
|
|
152
|
// Does all of the hard work...
|
|
|
153
|
OverscrollHelper.overScrollBy(PullToRefreshWebView.this, deltaX, scrollX, deltaY, scrollY,
|
|
|
154
|
getScrollRange(), OVERSCROLL_FUZZY_THRESHOLD, OVERSCROLL_SCALE_FACTOR, isTouchEvent);
|
|
|
155
|
|
|
|
156
|
return returnValue;
|
|
|
157
|
}
|
|
|
158
|
|
|
|
159
|
private int getScrollRange() {
|
|
|
160
|
return (int) Math.max(0, Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())
|
|
|
161
|
- (getHeight() - getPaddingBottom() - getPaddingTop()));
|
|
|
162
|
}
|
|
|
163
|
}
|
|
165
|
164
|
}
|