下拉刷新、上拉加载更多控件实现原理及解析(一)
以前那个账号,以后可能不用了,把文章搬过来!!! 效果预览 接受 hi大头鬼hi 的建议,来一个动态图,方便大家知道这是个什么东西。 动机 项目中,需要一个支持任意View的下拉刷新+上拉加载控件,GitHub上有很多现成的实现,如 Android-PullToRefresh , android-Ultra-Pull-To-Refresh 等,这些Library都非常优秀,但是 Android-PullToRefresh 已经不在维护了, android-Ultra-Pull-To-Refresh 本身并不支持上拉加载更多,经过一番纠结后决定自己写一个。 原理 无论是下拉刷新还是上拉加载更多,原理都是在内容View(ListView、RecyclerView...)不能下拉或者上划时响应用户的触摸事件,在顶部或者底部显示一个刷新视图,在程序刷新操作完成后再隐藏掉。 实现 既然要在头部和顶部添加刷新视图,我们的控件应该是个ViewGroup,我是直接继承FrameLayout,这个控件的名字叫 NsRefreshLayout 。然后我们需要定义一些属性,如是否自动触发上拉加载更多、刷新视图中的文字颜色等。 属性定义 <declare-styleable name="NsRefreshLayout"> <!--Loading视图背景颜色--> <attr name="load_view