我正在开发涉及Android应用程序的个人项目,该应用程序可以避开多个活动和片段,而是使用自定义视图和Flow。一般来说,我的导航设置如下:
我的屏幕对象是我的Flow导航的键。每个屏幕对象都与布局ID相关联,并且有一个内部类演示器来处理呈现视图。
导航非常简单;当我想要移动到屏幕时,我将该屏幕显示给Flow。我们去调度员,魔术发生了;调度程序从屏幕获取传入布局,从内容ViewGroup中分离旧布局,并附加新增加的布局。繁荣!魔术!
显然,调度员需要处理动画和传出视图 - 它知道我们需要知道的一切。传入屏幕类型,传出屏幕类型和遍历方向。更大的问题是存储动画的位置,以及如何选择要使用的动画。以下是我看到的一些解决方案:
让主持人这样做
有道理,是吗?演示者的工作是呈现,因此让它处理动画是有意义的。虽然很多动画都是一样的,但是在范围内深入了解它可能没有意义,并且将演示者连接到调度程序需要一些添加烦人样板的接口。让演示者删除旧布局也很棘手!总的来说,这种方法对我来说并不优雅。
提供屏幕类型标识符
由于某些动画可能是共享的,我们可以通过为每个Screen对象提供一个类型 - 详细信息,列表等来选择要使用的动画来选择使用哪些动画。我不喜欢这个想法 - 肯定会失去一些控制权。
只需将其保留在调度员
中 不要让事情过于复杂,只需在调度程序中保留动画,其中变更本身就会发生。这样可以更容易地在动画之后交换旧布局和新布局,但感觉它不在调度员的范围内来制作动画。将其卸载到新的帮助程序类以处理事情
这可能是最好的选择,但我不知道如何构建这样一个类!
所以,从根本上说,问题是:
给定两个屏幕,如何选择在切换时如何设置转换动画。是否有任何好的设计模式特别适用于此处?