[go: up one dir, main page]

Skip to content

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

License

Notifications You must be signed in to change notification settings

ParfoisMeng/SlideBack

Repository files navigation

SlideBack

无需继承的 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 - 初版发布

计划

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

支持

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

其他

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

996.icu

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published