调用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

更多相关文章

  1. 通过adb shell dumpsys命令获取当前应用的component
  2. Android(安卓)Studio 自定义Gradle Plugin
  3. Android之Service自启动流程
  4. Android中WebView与Javascript的交互
  5. Android的JS调用Java代码或使用了Javascript相关技术,如何混淆
  6. [转载] android中的surface
  7. Android插件—H.A.X.M(硬件加速执行管理器)
  8. Android(安卓)Fatal signal 6 (SIGABRT) at 0x0000271d (code=-6
  9. android webview中使用Java调用JavaScript方法并获取返回值

随机推荐

  1. PC监控通过网络数据监控ANDROID屏幕
  2. Android线程模型解析(包括UI的更新)
  3. Android程序开发的环境配置
  4. android 返回键与finish区别 onBackPress
  5. AndroidManifest.xml--android系统权限定
  6. 对于android触摸事件模型的一些理解
  7. 单线程模型中Message、Handler、Message
  8. Android 自定义View
  9. 手机敲命令利器---Android Terminal
  10. 《Android深度探索(卷1):HAL与驱动开发》新