我试图在两个活动之间创建一个共享元素过渡,第一个活动称为活动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。
如何获得正确的标题以进行动画制作?
谢谢!
答案 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
。