Отключить анимацию анимации активности при запуске новой активности?
У меня есть активность, которая запускает другое действие, нажатием кнопки. По умолчанию, в новых версиях ОС Android, ОС будет анимировать новую активность, скользящую справа налево.
Есть ли способ отключить эту анимацию? Я просто хочу, чтобы новая активность появлялась без какой-либо анимации.
Ответы
Ответ 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);
первый параметр в качестве моей исходной анимации и второй параметр, который является анимацией выхода в качестве моей фиктивной анимации