美文网首页
Android SwipeRefreshLayout 自动刷新

Android SwipeRefreshLayout 自动刷新

作者: 初见破晓 | 来源:发表于2016-02-03 16:13 被阅读1046次

调用Android的SwipeRefreshLayout 的setRefreshing() 方法,本以为可以完成像知乎客户端的自动刷新,可是并没有,在网上找了一下问题的所在

Paste_Image.png

这里的mOriginalOffsetTop参数是在onMeasure方法中获取的,在onMeasure没有调用的时候mOriginalOffsetTop是没有值得,所以按照这个思路去处理这个问题。既然onMeasure没有执行,我们就保证让onMeasure执行之后再去setRefreshing()

所以代码可以这样写

public class SwipeRefresh extends SwipeRefreshLayout
{
    private boolean mMeasured = false;
    private boolean mRefresh = false;

    public SwipeRefresh(Context context)
    {
        super(context);
    }

    public SwipeRefresh(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        if (!mMeasured) {
            mMeasured = true;
            setRefreshing(mRefresh)
        }
     
    }

    @Override
    public void setRefreshing(boolean refreshing)
    {
        if (mMeasured) {
            super.setRefreshing();
        }
        else{
            mRefresh = refreshing;
        }
    }
}

这样, 问题就解决了


XRecyclerView 与 SwipeRefreshLayout一起用会有坑, XRecyclerView自己实现了上下拉的监听,把XRecyclerView做为SwipeRefreshLayout的子view,SwipeRefreshLayout就判断不了下拉事件了,从这个问题上卡主好久。
提供一个CoordinatorLayout 的动画,像钉钉上面的titleBar一样的动画
https://github.com/saulmm/CoordinatorBehaviorExample

相关文章

网友评论

      本文标题:Android SwipeRefreshLayout 自动刷新

      本文链接:https://www.haomeiwen.com/subject/czrekttx.html