'setEnterTransition' работает только с ' ActivityCompat.startActivity`
Я хочу добавить переход enter к следующему действию.
Так я и сделал:
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
window.setEnterTransition(new Slide());
это, похоже, не работает. После некоторых проб и ошибок (так как у меня был этот переход, работающий над другими действиями) я узнал, что он работал после вызова
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, view, "some_name");
ActivityCompat.startActivity(activity, new Intent(TourAndLoginActivity.this, LoginActivity.class), activityOptionsCompat.toBundle());
но у меня нет общего элемента (я добавил представление, чтобы проверить его). Невозможно добавить "null" в качестве общего элемента.
действительно ли это обязательно делать таким образом? Мой обходной можно было бы добавить невидимый элемент.
2 ответов
взято из документации разработчиков android:
запустить действие с помощью переходов Если включить переходы и установить переход выхода для действия, переход активируется при запуске другого действия следующим образом:
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
Если вы установили переход enter для второго действия, переход также активируется при запуске действия. Чтобы отключить переходы, когда вы запускаете другое действие, предоставляете пакет null options.
https://developer.android.com/training/material/animations.html
поэтому сначала включите переходы, как вы уже делаете, как показано ниже:
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
window.setEnterTransition(new Slide());
а затем начать деятельность следующим образом:
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
вы можете добавить переход при вызове намерения, как это
Intent i = new Intent(context, SampleActivity.class);
i.putExtra("data", data);
startActivity(i);
context.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);