实现Activity的滑动返回效果

介绍

在知乎客户端上看到了这种效果,左滑Activity可以返回到上一界面,非常适合单手操作。

找了很久,终于在github上看到了SwipeBackLayout这个开源项目,地址:

https://github.com/ikew0ng/SwipeBackLayout

实现

需要使用到的类:

SwipeBackActivity.javaSwipeBackLayout.javaViewDragHelper.java使当前的Activity继承SwipeBackActivity{private SwipeBackLayout mSwipeBackLayout;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mSwipeBackLayout = getSwipeBackLayout();//设置滑动方向,可设置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOMmSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);}}在使用的主题中添加下面的属性,否则滑动时activity的下层是黑色的<item name=”android:windowIsTranslucent”>true</item> 当使用BaseActivity时,为了使首页不会滑动删除,只需如下设置即可setSwipeBackEnable(false); //禁止滑动删除另外,这个滑动删除的效果只能从边界滑动才有效果,如果要扩大touch的范围,可以调用mSwipeBackLayout.setEdgeSize(int size);

但是上面这个方法不太好用,效果不明显,,推荐修改ViewDragHelper.java这个类源码中的getEdgeTouched(int x, int y)方法,如下

(int x, int y) {int result = 0;result = EDGE_LEFT;//这样每次都是全屏左滑删除//解决只有点击屏幕左边才有响应的问题/*if (x < mParentView.getLeft() + mEdgeSize)result = EDGE_LEFT;if (y < mParentView.getTop() + mEdgeSize)result = EDGE_TOP;if (x > mParentView.getRight() – mEdgeSize)result = EDGE_RIGHT;if (y > mParentView.getBottom() – mEdgeSize)result = EDGE_BOTTOM;*/return result;}

经过上面步骤,应该就能如期实现效果了。 下面放上我的Demo截图:

注:Demo源码稍后会放上来。

看看花儿冲破北疆漫漫寒冬,妖娆绽放;

实现Activity的滑动返回效果

相关文章:

你感兴趣的文章:

标签云: