Android: ускорение перехода общего элемента между действиями

У меня есть общий переход между двумя действиями, которые работают следующим образом:

Intent someintent = new Intent(this, someclass.class); if (Build.VERSION.SDK_INT >= 21) { ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this , new Pair<>(viewClicked.findViewById(R.id.someimage), "someimage") , new Pair<>(viewClicked.findViewById(R.id.someicon), "someicon") ); startActivity(someintent, options.toBundle()); } else { startActivity(someintent); } 

Это прекрасно работает, но переход мучительно медленный. Когда изображение сначала нажимается, оно, кажется, останавливается на секунду или два до перехода. Это связано с «весом» загружаемой активности или настраиваемой задержкой?

Solutions Collecting From Web of "Android: ускорение перехода общего элемента между действиями"

Вы пытались изменить продолжительность enterTransition и returntransition :

  private Transition enterTransition() { ChangeBounds bounds = new ChangeBounds(); bounds.setDuration(2000); return bounds; } private Transition returnTransition() { ChangeBounds bounds = new ChangeBounds(); bounds.setInterpolator(new DecelerateInterpolator()); bounds.setDuration(2000); return bounds; } 

И в onCreate :

 getWindow().setSharedElementEnterTransition(enterTransition()); getWindow().setSharedElementReturnTransition(returnTransition()); 

Другой способ, который может помочь некоторым, у которых уже есть настройка переходов в их стилях:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().getSharedElementEnterTransition().setDuration(2000); getWindow().getSharedElementReturnTransition().setDuration(2000) .setInterpolator(new DecelerateInterpolator()); }