SwipeRefreshLayout - 如何检测拖动距离?

时间:2014-07-19 09:52:07

标签: android swiperefreshlayout

我在布局中使用SwipeRefreshLayout,我需要显示一个动画,该动画可以调整到已经拉下的距离。

到目前为止,我还没有找到任何方法来检测拉出的实际距离。 SwipeRefreshListener仅检测是否发生了刷新。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

要监控拖动距离,您只需跟踪SwiperefreshLayout顶部与其唯一直接儿童顶部之间的距离。

我发现观察距离变化的唯一方法是使用PrewDrawListener。

这是一个代码段:

swipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swipe_container);
...
final View swipeTarget = swipeRefreshLayout.getChildAt(0);

swipeTarget.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    @Override
    public boolean onPreDraw() {
        dragDistance = swipeTarget.getTop() - swipeRefreshLayout.getTop();
        return true;
    }
});