我正在尝试执行一个简单的共享元素转换,其中单击的列表项的一行转换为结果活动的顶部标题视图。我希望顶部标题视图获取列表项的位置,淡入淡出,然后转换到其最终位置。
这是我为被叫活动写的简单sharedElementEnterTransition
:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<fade android:fadingMode="fade_out" />
<changeBounds />
<changeTransform />
<changeImageTransform />
</transitionSet>
但是,fade
转换没有做任何事情。我看到结果视图突然弹出,然后转换到最终位置。
这是我开始活动的地方
view.setOnClickListener(view -> {
final Intent intent = new Intent(...);
view.setTransitionName("test");
final ActivityOptions options =
ActivityOptions.makeSceneTransitionAnimation(activity, view, "test");
startActivity(intent, options.toBundle());
});
无法弄清楚发生了什么。有人有什么想法吗?布局代码正是您对android:transitionName="test"
所期望的。
答案 0 :(得分:0)
在调试Visibility类的同时,我发现目标视图不是预期的视图,因此我强制对其进行测试,并且看起来可行。但是,我不知道这是否是完美的解决方案,因为我也同意它应该作为其他过渡(自动)工作
sharedElementEnterTransition = Fade(Visibility.MODE_IN).addTarget(your_view)
如果要进行顺序过渡,则可能需要创建一个TransitionSet并将其添加
val fadeIn = Fade(Visibility.MODE_IN).addTarget(your_view)
val move = TransitionInflater.from(context)
.inflateTransition(android.R.transition.move)
val transitionSet = TransitionSet().apply {
ordering = ORDERING_TOGETHER
addTransition(move)
addTransition(fadeIn)
}
sharedElementEnterTransition = transitionSet