SmartSwipe
SmartSwipe copied to clipboard
Activity相关的侧滑,第一次滑动不够灵敏
在Activity中使用ActivitySlidingBackConsumer时,第一次侧滑返回,手指滑动了半个屏幕,Activity才刚开始向右滑动。如果停留在这个页面,再进行第二次、第三次滑动的话,就比较灵敏了。请问这个有什么解决办法吗?
嗯,虽然不明显,但确实有这个问题,这个问题的原因是:由于第一次执行activity透明方法activity.convertToTranslucent
需要100毫秒左右,为了不显示黑屏和产生一次瞬移,需要等到执行activity透明完毕后才开始移动的,如果快速滑动后按住不动,确实会存在手指与当前activity显示的边缘距离较远的问题。
我来想办法看看能不能继续优化。
另外,侧滑返回不推荐直接在activity中用使用xxxComsumer来做,推荐使用SmartSwipeBack:
- 如果activity在不同app中复用,侧滑返回的实现需求不同时,需要额外处理
- 侧滑返回的透明方案,需要兼容5.0以下的版本
- 需要侵入baseActivity
- 第三方SDK中的activity将没有侧滑返回效果
嗯嗯,谢谢大佬
我自己把activity设置为透明的,然后不调用这个方法可以吗
@beiger 通过主题将activity设置为透明有很多坑,慎用
这样子可以吗,空闲的时候后先透明化
我也正在尝试这种方式,但有个问题:打开activity后立即快速侧滑,只要速度够快(在入场动画播放完成之前侧滑),能看到前一个activity的退出动画,并且2个activity之间的部分是黑色的。继续想办法吧。
打开SwipeBackTranslucentConsumerActivity之后,侧滑一下但不退出,在它基础上再打开这个Activity,再侧滑不退出,多打开几个之后,页面会越来越卡。打开GPU呈现模式分析会发现,条形图很高,每帧的绘制都要好久。convertActivityToTranslucent()这个方法的耗时也越来越久。
打开SwipeBackTranslucentConsumerActivity之后,侧滑一下但不退出,在它基础上再打开这个Activity,再侧滑不退出,多打开几个之后,页面会越来越卡。打开GPU呈现模式分析会发现,条形图很高,每帧的绘制都要好久。convertActivityToTranslucent()这个方法的耗时也越来越久。
@beiger v1.0.6修复了这个问题。
问题原因:将activity转为透明后前一个activity被激活(生命周期方法onStart
被调用)。
修复方式:在consumer的onClosed方法中奖activity转为不透明
回到当前issue的主题:如果提前将activity转为透明,存在的问题是, 通过idleHandler调用activity.convertToTranslucent
方法将activity转为透明,TranslucentConversionListener
被回调时间不太可控(实测可能十几毫秒就回调,也可能超过2秒才回调),暂时未有比较妥善的处理方式。
欢迎大佬们提PR优化这个问题!