【问题标题】:Lollipop activity shared element transition with fadeLollipop 活动共享元素过渡与淡入淡出
【发布时间】:2015-10-02 01:14:05
【问题描述】:

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

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

【问题讨论】:

  • 只是一个疯狂的猜测,我不认为 在没有后端编码支持的情况下单独工作。也许对标头代码做点什么?
  • 这也是我的猜测,但我尝试在目标视图上设置默认的visibilityalpha,但没有成功。我不确定如何告诉转换框架设置目标视图的起始状态。
  • 你可以尝试在编码而不是 xml 文件中设置这些变量吗?
  • 查看本教程中的(使用共享元素的活动转换)以了解其工作原理 -- raywenderlich.com/103367/material-design

标签: android android-transitions


【解决方案1】:

同时调试 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

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 2012-02-04
    • 2021-11-15
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多