android - MVVM 与动画视图共享状态
问题描述
假设我有 2 个片段 A 和 B。每个片段分别包含一个视图 viewA 和 viewB。默认情况下,这两个视图都是隐藏的。
有一个名为 sharedVM 的共享视图模型(链接到活动)
来自用户的事件 A 将用动画显示 viewA 并用动画隐藏 viewB(如果 viewB 可见) 来自用户的事件 B 将用动画显示 viewB 并用动画隐藏 viewA(如果 viewA 可见)
我想:
解决方案 1: 在 sharedVM 中使用 LiveData 状态来了解视图是隐藏还是可见。但是当片段被销毁并重新创建时:隐藏/显示动画将再次播放,那就不好了。
解决方案 2: 使用 sharedVM 内部的 LiveDataEvent 来了解调度和触发动画。但是当片段被销毁并重新创建时: 我不知道视图的先前状态......
什么是更好的方法?
解决方案
我想,你需要:
LiveData
重新创建片段时手动恢复视图状态(根据当前状态)- 如果视图当前处于此状态,则使视图状态观察者忽略更改
您可以在onViewCreated()
回调中执行此操作。此修复使您的第一个解决方案有效。
推荐阅读
- android - 如何获得我的应用程序的正常运行时间?
- c# - 如何向自定义参数传递值
- html - 表格发送
- qt - QStackedWidget 以前的索引
- python - 新线程中的 PumpMessages
- ruby - Ruby ActiveMQ Stomp 消费者不打印消息
- c# - 无法将具有关系的对象作为 ObjectResult 返回
- java - Spring Boot MessageSource 在 application.properties 中不起作用
- python - Python 在本地 PC 和 Windows Server 中运行时给出不同的结果
- jquery - 期望节点时返回对象