美文网首页
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