目录
前言
今天需要实现如下图所示的布局效果:
第一反应是利用ViewDragHelper写一个自定义布局,然后实现拖拽效果。但是如果这样做,会有很多实现上的问题,例如:
- 三个Page的布局内容需要在一个类里完成,耦合性太高了。
- 自定义布局中需要大量处理MotionEvent,解决Touch事件分配和冲突等各种问题。
因此,我考虑一种折中的方法:Pager的滑动通过ViewPager实现,然后再实现一个自定义ViewGroup,用于显示除ViewPager中的前后Page。幸运的是,这种方法是可行的。具体思路如下。
思路
关键函数
首先,介绍一个ViewGroup中的关键函数:
public void setClipChildren(boolean clipChildren)
官方的解释是:
By default, children are clipped to their bounds before drawing. This allows view groups to override this behavior for animations, etc.
翻译: