SwipeRefreshLayout在使用的时候用户觉得上拉手势过长,需要去解决:
这个方法主要是用来设置手指在屏幕下拉多少距离才会触发SwipeRefreshLayout控件的刷新动画效果;setDistanceToTriggerSync(int distance)参数的distance就是手指下拉的具体高度值。查看SwipeRefreshLayout的源码我们会发现如下代码:
/**
* Set the distance to trigger a sync in dips
*
* @param distance
*/
public void setDistanceToTriggerSync(int distance) {
mTotalDragDistance = distance;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
setDistanceToTriggerSync方法最终是把具体高度distance赋值给了mTotalDragDistance ,该变量的单词意思是 总的拖拽距离 ,也就是我们所说触发刷新动画时手指需要下拉的距离。
//默认触发动画的下拉距离
private static final int DEFAULT_CIRCLE_TARGET = 64;
mSpinnerFinalOffset = DEFAULT_CIRCLE_TARGET * metrics.density;
mTotalDragDistance = mSpinnerFinalOffset;
- 1
- 2
- 3
- 4
- 5
继续看源码,我们会发现,mTotalDragDistance默认等于mSpinnerFinalOffset,而mSpinnerFinalOffset等于64乘以当前分辨率值,也就是说,默认情况下,要触发下拉刷新动画效果,手指下拉距离为64dp。