炫酷的列表下拉刷新效果

下拉刷新是一個很常見的功能,現在很多app提供的下拉刷新效果都千篇一律,就像Google為我們提供的SwipeRefreshlayout,看多了是不是覺得有些厭倦了?如果在用戶進行下拉等待的時候,給他們提供一些有創造力的效果,絕對會給用戶帶來不一樣的體驗。今天就為大家介紹一個煙花下拉刷新效果-FireworkyPullToRefresh

Talk is cheap ,show me the gif:

image.png
demo_.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 or modern

以上四個配置可以直接在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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容