Ответ 1
Вы пробовали overridePendingTransition()
?
У меня есть несколько разных действий в моем приложении, и я не хочу никакой анимации перехода при изменении между действиями. Ниже показано, как я изменяюсь между действиями:
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" игнорируется и происходит анимация по умолчанию.
Я не могу понять, почему это происходит.
Вы пробовали 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);
}
Конечно, вы должны реализовать это в целевой активности.