Перенос активности андроида 5 на нижней апи
Каждый раз, когда я нахожусь, я наткнулся на этот "переход" активности Android (5), доступный только на 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());
EDIT (вопрос помечен как дубликат): он отличается от другого вопроса в этом случае, потому что я сказал, что есть другое приложение, которое делает этот переход в более низком api, и я хочу знать, как они это делают.
Ответы
Ответ 1
Мы добавили много вещей в Lollipop, чтобы сделать Activity Transitions работоспособными. Можно выполнять операции Переходы вручную (в более ранних версиях), но в некоторых случаях вы столкнетесь с проблемами, и переход возврата, скорее всего, будет работать только в простейшем случае. У Chet Haase есть devbyte на этом здесь.
Анимации между фрагментами были возможны раньше, хотя API не так прост в использовании, как в Lollipop Fragment Transitions.
Мы много думали о переходе на перенос предыдущих версий в библиотеке поддержки. Это может случиться. Если это так, мы также должны сделать что-то для переходов фрагментов.
Ответ 2
Как вы сами говорите, библиотека поддержки не поддерживает (все) переходы в версиях 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.