Android SwiperRefreshLayout 首次加载显示刷新动画

来源:互联网 发布:大屏幕数据展示 html5 编辑:程序博客网 时间:2024/06/17 06:13

转载请注明     作者:田野光   地址:http://blog.csdn.net/lovefish2/article/details/45242731


SwiperRefreshLayout 是Google官方推出的下拉刷新的控件,最近项目中用到时,遇到了一个问题。首次加载数据时,希望能够显示刷新的动画,也就是 SwiperRefreshLayout 自带的CircleView动画(旧版本sdk为彩虹条),但是默认setRefreshing(true)方法,无法实线初次加载显示动画的效果。我们可以这样处理:


swipeRefreshLayout.setProgressViewOffset(false, 0,  (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics()));swipeRefreshLayout.setRefreshing(true);

不过由于显示的动画只是CircleView原地转圈,不包含下拉过程的动画。数据处理过程时间一般不会很长,所以显示时间较短。我们可以手动的增加动画延时。

final Handler handler = new Handler();handler.postDelayed(new Runnable() {        @Override         public void run() {             swipeLayout.setRefreshing(false);             errorSwipeLayout.setRefreshing(false);         }}, 1000);

更新遇到的问题:2.3的设备上,会导致这样一个bug:如果手指滑动距离达不到触发刷新的条件,CircleView会显示空白,一直悬停在屏幕上。4.0以上设备无此情况。

原因:未知。如果有大神了解,请赐教!

解决办法:setProgressViewOffset第一个参数设为true。如果在Z方向没有高于progress spinner显示的视图,这样修改应该没有问题。


参考资料:

1. http://stackoverflow.com/questions/26858692/swiperefreshlayout-setrefreshing-not-showing-indicator-initially

2. https://code.google.com/p/android/issues/detail?id=77712


0 0
原创粉丝点击