android activity滑动返回,Android实现Activity的滑动返回效果

介绍

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

Jc4h7ZdLmsNcL0mi.jpg

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

实现

需要使用到的类:

SwipeBackActivity.java

SwipeBackLayout.java

ViewDragHelper.java

使当前的Activity继承SwipeBackActivity

public class BaseActivity extends SwipeBackActivity {

private SwipeBackLayout mSwipeBackLayout;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mSwipeBackLayout = getSwipeBackLayout();

//设置滑动方向,可设置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM

mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);

}

}

在使用的主题中添加下面的属性,否则滑动时activity的下层是黑色的

true

当使用BaseActivity时,为了使首页不会滑动删除,只需如下设置即可

setSwipeBackEnable(false); //禁止滑动删除

另外,这个滑动删除的效果只能从边界滑动才有效果,如果要扩大touch的范围,可以调用

mSwipeBackLayout.setEdgeSize(int size);

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

private int getEdgeTouched(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截图:

Cdg6lvntQKc6fWfd.png

这是Demo源码 开发工具:Android Studio

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值