Подтвердить что ты не робот

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" игнорируется и происходит анимация по умолчанию.

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

4b9b3361

Ответ 2

Вы можете установить 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"/>

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

Ответ 3

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

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

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

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

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

Ответ 4

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

        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);

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

Ответ 5

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

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

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