{"id":13641378,"url":"https://github.com/shichaohui/AnimRefreshRecyclerView","last_synced_at":"2025-04-20T07:33:14.609Z","repository":{"id":36003056,"uuid":"40295894","full_name":"shichaohui/AnimRefreshRecyclerView","owner":"shichaohui","description":"下拉刷新和上拉加载更多的RecyclerView，具有下拉和刷新动画。","archived":false,"fork":false,"pushed_at":"2016-04-11T09:04:50.000Z","size":10774,"stargazers_count":575,"open_issues_count":13,"forks_count":170,"subscribers_count":33,"default_branch":"master","last_synced_at":"2024-08-03T01:22:01.338Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shichaohui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-06T09:14:49.000Z","updated_at":"2023-12-21T02:30:24.000Z","dependencies_parsed_at":"2022-09-09T07:00:34.657Z","dependency_job_id":null,"html_url":"https://github.com/shichaohui/AnimRefreshRecyclerView","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shichaohui%2FAnimRefreshRecyclerView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shichaohui%2FAnimRefreshRecyclerView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shichaohui%2FAnimRefreshRecyclerView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shichaohui%2FAnimRefreshRecyclerView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shichaohui","download_url":"https://codeload.github.com/shichaohui/AnimRefreshRecyclerView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223822270,"owners_count":17208834,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:01:20.265Z","updated_at":"2024-11-09T11:31:19.906Z","avatar_url":"https://github.com/shichaohui.png","language":"Java","funding_links":[],"categories":["Java","RecyclerView"],"sub_categories":[],"readme":"# AnimRefreshRecyclerViewDemo V1.0.3\n\n效果预览，嗯...看起来有点卡，截图软件的问题\n\n![带动画的下拉刷新RecyclerView](http://img.blog.csdn.net/20150808145428151)\n\n**上图中演示了三种不同的布局和下拉效果，三种布局和三种下拉效果可以通过Header的设置任意组合。**\n\n图中普通列表是ListView样式，没有设置Header和Footer，使用默认的下拉刷新和上拉加载。\n宫格列表使用的是自定义Header和Footer的下拉刷新和上拉上拉加载，并设置了下拉使放大的图片。\n瀑布流列表使用的是自定义Header和Footer的下拉刷新和上拉上拉加载，没有设置了下拉使放大的图片，使用默认的刷新动画。\n\n### 用法：\nGradle:\n```xml\ndependencies {\n    compile 'com.android.support:recyclerview-v7:23.1.0'\n    compile 'com.sch.rfview:AnimRefreshRecyclerView:1.0.6@aar'\n}\n```\nEclipse的同学们可以自己下载源码拷贝java文件到自己的工程（别忘了引用RecyclerView的包哦）。\n代码中的配置参考下面的用法代码片段，除了RecyclerView自带的方法，其他方法都是可选的。\n\n#### 根据列表的不同效果选择不同的布局管理器：\n```java\n// 使用重写后的线性布局管理器\nmRecyclerView.setLayoutManager(new AnimRFLinearLayoutManager(context));\n\n// 使用重写后的格子布局管理器\nmRecyclerView.setLayoutManager(new AnimRFGridLayoutManager(context, 2));\n\n// 使用重写后的瀑布流布局管理器\nmRecyclerView.setLayoutManager(new AnimRFStaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));\n```\n\n#### 根据不同的布局管理器设置分割线：\n```java\n// 设置列表布局的分割线\nmRecyclerView.addItemDecoration(new DividerItemDecoration(context,\n        mAnimRFLinearLayoutManager.getOrientation(), true));\n\n// 设置网格或者瀑布流布局的分割线\nmRecyclerView.addItemDecoration(new DividerGridItemDecoration(context, true));\n```\n\n#### 设置Header和Footer：\n```java\n// 头部\nheaderView = LayoutInflater.from(context).inflate(R.layout.header_view, null);\n// 脚部\nfooterView = LayoutInflater.from(context).inflate(R.layout.footer_view, null);\n\n// 添加头部和脚部，如果不添加就使用默认的头部和脚部（头部可以有多个）\nmRecyclerView.addHeaderView(headerView);\n// 设置头部的最大拉伸倍率，默认1.5f，必须写在setHeaderImage()之前\nmRecyclerView.setScaleRatio(2.0f);\n// 设置下拉时拉伸的图片，不设置就使用默认的\nmRecyclerView.setHeaderImage((ImageView) headerView.findViewById(R.id.iv_hander));\nmRecyclerView.addFootView(footerView);\n```\n可以通过`addHeaderView()`和`setHeaderImage()`方法任意组合下拉效果，可以调用多次`addHeaderView()`方法添加多个头部，但是`setHeaderImage()`方法最多被调用一次。\n最多调用一次`addFootView()`方法，即最多设置一个FooterView。\n\n#### 其他设置：\n```java\n// 设置刷新动画的颜色（可选）\nmRecyclerView.setColor(Color.RED, Color.WHITE);\n// 设置头部恢复动画的执行时间，默认500毫秒（可选）\nmRecyclerView.setHeaderImageDurationMillis(1200);\n// 设置拉伸到最高时头部的透明度，默认0.5f（可选）\nmRecyclerView.setHeaderImageMinAlpha(0.6f);\n\n// 设置适配器\nmRecyclerView.setAdapter(new MyAdapter());\n\n// 设置刷新和加载更多数据的监听，分别在onRefresh()和onLoadMore()方法中执行刷新和加载更多操作\nmRecyclerView.setLoadDataListener(new AnimRFRecyclerView.LoadDataListener() {\n    @Override\n    public void onRefresh() {\n\t    // 开启线程刷新数据\n        new Thread(new MyRunnable()).start();\n    }\n\n    @Override\n    public void onLoadMore() {\n\t    // 开启线加载更多数据\n        new Thread(new MyRunnable()).start();\n    }\n});\n```\n\n#### 手动刷新\n如果想第一次进入界面时就显示加载数据的动画，需要使用手动刷新的方法。此方法需要在其他设置完成后调用，具体使用可以[看这里](https://github.com/shichaohui/AnimRefreshRecyclerView/blob/master/app/src/main/java/com/sch/rfview/example/fragment/LinearFragment.java)\n```java\nmRecyclerView.setRefresh(true);\n```\n\n#### 在刷新和加载过更多完成之后调用代码停止动画：\n```java\n// 刷新完成后调用，必须在UI线程中\nmRecyclerView.refreshComplate();\n// 或者 刷新完成后调用，必须在UI线程中\nmRecyclerView.setRefresh(false);\n\n// 加载更多完成后调用，必须在UI线程中\nmRecyclerView.loadMoreComplate();\n```\n\n#### 禁止刷新\n如果不想使用自带的刷新效果，而想要使用SwipRefreshLayout做刷新，可使用以下代码禁止自带的刷新效果\n```\nmRecyclerView.setRefreshEnable(false);\n```\n\n**Tips：**\n\n* 若在使用过程中发现adapter.notifyDataSetChange()等更新数据的方法无效，可使用recyclerView.getAdapter()获取当前使用的Adapter，并使用获取到到Adapter更新数据。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshichaohui%2FAnimRefreshRecyclerView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshichaohui%2FAnimRefreshRecyclerView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshichaohui%2FAnimRefreshRecyclerView/lists"}