仿豌豆荚ViewPager下拉

本文介绍如何实现类似豌豆荚应用详情页的ViewPager下拉效果,通过ViewDragHelper控制头部视图的折叠和展开。在手势事件被拖动层拦截时,实现TopView的上下拖动,当TopView不可见时,手势交给ViewPager,配合ListView滚动监听判断触顶状态。详细步骤包括ViewDragHelper的使用、事件拦截、滚动效果以及自定义拖动逻辑。项目源码已上传至Github。
摘要由CSDN通过智能技术生成

在豌豆荚的应用详情页中有个ViewPager布局,该布局头部添加了一个可上下收展的view用于显示应用资料。实现思路基本上就是利用ViewDragHelper进行拖动来控制头部的view的布局。当TopView可见时,手势事件被拖动层截获控制上下拖动达到TopView的折叠和展开效果。当TopView不可见时,手势事件交由ViewPager进行控制达到ListView正常滚动,并在ListView的onScroll滚动监听中判断ListView是否触顶。如果触顶则下拉拖动ViewPager显示TopView.

项目已经上传到Github的DragTopLayout
先看下效果图: 

实现过程


1.继承一个FrameLayout,在FrameLayout中控制子View拖动。FrameLayout初始化中实例化一个ViewDragHelper对象。

ViewDragHelper.create(this, 1.0f, callback);

2.参数中callback即为拖动过程中所有的事件回调,实现一个ViewDragHelper.Callback()。 
Callback中的所用到得方法如下:

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值