android-Ultra-Pull-To-Refresh刷新
本篇文章是从源码的角度来分析UItraPullToRefresh的刷新,并给出了几个UItraPullToReRefresh几个好看的刷新效果
- 1.功能介绍
- 2.功能设计图
- 3.效果图
- 4.具体使用
1. 功能介绍
下拉刷新,几乎是每个 Android 应用都会需要的功能。 android-Ultra-Pull-To-Refresh (以下简称 UltraPTR )便是一个强大的 Andriod 下拉刷新框架。
主要特点:
(1).继承于 ViewGroup, Content 可以包含任何 View。
(2).简洁完善的 Header 抽象,方便进行拓展,构建符合需求的头部。对比 AndroidPullToRefresh 项目,UltraPTR 没有实现 加载更多 的功能,但我认为 **下拉刷新** 和 **加载更多** 不是同一层次的功能, 下拉刷新 有更广泛的需求,可以适用于任何页面。而 加载更多 的功能应该交由具体的 Content 自己去实现。这应该是和 Google 官方推出 SwipeRefreshLayout 是相同的设计思路,但对SwipeRefreshLayout, UltraPTR 更灵活,更容易拓展。
2.功能设计图
从上图可以简单的分析一下得出了一点结论
- 这个刷新框架有一个刷新布局是PtrFrameLayout,这个刷新布局默认是不带刷新头布局的,它的刷新头布局的添加需要依赖于PtrUIHandler来提供
- PtrUIHandler的实现类有三种,第一种是PtrClassicDefaultHeader,第二种是MaterialHandler,第三种是StoreHouseHeader
- PtrClassiscFrameLayout是PtrFrameLayout的子类,这个类是带有默认的头布局的,这个头布局是PtrClassicDefault.
- 在做刷新的时候一定要给这个PtrFrameLayout刷新布局添加下拉刷新监听ptrHandler
3.效果图
使用eclipse的同学请注意, Intellij IDEA / Android Studio 请忽略
demo可以直接在eclipse中运行, 编译demo项目的同学看这里: http://www.liaohuqiu.net/cn/posts/compile-ultra-ptr-in-eclipse/
先上两张StoreHouse风格的截图! 感谢 CBStoreHouseRefreshControl.
5.0 Material 风格 2014-12-09 新增。阴影效果,gif图看起来有些失真,看demo吧!
支持所有的View:
ListView, GridView, ScrollView, FrameLayout, 甚至 TextView.
支持各种下拉刷新交互.
下拉刷新(iOS风格)
释放刷新(经典风格)
刷新时,头部保持(新浪微博)
自动刷新,进入界面时自动刷新
4.代码具体的书写
注意:使用之前一定要先导入第三方框架:compile ‘com.chanven.lib:cptr:1.1.0’
1.典型的头部效果
实现方式一:因为PtrClassicFrameLayout是PtrFrameLayout的子类,它内部线添加了ClassicHeader所以,直接使用PtrClassicFrameLayout,直接使用即可
- 布局代码代码如下:
<?xml version="1.0" encoding="utf-8"?>
<!--
PtrClassicFrameLayout:是继承子PtrFrameLayout
特点:提供了默认的头部布局
效果:文字 + 进度控件
-->
<com.chanven.lib.cptr.PtrClassicFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main_ptrClassicFrameLayoutId"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:ptr_resistance="1.7"
app:ptr_ratio_of_header_height_to