SlideBack
Introduction: 无需继承的 Activity 侧滑返回库 类全面屏返回手势效果 仿“即刻”侧滑返回
Tags:
无需继承的 Activity 侧滑返回库,类全面屏返回手势效果 仿 “即刻 App” 侧滑返回。
前情
最近一直在研究侧滑返回效果的实现,目前比较多的方案如下:
- 背景透明主题。问题是性能与神坑 "Only fullscreen activities can request orientation"。
- 将上页 ContentView 绘制到当前页,侧滑时动画推入推出。(也许挺不错?)
- 类全面屏返回手势。即刻 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
- 在 Fragment 的父级 Activity 中注册 SlideBack
- 在 CallBack 中 remove 栈顶的 Fragment
性能
附一张性能截图。可以看出来中间进行了很多次 onCreate & onDestroy,最后内存和开始时一致:
分析
源码分析 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,为程序员发声,为自己发声。