Есть ли возможность использовать общий переход элемента между двумя разными приложениями?
Общий переход элемента между двумя разными приложениями в Android?
Ответы (1)
Да, общие элементы будут работать между разными приложениями. Вы должны согласовать общее имя для двух приложений. Обычно это делается с помощью transitionName, как предлагает @AlexLockwood, но представления не обязательно должны носить одно и то же имя. Просто случается, что если вы это сделаете, вы получите большую помощь бесплатно.
Существует важный аспект совместного использования элементов между приложениями — они должны быть в одной задаче. Параметры действия будут отклонены, если они не относятся к одной и той же задаче.
Если вы хотите использовать разные имена переходов в макете, вы просто делаете это:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
this, view, "remoteName");
startActivity(intent, options.toBundle());
Теперь, если удаленное приложение использовало «remoteName» для имени перехода в своем файле макета, ему не нужно делать ничего особенного. Однако, если он использует другое имя, он должен сопоставить это имя с представлением:
setEnterSharedElementCallback(new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names,
Map<String, View> sharedElements) {
// You may want to validate that names contains "remoteName"
// if this can be instantiated with different shared elements
sharedElements.put("remoteName", findViewById(R.id.mySharedElement));
}
});
Эта функциональность важна, когда вы делитесь чем-то, что имеет список представлений, любое из которых может быть общим. Например, в списке контактов все изображения контактов будут иметь разные имена переходов. Переходя от одного контакта к этому списку контактов, вам необходимо сопоставить один общий контакт с одним из контактов в списке.
transitionName
для общего элемента и т. д.). Вы проверяли это на себе? - person Alex Lockwood   schedule 03.11.2014