【问题标题】:Shared element transition with more than one id具有多个 id 的共享元素转换
【发布时间】:2020-05-09 01:47:37
【问题描述】:

我正在尝试在两个活动之间创建共享元素转换,在第一个活动上,我们称之为活动 A。我有两个具有相同 ID 的视图。现在你问:但是如何创建一个包含两个具有相同 id 的视图的 Activity? 请允许我解释一下。

我有一个自定义卡片视图,在我的活动 A 中有多个实例,我们称它们为 CV1CV2CV1CV2 都有一个 TextView 的标题,并且由于它们是相同的自定义视图,因此两个标题共享相同的 id。

我想要做什么:当用户单击 CV1 时,我想将 CV1 标题设置为 Activity B 标题,当用户单击 CV2 时,我想将 CV2 标题设置为 Activity B 标题,等等……

发生了什么:当我单击 CV2、CV3 或 CV4...时,动画标题始终是 CV1 标题。是的,CV1 是我屏幕上的第一个元素,这很有意义,为什么总是 CV1 标题获得动画。

这就是我让视图动画化的方式:

private Bundle createSharedAnim() {
        return ActivityOptionsCompat.makeSceneTransitionAnimation(this,
                new Pair<>(findViewById(R.id.tv_filled_custom_card_value), VIEW_NAME_VALUE)).toBundle();
    }

R.id.tv_filled_custom_card_value 是 CV 标题 ID。

如何获得正确的标题来制作动画?

【问题讨论】:

    标签: java android android-animation android-transitions


    【解决方案1】:

    好的,我只是设法让它工作,而且非常简单......

    由于我使用 onClickListener 来捕获点击,我已经在我的回调中获得了点击的视图。

    所以我的新代码是:

    private Bundle createSharedAnim(View view) {
            return ActivityOptionsCompat.makeSceneTransitionAnimation(this,
                    new Pair<>(view.findViewById(R.id.tv_filled_custom_card_value), VIEW_NAME_VALUE)).toBundle();
        }
    

    现在我将点击的视图作为参数接收,然后我在该视图上调用 findViewById

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多