PullToRefresh几种实现方式

方案一:继承想下拉刷新的View类(ListView|RecyclerView|ScrollView等),重写dispatchTouchEvent或者onTouchEvent方法,改变顶部刷新RefreshView的LayoutParams.height。须要借助Scroller类在手势释放的时候自动滚动。java

案例:ListViewForPath|FriendsCircleLisView|XRecyclerView|XListView 还有一种不是该变height而是改变paddingTop,案例老的网易新闻下拉刷新 还有johannilsson/android-pulltorefreshandroid

方案二:外层用LinearLayout包起来,最上面添加刷新View。设置LinearLayout的paddingTop=-RefreshView.measureHeight,在onTouchEvent中调用LinearLayout.scrollTo或者scrollBy方法滚动LinearLayout中的内容。须要借助Scroller类在手势释放的时候自动滚动。git

案例:Android-PullToRefreshgithub

方案三:外层用FrameLayout包起来,RefreshView放最底层,想下拉刷新的View放在最上层。在FrameLayout中运用ViewDragHelper工具类拖动改变RefreshView的位置。工具

案例:天猫下拉刷新布局

方案四:系统提供的下拉刷新方案http://pan.baidu.com/s/1eSNSnmE动画

总结: 一、下拉刷新就是经过改变refreshView的位置或者大小或者padding来显示不一样的状态spa

二、平滑滚动是经过Scroller或者利用动画插值循环调用不停改变值实现(Android-PullToRefresh)继承

三、各类基础布局值提供布局样式,本省并无什么事件处理,因此不用担忧事件的影响。事件

相关文章
相关标签/搜索