-
Notifications
You must be signed in to change notification settings - Fork 488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Alpha version Activity transition #27
base: master
Are you sure you want to change the base?
Alpha version Activity transition #27
Conversation
Приветствую! |
А почему в качестве координат объекта для аминирования, берутся его координаты внутри его контейнера, а не относительно всего экрана? |
Речь идет вероятно о ChangeBounds. Изначально в андроиде он задумывался как анимирующий изменения внутри одного и того же Parent. Потом ему добавили метод setReparent (по умолчанию выключен), в который если проставить true ChangeBounds будет брать координаты как раз относительно всего экрана, а не контейнера. Правда он уже помечен deprecated, потому что в андроид добавили дополнительный транзишн ChangeMatrixTransform, который может помочь отдельно санимировать эту разницу между в координатах parent из первой сцены и из второй сцены. но ChangeMatrixTransform у меня пока так и не получилось бекпортнуть, поэтому пока лучше этот setReparent использовать. То есть тебе сейчас как раз этот режим пригодится по идее |
извиняюсь, что так долго отвечал. конечно не заколебал) мне тоже интересно получится ли удобно использовать библиотеку для активити. |
Ну вроде предыдущие проблемы я поправил. Не очень красиво сделал, но все же. Я в Transition добавил boolean переменную isReverse. И если она true, то немного корректирую поведение Transition пот нужды обратной анимации. Сделал я это под Visibility и ChangeBounds. Вроде они хорошо отрабатывают. |
Короче сохранять скриншот вьюшки в bitmap, что бы после ухода с текущего экрана анимировать появление тех вьюх, что нет на текущем экране - не вариант. Память съедается в нереальных количествах. |
да, непростая штука. надо пытаться смотреть как в официальных Android Transitions это все обошли. почему фейд применяется ко всем вьюшкам - видимо потому что оно считает что и те вью, которые типа "перебегают", на самом деле мы анимируем не те самые финальные вьюшки, а их скриншоты с прошлого экрана. |
Доброго времени суток. Я попробовал сделать реализацию Transition между Activity на основе вашей библиотеки. Это в принципе более-менее рабочая версия. Просто хотелось бы услышать ваше мнение о такой реализации.
Суть в том, что мы указываем view содержащий элементы которые нужно анимировать (если не указать берется content). У этой view мы получаем все элементы имеющие id, берем у них параметры нужные для анимации и засовываем все это в Intent. Запускаем новое Activity. На новом Activity на основе пришедших данных формируется FrameLayout. В setContentView мы вставляем этот FrameLayout, создаем сцену для Layout который по идее должен располагаться на этом Activity и вызываем ChangeScene для нее.
С обратным Transition все немного сложнее. При вызове onBackPressed опять создаем FrameLayout на основе пришедших данных, затем находим все элементы из этих данных на текущем экране, берем важные для данного типа view данные (к примеру для ImageView это drawable) и вставляем в наши элементы на FrameLayout. На основе этого FrameLayout формируем сцену и вызываем changeScene.
Еще нужно добавить какой-либо listener по завершению Transition, потому что сейчас завершение Activity делается с помощью postDelayed c отсрочкой равной длительности анимации, это кривой подход и бывает Activity завершается раньше, чем закончилась анимация.