Переключение без анимации
Как правильно использовать флаг Intent FLAG_ACTIVITY_NO_ANIMATION
в файле AndroidManifest? Я полагаю, что моя проблема тривиальна, но я не могу найти хороший пример или решение для нее.
<intent-filter>
<data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
</intent-filter>
Однако ошибка не сообщается с помощью compliator, но data
неверна.
Я просто хочу отключить анимацию в случае переключения между действиями. Я могу использовать getWindow().setWindowAnimations(0);
в onCreate или onResume, но лучше использовать флаг, не так ли?
Я могу также использовать код:
Intent intent = new Intent(v.getContext(), newactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);
Но я хочу использовать этот флаг в Android Manifest. Чтобы отключить анимацию, также в случае возврата от второго действия к первому.
Ответы
Ответ 1
Вы можете создать стиль,
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
и установите его как тему для вашей активности в манифесте:
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
Вы также можете определить стиль для указания пользовательской записи и выхода из анимации.
http://developer.android.com/reference/android/R.attr.html#windowEnterAnimation
Ответ 2
Если ваш контекст - это действие, вы можете вызвать overridePendingTransition:
Вызовите сразу после одного из вариантов startActivity (Intent) или чтобы указать явную переходную анимацию для выполнения следующей.
Итак, программно:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
Ответ 3
Попробуйте этот код,
this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
Ответ 4
Вы также можете просто сделать это во всех действиях, которые вы не хотите переходить с:
@Override
public void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
Мне нравится этот подход, потому что вам не нужно возиться со стилем вашей деятельности.
Ответ 5
Это не пример использования или объяснение того, как использовать FLAG_ACTIVITY_NO_ANIMATION
, однако он отвечает, как отключить анимацию переключения Activity
, как задано в заголовке вопроса:
Android, как отключить эффект "стереть" при запуске нового действия?
Ответ 6
Вот однострочное решение, работающее всего за minSdkVersion 14
которое вы должны вставить в свой minSdkVersion 14
res/styles.xml
:
<item name="android:windowAnimationStyle">@null</item>
вот так:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:windowAnimationStyle">@null</item>
</style>
...
</resources>
Ура!
Ответ 7
создать свой собственный стиль, перекрывающий Android: Theme
<style name="noAnimationStyle" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
Затем используйте его в манифесте так:
<activity android:name=".MainActivity"
android:theme="@style/noAnimationStyle">
</activity>
Ответ 8
Линия в стиле темы работает нормально, но при этом анимация заменяется белым экраном. Особенно на более медленном телефоне - это действительно раздражает. Итак, если вы хотите мгновенный переход - вы можете использовать это в стиле темы:
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowDisablePreview">true</item>