Android右滑返回

作为一个Android开发者,遇到好的交互当然希望引用过来.iphone的应用可以从屏幕左端右滑返回上一个界面,这个交互在单手操作上非常舒服.那么当然希望在Android上实现.

起初看到知乎和微信都实现了这个功能,于是就自己偷懒没有去想怎么实现,而是先去网上找了一下别人的实现,最后找到了这个Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果.作者的原理和代码都很简明,但是copy下来后发现还是有点小bug,于是做了点修复.以及我和它的思路有所区别,最后就没有fork他的库了,而是自己写了一个demo:Android 右滑销毁Activity的Layout.

最初实现的时候,我也想像知乎一样可以从屏幕中间滑动,但最后发现知乎并没有ViewPager之类的横向滑动的控件,所以对原来的库做了以下修改:

  1. 采取了边缘滑动的返回方式.这样便不需要考虑横向滑动的控件的触摸事件冲突.
  2. 根据滑动的比例动态改变背景色,使背景色从黑色40%透明到全透明变化,过渡更加自然.
  3. finish()的时候调用overridePendingTransition(0, 0)使Activity的关闭动画取消,用户感觉更加自然.
  4. dispatchTouchEvent()中对Move进行判断,这样当子View不消费Touch事件时,slideFinishLayout可以从任意位置滑动返回.

待解决优化:

因为这里实现滑动返回的是把Activity设为透明,那么上一个Activity的onStop()方法不会被调用,当Activity打开过多,性能下降很快.