具有多个ID的共享元素过渡

时间:2020-01-22 20:11:13

标签: java android android-animation android-transitions

我试图在两个活动之间创建一个共享元素过渡,第一个活动称为活动A,我有两个具有相同ID的视图。现在您问:但是如何创建具有相同ID的两个视图的活动?请允许我解释一下。

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

我要执行的操作:当用户单击CV1时,我希望将CV1标题动画化为Acvitiy 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是简历标题ID。

如何获得正确的标题以进行动画制作?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我设法使其正常工作,而且非常容易...

由于我使用的是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