android-motionlayout - 在事件之间导航时重置运动布局

标签 android-motionlayout

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

最佳答案

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

    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 的问题直接是中间状态会使其他元素在导航回来时不可见,这就是为什么实现全有或全无 bool 标志的原因。

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

关于android-motionlayout - 在事件之间导航时重置运动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54002303/

相关文章:

android - 如何使用运动布局在父 View 内缩放 textView?

android - 如何让 NestedScrollView 在 MotionLayout 中滚动?

android - MotionLayout 多个 Transitions

android - 是否可以使用 MotionLayout 为组的可见性设置动画?

android - MotionLayout 的 child 忽略 "setVisibility"

android - 无法在 Motionlayout 中的两个不同元素上执行两个操作 |安卓工作室

android - 运动布局 : MotionScene OnClick overrides setOnClickListener

android - 如何使用 MotionLayout 调整 TextView 的大小

android - MotionLayout没有动画

android - 第一次触摸时 MotionLayout 视觉故障