微信是腾讯家族的一款旗舰产品,前些日子实在无聊就可劲刷朋友圈,刹那间发现微信具有二级页面滑动关闭功能,(屏随指动,纵享丝滑)用户好感倍增,顿时两眼泛水花开始膜拜大厂产品,工程师。
努力成为自己想要成为的人,心中默念:“当你停下来休息的时候,不要忘记别人还在奔跑”。于是开始学习相关技术丰富自己。百度,Google,Github,功夫不负有心人,通过自己几个小时的努力实现了自己想要的效果。我们看图:
Android_YangKe.gif
Android_YangKe.gif
由于动态图压缩比较严重,这里进行简单讲解。图一效果主要是:当我们手指没有将页面拖动到屏幕中间及后半部分时,应用会自动回弹到原始状态,当我们将页面拖动到屏幕后半部分时页面会 finish 掉。功能实现了,具体思路是什么呢?如果你对Activity,Window,View 整体轮廓不是很熟悉,请做知识储备 点我。
下面我们看下项目结构:
Android_YangKe.png
不要重复造轮子,没错这是一个三方库。但我们争取做到知其然,知其所以然。下面开始我们的分析,注意其中这样几个 API:
- SwipeBackActivity
- SwipeBackActivityHelper
- SwipeBackActivityBase
- SwipeBackLayout
- ViewDragHelper
SwipeBackActivityBase
SwipeBackActivityBase
从命名上我们可以看出此类为基类,它是滑动关闭 Activity 的抽象。为什么选择基类入手?一般阅读源码代码量都比较大,从基类入手便于我们了解整体框架轮廓,至于实现细节,我们根据需要再来分析。
代码之旅,即将开始:3,2,1...
public interface SwipeBackActivityBase {
/**
* 从当前 Activity 返回关联的 SwipeBa