С некоторыми усилиями это можно превратить в обычный переход, который вы просто добавляете к набору переходов с общим элементом, который автоматически выясняет, что делать с общими элементами.

отал над этой проблемой в течение нескольких недель, и я все еще не могу решить эту проблему.

Итак, у меня есть CardView, который содержит LinearLayout с ImageView.

Без этого радиуса переход общего элемента работает без проблем. Однако, когда я добавляю радиус (app: cardCornerRadius = "25dp") к этому CardView, переход общего элемента выглядит уродливо, потому чтосначала удалить радиус, а затем запустить анимацию.

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();

Это работает, но выглядит не очень хорошо, потому что переход ждет завершения анимации, прежде чем начать переход. Что мне нужно, так это радиус анимации при переходе к новому действию (что-то вроде ORDERING_TOGETHER в TransitionSet).

2-й подход - ChangeImageTransform

Я прочиталStackOverflow сообщение использовать класс преобразования, такой как 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

Как видите, я использую изображения Penguin и CardView для создания радиуса. Я могу сделать изображение округленным, используя Преобразование изображения, но я все еще не думаю, что это правильный способ создать переход общего элемента.

И вот мой вопрос, есть ли способ сделать так, чтобы переход общего элемента с радиусом CardView работал, не удаляя сначала радиус?

Ответы на вопрос(3)

Ваш ответ на вопрос