Swipe Back Helper
Activity侧滑返回支持,状态栏透明
思路:
在构造方法中设置透明状态栏,利用反射将窗口转为不透明,同时监听布局变化以解决adjustResize失效问题
在Activity的dispatchTouchEvent方法中拦截触摸事件,满足条件则进行侧滑
侧滑事件前,利用反射将窗口转为透明;侧滑取消后,利用反射将窗口转为不透明
使用说明:
仅支持SDK19(Android4.4)及以上
因状态栏透明,布局会从屏幕顶端开始绘制,Toolbar高度需自行调整
状态栏透明会导致输入法的adjustPan模式失效,建议设置为adjustResize
必须设置以下属性,否则侧滑时无法透视下层Activity
必须设置以下属性,否则ActionMode会插入页面顶端,且状态栏会显示黑色
SDK21(Android5.0)以下必须设置以下属性,否则无法通过反射将窗口转为透明
侧滑时会利用反射将窗口转为透明,此时会引起下层Activity生命周期变化,留意可能因此导致的严重问题
(a) onDestory -> onCreat -> onStart -> (onResume -> onPause) -> onStop
(b) onRestart -> onStart -> (onResume -> onPause) -> onStop
当顶层Activity方向与下层Activity方向不一致时侧滑会失效(下层方向未锁定除外),建议关闭该层Activity侧滑功能。
示例场景:视频APP的播放页面和下层页面。
如需动态支持横竖屏切换,屏幕方向需指定为"behind"跟随栈底Activity方向,同时在onCreate中判断若不支持横竖屏切换,则锁定屏幕方向(避免behind失效)。
Author
Simon Lee