棒棒糖活动与淡入淡出共享元素过渡

时间:2015-10-02 01:14:05

标签: android android-transitions

我正在尝试执行一个简单的共享元素转换,其中单击的列表项的一行转换为结果活动的顶部标题视图。我希望顶部标题视图获取列表项的位置,淡入淡出,然后转换到其最终位置。

这是我为被叫活动写的简单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"所期望的。

1 个答案:

答案 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