【问题标题】:How to save/restore state of MotionLayout on activity rotation如何在活动旋转时保存/恢复 MotionLayout 的状态
【发布时间】:2020-11-28 08:17:37
【问题描述】:

重现步骤: 运行一个包含 MotionLayout 的活动 过渡到非初始状态 旋转设备或启用/禁用暗模式

观察到:MotionLayout 处于初始状态 预期:MotionLayout 处于旋转前显示的状态

我应该把状态的id放在savedInstanceState里面,然后在onCreate里面转换到那个状态(持续时间为0,所以它是瞬时的)?我认为这种方法可行,但感觉有点 hacky,有人知道这个问题的更好解决方案吗?

这是问题的记录:

【问题讨论】:

    标签: android android-animation android-motionlayout


    【解决方案1】:

    MotionLayout 不会自动保存其状态。 布局的状态可能相当复杂。

    保存 MotionLayout 基本状态的最通用方法是保存 getTransitionState() 返回的包 然后在恢复时调用 setTransitionState(Bundle b)

    【讨论】:

    • 好的,如果运动布局处于其结束状态,这就像一个魅力。但是,如果我在运动布局应该处于其开始状态时 setTransitionState,它会自动转换到结束状态。您对如何禁用此自动转换行为有任何建议吗? (在场景文件中没有设置自动过渡)
    • 请参阅此问题以获得进一步说明和代码/gif:stackoverflow.com/questions/65048418/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多