SlideBack

Introduction: 无需继承的 Activity 侧滑返回库 类全面屏返回手势效果 仿“即刻”侧滑返回
More: Author   ReportBugs   
Tags:

无需继承的 Activity 侧滑返回库,类全面屏返回手势效果 仿 “即刻 App” 侧滑返回。 JitPack


前情

最近一直在研究侧滑返回效果的实现,目前比较多的方案如下:

  1. 背景透明主题。问题是性能与神坑 "Only fullscreen activities can request orientation"。
  2. 将上页 ContentView 绘制到当前页,侧滑时动画推入推出。(也许挺不错?)
  3. 类全面屏返回手势。即刻 App 的效果(下图)。

本库这里选择了方案 3。

预览

即刻 App 本库 Demo 下载


Demo 下载

使用

  • 引用类库 *请将 last-version 替换为最新版本号
     // 1.添加 Jitpack 仓库
     allprojects {
         repositories {
             ...
             maven { url 'https://jitpack.io' }
         }
     }
     // 2.添加项目依赖( last-version 替换为最新版本号)
     dependencies {
         implementation 'com.github.ParfoisMeng:SlideBack:last-version'
     }
    
  • 代码使用

      // 在需要滑动返回的 Activity 中注册
      Activity.registerSlideBack(haveScroll: Boolean = true, callBack: () -> Unit)
    
      // 可以在 [custom: SlideBack.() -> Unit] 中修改 IconView 的样式
      Activity.registerSlideBack(haveScroll: Boolean = true, callBack: () -> Unit, custom: SlideBack.() -> Unit)
    
      // onDestroy 时解绑
      // 内部使用 WeakHashMap,理论上不解绑也行
      Activity.unregisterSlideBack()
    
      // 在 Java 中使用
      // 注册
      SlideBackKt.registerSlideBack(Activity $this$registerSlideBack, boolean haveScroll, Function0 callBack, Function1 custom)
      // 解绑
      SlideBackKt.unregisterSlideBack(Activity $this$unregisterSlideBack);
    

OJBK!So easy!

  • Fragment 支持,详见 issues#2
    1. 在 Fragment 的父级 Activity 中注册 SlideBack
    2. 在 CallBack 中 remove 栈顶的 Fragment

性能

附一张性能截图。可以看出来中间进行了很多次 onCreate & onDestroy,最后内存和开始时一致:
MEMORY

分析

源码分析 MD:Analysis.md & Analysis_v2.md

感谢

感谢 ChenTianSaber 的开源库 SlideBack掘金)提供的思路与源码

更新

  • 1.1.2 - 修改 SlideBackIconView 的 alpha 设置不会出现负数 issues#16
  • 1.1.1 - 修改触摸监听中触点坐标获取方法 event.getRawX() -> event.getX() issues#12
  • 1.1.0 - 改动较大,请酌情考虑是否升级
    • Migrate to AndroidX 且全部改用 Kotlin 语言
    • 移除 annotation 约束 (为了去掉一个依赖包)
    • 不再支持反直觉的右侧侧滑
  • 1.0.7 - Bugfix - 快速滑动时指示箭头未到达最大状态 issues#8
  • 1.0.6 - Bugfix - 包含滑动控件的页面设置 EDGE_BOTH 时右侧滑动失效 issues#6
  • 1.0.5 - 支持设置屏幕左右侧侧滑 issues#4
  • 1.0.4 - 提供新的可配置更多参数的注册方法(旧方法仍然可用)
  • 1.0.3 - Bugfix - 滑动事件冲突 issues#1
  • 1.0.2 - 删除无用依赖,添加 Java 引用示例
  • 1.0.1 - 检查警告,修改类名,更新 README.md
  • 1.0.0 - 初版发布

计划

  • [x] 升级 AndroidX,改 Kotlin 语言 已完成
  • [ ] 滑动事件冲突的解决方案 (1.0.3) 不是很理想,但大家好像都是这么解决的,如果您有更好的方案,请与我沟通,十分欢迎 PR。
  • [ ] 源码分析 MD 给郭婶投两稿也没通过……啥时候有想法再重写吧 :-(
  • [ ] 看情况吧......

支持

劳烦各位大佬给个 Star 让我出去 装 B 行嘛!

其他

已使用 996 License,为程序员发声,为自己发声。

996.icu

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools