Общий переход элемента с более чем одним идентификатором - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать общий элемент перехода между двумя действиями, в первом действии, которое называется действием A, у меня есть два представления с одинаковым идентификатором. И теперь вы спрашиваете: Но как вы можете создать действие с двумя представлениями с одинаковыми идентификаторами ?? Позвольте мне объяснить.

У меня есть пользовательское представление карты, у меня есть несколько его экземпляров на моей деятельности A, давайте назовем их CV1 и CV2 . И CV1 , и CV2 имеют заголовок, который является TextView, и, поскольку они представляют собой одно и то же настраиваемое представление, оба заголовка имеют одинаковый идентификатор.

What I'm пытается: Когда пользователь нажимает на 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 является идентификатором заголовка резюме.

Как получить правильный заголовок для анимации?

Заранее спасибо!

1 Ответ

0 голосов
/ 22 января 2020

ОК, мне просто удалось заставить его работать, и это было супер просто ...

Поскольку я использую 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 в этом представлении.

...