Android - Как остановить анимацию между изменениями активности - PullRequest
25 голосов
/ 15 апреля 2011

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

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

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

Ответы [ 5 ]

43 голосов
/ 15 апреля 2011

Вы пробовали overridePendingTransition()?

16 голосов
/ 24 сентября 2013

Вы можете установить 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 голосов
/ 14 ноября 2016

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

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

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

3 голосов
/ 18 июня 2013

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

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

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

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

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

1 голос
/ 21 марта 2017

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

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

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

...