Pem*_*ang 4 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
}
Run Code Online (Sandbox Code Playgroud)
所以在我的例子中,运动布局正在做一个与滚动相关的动画。如果这不是您的情况,也许您可以直接使用motionLayout.progress. 我progress直接使用 的问题是中间状态会使其他元素在导航回时不可见,这就是为什么实现全有或全无布尔标志的原因。
我不认为这是一个干净的解决方案,一个标志总是意味着其他东西本来可以更好,如果你能找到官方的东西,请在评论中告诉我。
您可以将转换侦听器添加到运动布局并在转换完成时保存标志。之后,当重新创建活动时,您可以读取该标志并使用以下内容:
motionLayout.setState(R.id.end, ConstraintSet.WRAP_CONTENT, ConstraintSet.WRAP_CONTENT)
其中 R.id.end 是constraintSetEnd 属性中的id。
| 归档时间: |
|
| 查看次数: |
4137 次 |
| 最近记录: |