下拉刷新是一個很常見的功能,現(xiàn)在很多app提供的下拉刷新效果都千篇一律汹来,就像Google為我們提供的SwipeRefreshlayout
续膳,看多了是不是覺得有些厭倦了改艇?如果在用戶進行下拉等待的時候,給他們提供一些有創(chuàng)造力的效果坟岔,絕對會給用戶帶來不一樣的體驗谒兄。今天就為大家介紹一個煙花下拉刷新效果-FireworkyPullToRefresh
。
Talk is cheap 社付,show me the gif:
效果是不是很爆炸承疲?看一下如何將這個炫酷的下拉刷新效果使用到我們的應用中:
build.gradle
中添加依賴:
compile 'com.cleveroad:fireworkypulltorefresh:1.0.3'
在xml文件中,RecyclerView
的父容器使用FireworkyPullToRefresh
:
<com.cleveroad.pulltorefresh.firework.FireworkyPullToRefreshLayout
android:id="@+id/pullToRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.cleveroad.ptr.FireworkyPullToRefreshLayout>
FireworkyPullToRefresh
提供了如下一些可以配置的屬性:
ptr_fireworkColors: 設置煙花的顏色
ptr_background: 頭部下來部分的背景圖片
ptr_rocketAnimDuration:煙花發(fā)射的動畫時間
ptr_fireworkStyle: 設置煙花的模式
classic
ormodern
以上四個配置可以直接在xml中使用:
<com.cleveroad.pulltorefresh.firework.FireworkyPullToRefreshLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
...
app:ptr_fireworkColors="@array/fireworkColors"
app:ptr_background="@drawable/background"
app:ptr_rocketAnimDuration="1000">
也可以在代碼中設置:
//use .config() methods:
mPullToRefresh.getConfig().setBackground(backgroundDrawable);
mPullToRefresh.getConfig().setBackground(backgroundBitmap);
mPullToRefresh.getConfig().setBackground(R.drawable.background);
mPullToRefresh.getConfig().setBackgroundColor(Color.BLACK);
mPullToRefresh.getConfig().setBackgroundColorFromResources(R.color.background);
mPullToRefresh.getConfig().setFireworkColors(colorsIntArray);
mPullToRefresh.getConfig().setFireworkColors(R.array.fireworkColors);
mPullRefreshView.getConfig().setFireworkStyle(Configuration.FireworkStyle.MODERN);
mPullToRefresh.getConfig().setRocketAnimDuration(1000L);
刷新回調(diào)
用法跟SwipeRefreshlayout
很相似鸥咖,通過實現(xiàn)接口PullToRefreshView.OnRefreshListener
來添加刷新邏輯:
mPullToRefresh.setOnRefreshListener(new PullToRefreshView.OnRefreshListener() {
@Override
public void onRefresh() {
//refresh your data here
}
});
開始或者取消動畫:
mPullRefreshView.setRefreshing(isRefreshing);
自定義動畫
如果你想要自己實現(xiàn)動畫燕鸽,也是可以的,重寫FireworkyPullToRefreshLayout.OnChildScrollUpCallback
來實現(xiàn)你自己的動畫邏輯
mPullToRefresh.setOnChildScrollUpCallback(new FireworkyPullToRefreshLayout.OnChildScrollUpCallback() {
@Override
public boolean canChildScrollUp(@NonNull FireworkyPullToRefreshLayout parent, @Nullable View child) {
//put your implementation here
}
});
具體的實現(xiàn)細節(jié)可以查源碼啼辣,github:https://github.com/Cleveroad/FireworkyPullToRefresh