調(diào)用Android的SwipeRefreshLayout 的setRefreshing() 方法抹竹,本以為可以完成像知乎客戶端的自動刷新开瞭,可是并沒有欢唾,在網(wǎng)上找了一下問題的所在
Paste_Image.png
這里的mOriginalOffsetTop參數(shù)是在onMeasure方法中獲取的拗引,在onMeasure沒有調(diào)用的時候mOriginalOffsetTop是沒有值得,所以按照這個思路去處理這個問題橘荠。既然onMeasure沒有執(zhí)行屿附,我們就保證讓onMeasure執(zhí)行之后再去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自己實現(xiàn)了上下拉的監(jiān)聽拿撩,把XRecyclerView做為SwipeRefreshLayout的子view,SwipeRefreshLayout就判斷不了下拉事件了如蚜,從這個問題上卡主好久压恒。
提供一個CoordinatorLayout 的動畫,像釘釘上面的titleBar一樣的動畫
https://github.com/saulmm/CoordinatorBehaviorExample