FreeSwipeRefreshLayout

Introduction: 基于 SwipeRefreshLayout 的自由定义刷新动画的下拉刷新工具
More: Author   ReportBugs   
Tags:
下拉刷新-自定义-SwipeRefreshLayout-

基于 SwipeRefreshLayout 的自由定义刷新动画的下拉刷新工具

效果:

上下拉过程中

刷新中到还原

引入:

在 build.gradle 中加入

compile 'com.nelson:FreeSwipeRefreshLayout:0.1.0'

用法:

1.首先,在 xml 中像使用 SwipeRefreshLayout 一样,将布局套在需要刷新的控件上。注意:这里需要给它的 app:freeLayout 属性赋值,值为你要用来替换的下拉动画的布局文件。

 <com.nelson.libraries.FreeSwipeRefreshLayout
        android:id="@+id/refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:freeLayout="@layout/item_main_free"
        >

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />
   </com.nelson.libraries.FreeSwipeRefreshLayout>

2.在 java 中实现动画 manager 接口

            FreeSwipeAnimationManager manager = new FreeSwipeAnimationManager() {

            @Override
            public void onPull(View freeView, float position) {
            //这里是拖拽过程中的回调,position 为拖拽进度,可以大于 1
                freeView.setPivotX(freeView.findViewById(R.id.tv).getRight()-freeView.findViewById(R.id.tv).getWidth()/2);
                freeView.setPivotY(freeView.findViewById(R.id.tv).getBottom()-freeView.findViewById(R.id.tv).getHeight()/2);
                freeView.setRotation(360*position);
            }

            @Override
            public void onRefresh(final View freeView) {
            //这里是拖拽完成且达到刷新点的回调,表示正在刷新中
                freeView.setRotation(0);
            }

            @Override
            public void onBack(View freeView, float position) {
            //这里是回复到初始状态的过程中回调,position 依然为进度值
                freeView.setRotation(360*position);
            }

        }

3.给 FreeSwipeRefreshLayout 设置 Manager

    refresh.setFreeSwipeAnimationManager(manager);

4.手动停止刷新

    //只需要调用这个方法即可
    setRefreshing(false);

5.其它

保留了部分原 SwipeRefreshLayout 中的 public 方法,可以自行查看,比如 public boolean isRefreshing();
Android 开发经验分享
随手点击下面广告支持本站吧
 
Android 开发经验分享