Переход активности Android 5 на более низкий API

Каждый раз, когда я ищу, я натыкаюсь на этот «переход активности Android 5 (L), доступный только на API >= 21.

это нормально, но я вижу некоторые приложения, такие как QuickPic и google inbox, которые используют аналогичный переход и также работают на более низком API, так как же это приложение может делать такие вещи?

что я сделал?

1) много поиска :)

2) играть с ActivityOptionsCompat, которые применяются только к API >= 21, например:

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, DATA.EXTRA_PASSED_JSON);
Intent intent = new Intent(activity, PhotoViewerActivity.class);
intent.putExtra(DATA.EXTRA_PASSED_JSON, json);
ActivityCompat.startActivity(activity, intent, options.toBundle());

РЕДАКТИРОВАТЬ (вопрос помечен как дубликат): в этом случае он отличается от другого вопроса, потому что я сказал, что есть другое приложение, которое выполняет этот переход в более низком API, и я хочу знать, как они это делают.


person mehdok    schedule 07.12.2014    source источник
comment
@alex-lockwood в будущем, когда вы решите единолично закрыть тикет за то, что он является дубликатом, пожалуйста, дайте ссылку на дубликат сообщения.   -  person edthethird    schedule 05.10.2017


Ответы (2)


Мы добавили много вещей в Lollipop, чтобы смена активности работала хорошо. Переходы активности можно выполнять вручную (в более ранних версиях), но в некоторых случаях вы столкнетесь с проблемами, и обратный переход, скорее всего, будет работать только в самом простом случае. У Чета Хааса есть devbyte на этом здесь.

Анимации между фрагментами были возможны и раньше, хотя API не так прост в использовании, как в Lollipop Fragment Transitions.

Мы много думали об обратном переносе переходов на более ранние версии в библиотеке поддержки. Это все еще может случиться. Если это так, мы также должны быть в состоянии сделать что-то для переходов фрагментов.

person George Mount    schedule 08.12.2014
comment
в недавнем обновлении приложения Gmail мы видим, что makeSceneTransitionAnimation возможна и на устройствах с леденцами. Не могли бы вы сообщить мне, как мы можем этого добиться? - person user2056563; 27.04.2015
comment
хорошие новости, так получилось, что они добавили его в библиотеку поддержки v4, взгляните на developer.android.com/reference/android/support/transition/ - person Ajinkya; 18.08.2016

Как вы сами говорите, библиотека поддержки не поддерживает (все) переходы на версиях Android ниже 5.0. Однако есть несколько альтернатив:

Неофициальные библиотеки совместимости
https://github.com/andkulikov/transitions-everywhere
https://github.com/takahirom/PreLollipopTransition
https://github.com/lgvalle/Material-Animations

Android KitKat
http://www.doubleencore.com/2013/11/new-transitions-framework/ и образец в папке примеров SDK.

person Mdlc    schedule 07.12.2014
comment
tnx, я думаю, я могу сделать эту работу. - person mehdok; 07.12.2014
comment
с библиотекой, которую вы связали, я могу использовать переход между 2 представлениями в более низком API, но я не могу понять, как применить переход между 2 activity, вы можете мне подсказать? - person mehdok; 07.12.2014
comment
Вы можете загрузить представление второго действия, а затем выполнить намерение без анимации. Конечно, это сложнее, когда ваша следующая деятельность имеет другое содержание. - person Mdlc; 08.12.2014
comment
Я попробовал github.com/takahirom/PreLollipopTransition между двумя действиями и его работой. У вас есть идеи, можем ли мы сделать переход нескольких элементов, используя его? - person Srujan Barai; 30.08.2015
comment
Не похоже, что PreLollipopTransition поддерживает несколько элементов. Вы можете попробовать использовать контейнер представления (например, относительный макет), если хотите передать несколько элементов одновременно. Вы можете попробовать использовать другую библиотеку или подать это в качестве будущего предложения в библиотеку. - person Mdlc; 30.08.2015