炫酷的列表下拉重新整理效果
下拉重新整理是一個很常見的功能,現在很多app提供的下拉重新整理效果都千篇一律,就像Google為我們提供的 SwipeRefreshlayout
,看多了是不是覺得有些厭倦了?如果在使用者進行下拉等待的時候,給他們提供一些有創造力的效果,絕對會給使用者帶來不一樣的體驗。今天就為大家介紹一個 煙花下拉重新整理 效果- 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:煙花發射的動畫時間
-
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);
重新整理回撥
用法跟 SwipeRefreshlayout
很相似,通過實現介面 PullToRefreshView.OnRefreshListener
來新增重新整理邏輯:
mPullToRefresh.setOnRefreshListener(new PullToRefreshView.OnRefreshListener() { @Override public void onRefresh() { //refresh your data here } });
開始或者取消動畫:
mPullRefreshView.setRefreshing(isRefreshing);
自定義動畫
如果你想要自己實現動畫,也是可以的,重寫 FireworkyPullToRefreshLayout.OnChildScrollUpCallback
來實現你自己的動畫邏輯
mPullToRefresh.setOnChildScrollUpCallback(new FireworkyPullToRefreshLayout.OnChildScrollUpCallback() { @Override public boolean canChildScrollUp(@NonNull FireworkyPullToRefreshLayout parent, @Nullable View child) { //put your implementation here } });
具體的實現細節可以查原始碼,github: https://github.com/Cleveroad/FireworkyPullToRefresh
資料分享歡迎Android工程師朋友們加入安卓開發技術進階互助:856328774免費提供安卓開發架構的資料(包括Fultter、高階UI、效能優化、架構師課程、 NDK、Kotlin、混合式開發(ReactNative+Weex)和一線網際網路公司關於Android面試的題目彙總。
合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
