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

Отключить анимацию анимации активности при запуске новой активности?

У меня есть активность, которая запускает другое действие, нажатием кнопки. По умолчанию, в новых версиях ОС Android, ОС будет анимировать новую активность, скользящую справа налево.

Есть ли способ отключить эту анимацию? Я просто хочу, чтобы новая активность появлялась без какой-либо анимации.

4b9b3361

Ответ 1

Флаг FLAG_ACTIVITY_NO_ANIMATION отлично работает для отключения анимации при запуске действий.

Чтобы отключить аналогичную анимацию, которая запускается при вызове finish() в Activity, т.е. анимация перемещается справа налево, вы можете вызвать overridePendingTransition(0, 0) после вызова finish(), и следующая анимация будет исключена.

Это также работает в анимации, если вы вызываете overridePendingTransition(0, 0) после вызова startActivity(...).

Ответ 2

IMHO this ответ здесь решает проблему самым элегантным способом.

Разработчик должен создать стиль,

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

затем в манифесте установите его как тему для активности или всего приложения.

<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>

Voila! Приятно и легко..

p.s. кредиты оригинальному автору пожалуйста.

Ответ 3

Применить

startActivity(new Intent(FirstActivity.this,SecondActivity.class));

затем

overridePendingTransition(0, 0);

Это остановит анимацию.

Ответ 4

Просто укажите флаг Intent.FLAG_ACTIVITY_NO_ANIMATION при запуске

Ответ 5

На мой взгляд, лучший ответ - использовать "overridePendingTransition(0, 0);"

чтобы избежать анимации, если вы хотите Intent использовать Activity:

this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);

и не видеть анимацию при нажатии кнопки Отменить метод onPause в newactivity

@Override
protected void onPause() {
    super.onPause();
    overridePendingTransition(0, 0);
}

Ответ 6

Это работает для меня, когда отключается завершение анимации Activity.

@Override
protected void onPause() {
    super.onPause();
    overridePendingTransition(0, 0);
}

Ответ 7

Я на 4.4.2, а вызов overridePendingTransition (0, 0) в запуске ActivityCreate() отключит стартовую анимацию (вызывает overridePendingTransition (0, 0) сразу после startActivity ( ) не работал). Как отмечено в другом ответе, вызов overridePendingTransition (0, 0) после завершения() отключает закрывающую анимацию.

Btw, я обнаружил, что установка стиля с помощью "android: windowAnimationStyle" > @null (другой ответ, упомянутый здесь) вызвал сбой, когда моя активность запуска попыталась установить заголовок панели действий. Отладка в дальнейшем, я обнаружил, что почему-то это приводит к ошибке window.hasFeature(Window.FEATURE_ACTION_BAR) в Activity initActionBar().

Ответ 8

FLAG_ACTIVITY_NO_ANIMATION может работать, но не выполнял трюк для меня в сочетании с FLAG_ACTIVITY_CLEAR_TASK и FLAG_ACTIVITY_NEW_TASK. По-видимому, я вижу анимацию для создания новой задачи со свежим активным стекем, когда я перемещаюсь вбок на другие виды верхнего уровня.

Что работало здесь, называлось "overridePendingTransition (0, 0)"; либо сразу после моего вызова startActivity(), либо onPause(). Оба способа сработали, но после этого startActivity() дает мне немного больше контроля, когда я хочу анимацию, а когда нет.

Ответ 9

У меня была аналогичная проблема с появлением черного экрана при переходе от одного действия к другому с использованием overridependingперехода. и я пошел по пути ниже, и он работал

1) создал noanim.xml в папке с анимацией

     <?xml version="1.0" encoding="utf-8"?>

       <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="@android:integer/config_longAnimTime"
        android:fromYDelta="0%p"
        android:toYDelta="0%p"

 />

и используется

overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);

первый параметр в качестве моей исходной анимации и второй параметр, который является анимацией выхода в качестве моей фиктивной анимации