Package com.drake.engine.swipeback

Types

DecelerateAnimator
Link copied to clipboard
class DecelerateAnimator @JvmOverloads() constructor(context: Context, mBounceCoeff: Float, isBouncing: Boolean) : ValueAnimator
减速动画,默认启用回弹效果。
ShadowView
Link copied to clipboard
class ShadowView @JvmOverloads() constructor(context: Context, showShadowBar: Boolean, showBackground: Boolean) : View
SwipeBackHelper
Link copied to clipboard
@RequiresApi(api = 19)
class SwipeBackHelper(activity: Activity)
Activity侧滑返回支持,状态栏透明思路:
  1. 在构造方法中设置透明状态栏,利用反射将窗口转为不透明,同时监听布局变化以解决adjustResize失效问题

  1. 在Activity的dispatchTouchEvent方法中拦截触摸事件,满足条件则进行侧滑

  1. 侧滑事件前,利用反射将窗口转为透明;侧滑取消后,利用反射将窗口转为不透明

使用说明:
  1. 仅支持SDK19(Android4.4)及以上

  1. 因状态栏透明,布局会从屏幕顶端开始绘制,Toolbar高度需自行调整

  1. 状态栏透明会导致输入法的adjustPan模式失效,建议设置为adjustResize

  1. 必须设置以下属性,否则侧滑时无法透视下层Activity

@android:color/transparent
  1. 必须设置以下属性,否则ActionMode会插入页面顶端,且状态栏会显示黑色

true
  1. SDK21(Android5.0)以下必须设置以下属性,否则无法通过反射将窗口转为透明

true
  1. 侧滑时会利用反射将窗口转为透明,此时会引起下层Activity生命周期变化,留意可能因此导致的严重问题

(a) onDestory -> onCreat -> onStart -> (onResume -> onPause) -> onStop(b) onRestart -> onStart -> (onResume -> onPause) -> onStop
  1. 当顶层Activity方向与下层Activity方向不一致时侧滑会失效(下层方向未锁定除外),建议关闭该层Activity侧滑功能。

示例场景:视频APP的播放页面和下层页面。
  1. 如需动态支持横竖屏切换,屏幕方向需指定为"behind"跟随栈底Activity方向,同时在onCreate中判断若不支持横竖屏切换,则锁定屏幕方向(避免behind失效)。