介绍

在知乎client上看到了这样的效果。左滑Activity能够返回到上一界面。非常适合单手操作。

找了非常久,最终在github上看到了SwipeBackLayout这个开源项目。地址:

https://github.com/ikew0ng/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的下层是黑色的
<item name="android:windowIsTranslucent">true</item>  
  • 当使用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截图:

这是Demo源代码

开发工具:AndroidStudio

最新文章

  1. mybatis:choose when otherwise标签
  2. storage disk
  3. 2.ReactNative Properties|States|Styles 笔记
  4. IE6 P标签下DIV无法inline-block
  5. 【摘录】某表含有N个字段超精简模糊查询方法
  6. Sql如何自动定时备份数据库
  7. C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
  8. Linq之Expression进阶
  9. 【JSON】Jackson初学,及常用的例子
  10. ASP.NET分页
  11. css水平居中总结
  12. Jquery Ajax的时候 老是返回到 error,是因为json格式不正规的原因
  13. 红米1S Mokee4.4.4 本人编译版耳机线控改动调音量以及上下曲方法
  14. js循环POST提交添加辅助单位
  15. css预处理器less和scss之less介绍(一)
  16. 用C#(.NET Core) 实现简单工厂和工厂方法模式
  17. 你不知道的JavaScript--Item19 执行上下文(execution context)
  18. node开发备注
  19. web前端安全
  20. mui集成百度ECharts的统计图表以及清空释放图表

热门文章

  1. [每日App一]QQ主题要逆天!轻轻松松月入30万!
  2. Zend Framework 2中如何使用Service Manager
  3. 大数据学习——scala入门练习
  4. List容器——ArrayList及常用API
  5. C# TypeDescriptor获取类型转换器,实现泛型转换
  6. js多少时间之前
  7. iOS长按手势调用两次解决方法
  8. 【Luogu】P1472奶牛家谱(DP)
  9. 使用ssh建立隧道和web代理
  10. 背包问题--golang的入门解