【发布时间】:2015-02-07 19:38:23
【问题描述】:
我正在使用 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) 的帖子中,在“引擎盖下的内容转换”和第 1C 项下,它说“框架将 A 中的所有转换视图设置为不可见。”。
我相信这是我的问题。我该如何解决这个问题?
【问题讨论】:
-
我想实现这样的目标(从 master => detail 转换时):christianpeeters.com/android-tutorials/…
-
当动画更快时(例如,duration=300ms)不太明显,但如果你有 2500 ms 的持续时间,很明显调用视图在退出动画完成之前就消失了。
标签: android android-5.0-lollipop android-transitions