首页 > 解决方案 > 在活动之间导航时重置运动布局

问题描述

我在我的主要活动中使用运动布局。它工作正常。但是,当我移动到其他活动并导航回我的主要活动时,有时活动会重置并且布局处于其起始状态。如何防止这种情况发生?除此之外,我还有另一个关于运动布局的问题,我在这里问过

标签: android-motionlayout

解决方案


我所做的是添加一个字段,一个布尔字段,并使用生命周期来处理它。

    private var hasMotionScrolled = false

    override fun onResume() {
        super.onResume()
        if (hasMotionScrolled) motionLayout.progress = MOTION_TRANSITION_COMPLETED
    }

    override fun onPause() {
        super.onPause()
        hasMotionScrolled = motionLayout.progress > MOTION_TRANSITION_INITIAL
    }


    companion object {
        private const val MOTION_TRANSITION_COMPLETED = 1F
        private const val MOTION_TRANSITION_INITIAL = 0F
    }

所以在我的例子中,运动布局正在做一个与滚动相关的动画。如果这不是你的情况,也许你可以直接使用motionLayout.progress. 我直接使用的问题progress是中间状态会使其他元素在返回时不可见,这就是实现全有或全无布尔标志的原因。

我不认为这是一个干净的解决方案,一个标志总是意味着其他东西可能会更好,如果你能找到官方的东西,请在评论中告诉我。


推荐阅读