Android(安卓)SwipeRefreshLayout 自动刷新
16lz
2021-01-26
调用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
更多相关文章
- 通过adb shell dumpsys命令获取当前应用的component
- Android(安卓)Studio 自定义Gradle Plugin
- Android之Service自启动流程
- Android中WebView与Javascript的交互
- Android的JS调用Java代码或使用了Javascript相关技术,如何混淆
- [转载] android中的surface
- Android插件—H.A.X.M(硬件加速执行管理器)
- Android(安卓)Fatal signal 6 (SIGABRT) at 0x0000271d (code=-6
- android webview中使用Java调用JavaScript方法并获取返回值