我正在使用 API 级别 21,在 Nexus 6 上进行测试。
我有两个活动:master + detail,每个视图都有一个片段。当我在主列表中选择一个项目时,它会转换到详细视图。
我在主视图和细节视图中都启用了视图转换,如下所示:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition ts = new Slide(Gravity.RIGHT);
ts.setDuration(2500);
getWindow().setEnterTransition(ts);
getWindow().setExitTransition(ts);
getWindow().setAllowEnterTransitionOverlap(true);
getWindow().setAllowReturnTransitionOverlap(true);
过渡动画按预期工作,除了一件事:当我选择一个项目时,父活动在过渡时被隐藏,所以我看不到它。当我按回时,详细视图被转出(不隐藏)并且主视图被转入(不隐藏)。那么为什么主视图在转出而细节视图转入时隐藏呢?
在 Android Studio 中,我看到几个日志帖子,例如:
changeCanvasOpacity: opaque=true
changeCanvasOpacity: opaque=false
changeCanvasOpacity: opaque=false
changeCanvasOpacity: opaque=false
前两行用于第一次转换(master => detail),后两行返回(detail => master)。如您所见,只有一行是“opaque = true”。我相信那是主视图被隐藏的时候(随着过渡开始)。
我怎样才能防止这种情况?
在这篇文章Content Transitions In-Depth (part 2)中,在“Content Transitions Under-The-Hood”和第 1C 项下,它说“框架将 A 中的所有转换视图设置为 INVISIBLE。”。
我相信这是我的问题。我该如何解决这个问题?