我一直在解决这个问题几个星期,我仍然无法解决这个问题。CardView与半径的共享元素转换
所以,我有一个CardView,包含一个带有ImageView的LinearLayout。
没有这种半径共享元素转换无缝工作。但是,当我向该CardView添加半径(app:cardCornerRadius =“25dp”)时,共享元素转换看起来很难看,因为它先移除半径,然后开始动画。
1方法:ObjectAnimator
创建ObjectAnimator动画卡半径值,动画结束后开始它的过渡。
ObjectAnimator animator = ObjectAnimator
.ofFloat(view, "radius", AppUtil.dpAsPixel(this, 25), 0);
animator.setDuration(150);
animator.addListener(// start new Activity with Transition);
animator.start();
这可行,但它看起来不太好,因为过渡等待动画在开始过渡之前完成。我需要的是在转换到新的Activity时,半径是动画效果(类似于TransitionSet中的ORDERING_TOGETHER)。
第二个方法 - ChangeImageTransform
我读过StackOverflow post使用变换类像ChangeImageTransform和ChangeBounds。
我做了定义我的应用程序的主题像有人建议(my_transition包含ChangeImageTransform transitionSet)
<item name="android:windowSharedElementEnterTransition">@transition/my_transition</item>
<item name="android:windowSharedElementExitTransition">@transition/my_transition</item>
但它不工作..
3方法 - 天真
我最后一次尝试是强制目标ImageView的半径为25dp。因为也许我的CardView被转换成方形,因为目标ImageView是方形的,但正如你猜测的那样,它不起作用。
第四届方法 - 不使用CardView
正如你所看到的,我使用的企鹅图像,并使用CardView做出的半径。我可以通过使用图像转换使图像四舍五入,但我仍然认为这不是创建共享元素过渡的正确方法。
这里是我的问题,有没有办法让共享元素过渡使用CardView半径无需先移除半径即可工作?
你能显示转换文件吗?你有什么看法指定过渡? – azizbekian
@azizbekian在这里你去https://gist.github.com/aldoKelvianto/ebc337d6766506171c2c285e97278805,没有什么特别的xml和共享元素转换代码 – aldok
这是你的xml。但是,您在哪里指定要转换的iD视图? – azizbekian