Android – Как остановить анимацию между изменениями активности

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

Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); 

Это отлично работает в первый раз, когда я начинаю новую деятельность. Нет анимации, но когда я вернусь к уже запущенному Управлению, кажется, что «Intent.FLAG_ACTIVITY_NO_ANIMATION» игнорируется и происходит анимация по умолчанию.

Я не могу понять, почему это происходит.

Solutions Collecting From Web of "Android – Как остановить анимацию между изменениями активности"

Вы пытались overridePendingTransition() ?

Вы можете установить FLAG_ACTIVITY_REORDER_TO_FRONT кодом и FLAG_ACTIVITY_NO_ANIMATION в манифесте, как показано ниже:

Создать noAnimTheme в res / values ​​/ styles.xml

 <style name="noAnimTheme" parent="android:Theme"> <item name="android:windowAnimationStyle">@null</item> </style> 

или

 <style name="noAnimTheme" parent="android:Theme.NoTitleBar"> <item name="android:windowAnimationStyle">@null</item> </style> 

И использовать его в манифесте:

 <activity android:name="SecondActivity" android:theme="@style/noAnimTheme"/> 

Я надеюсь, что это помогает

Я нуждался в этом, поскольку мне приходилось создавать действия при нажатии на меню.

Я сделал следующее:

Я добавил флаг FLAG_ACTIVITY_NO_ANIMATION в намерение. Он остановил анимацию, создав активность в первый раз.

Однако действия в стеке, которые вызывались при повторном нажатии на одно и то же меню (возможно, из-за другого действия), у него была анимация.

Поэтому я добавил FLAG_ACTIVITY_NO_HISTORY чтобы очистить или скорее закончить действие, когда он начнет новое действие. Это привело к созданию нового действия (без анимации), когда я снова нажимаю на меню.

Добавьте это после создания второго намерения

  Intent i = new Intent(SecondActivity.this, FirstActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); 

Когда вы возвращаетесь к первому намерению, анимация отключена, я работал для меня

Если вы используете FLAG_ACTIVITY_REORDER_TO_FRONT, вы также можете переопределить onNewIntent для последующих вызовов startActivity. Это будет просто работать для приведения в состояние фронта вместо первого вызова.

 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); overridePendingTransition(R.anim.whatever, R.anim.whatever); } 

Конечно, вы должны реализовать это в целевой деятельности.