Skip to content

Commit a9e6e49

Browse files
committed
delay the refreshing anim by 50ms to workaround https://code.google.com/p/android/issues/detail?id=77712
1 parent eeb819b commit a9e6e49

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

WordPressUtils/src/main/java/org/wordpress/android/util/ptr/SwipeToRefreshHelper.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
public class SwipeToRefreshHelper implements OnRefreshListener {
1313
private SwipeRefreshLayout mSwipeRefreshLayout;
1414
private RefreshListener mRefreshListener;
15+
private boolean mRefreshing;
1516

1617
public interface RefreshListener {
1718
public void onRefreshStarted();
@@ -33,7 +34,20 @@ public void init(Activity activity, SwipeRefreshLayout swipeRefreshLayout, Refre
3334
}
3435

3536
public void setRefreshing(boolean refreshing) {
36-
mSwipeRefreshLayout.setRefreshing(refreshing);
37+
mRefreshing = refreshing;
38+
// Delayed refresh, if fixes https://code.google.com/p/android/issues/detail?id=77712
39+
// 50ms seems a good compromise (always worked during tests) and fast enough so user can't notice the delay
40+
if (refreshing) {
41+
mSwipeRefreshLayout.postDelayed(new Runnable() {
42+
@Override
43+
public void run() {
44+
// use mRefreshing so if the refresh takes less than 50ms, loading indicator won't show up.
45+
mSwipeRefreshLayout.setRefreshing(mRefreshing);
46+
}
47+
}, 50);
48+
} else {
49+
mSwipeRefreshLayout.setRefreshing(false);
50+
}
3751
}
3852

3953
public boolean isRefreshing() {

0 commit comments

Comments
 (0)