PullToRefresh几种实现方式

本文详细介绍了四种常见的下拉刷新技术实现方案,包括通过继承View类、使用LinearLayout、FrameLayout结合ViewDragHelper以及系统自带的下拉刷新组件等方式。每种方案都有其特点和适用场景。

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

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

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

案例:Android-PullToRefresh

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

案例:天猫下拉刷新

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

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

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

3、各种基础布局值提供布局样式,本省并没有什么事件处理,所以不用担心事件的影响。

转载于:https://my.oschina.net/bruces/blog/694152

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值