我正在使用API Level 21,在Nexus 6上进行测试。
我有两个活动:主视图和详细视图,每个视图都有一个片段。 当我在主列表中选择一个项目时,它会转换到详细视图。
我已经在主视图和详细视图中启用了视图转换,像这样:
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”。我认为这是当主视图被隐藏时 (转换开始时) 的情况。
我该怎么防止这种情况发生?
在这篇文章深入了解内容转换(第2部分)中,在“Content Transitions Under-The-Hood”和项目 1C下,它说:“框架将 A 中所有转换视图设置为 INVISIBLE。”
我认为这就是我的问题所在。我该怎么解决?