我想实现一种活动转换的效果,用户可以在转换发生时看到之前的活动。据我所知,使用overridePendingTransition(enterAnim,exitAnim)可以实现这种效果,但这些动画必须是影响整个活动的xml文件(例如,滑动整个活动),但我有一个我希望成为的导航栏固定,所以这个解决方案不起作用。我也无法让我的活动变得半透明,因为这些动画最适合在整个应用中使用。
我在使用过渡后意识到,即使您没有将活动指定为半透明,Android操作系统也会让您在转换过程中看到之前的活动(例如活动上的幻灯片动画)会让你看到幻灯片发生时的上一个活动)。所以我尝试设置一个空转换#34;通过使用overridePendingTransition(R.id.keep,R.id.keep),其中R.id.keep引用anim xml,它是从1.0 alpha到1.0 alpha的淡入淡出,并在onAremat中的ValueAnimator中执行视图动画下一个活动。这个想法是,当活动转换发生时,操作系统会让你看到之前的活动,我们可以通过在下一个活动的视图上做一个ValueAnimator来利用这个透明时间框架(在活动转换发生之后,操作系统不会让您看到之前的活动,即使您将窗口背景颜色设置为透明,也会显示黑屏,但ValueAnimator会在此之前完成。
我上面使用的技术在Nougat上运行良好,但是对于API 23及以下版本来说,即使ValueAnimator正在运行,UI在空活动转换期间也不会发生变化,而ValueAnimator只能更新UI活动过渡结束后。我并没有真正期待这种行为,所以我不确定如何解决这个问题。
不可否认,我能够看到之前的活动,同时看到以前的活动,我的方式有点hacky,有没有人知道更好的方法来实现我想要的效果,或者有些了解为什么我的技术在Nougat上工作但不是在API下面那个?