переключение действий без анимации
как я могу правильно использовать флаг намерениях 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. Отключить анимацию также в случае возвращения со второго действия на первое.
7 ответов
Вы можете создать стиль,
<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
Если ваш контекст-это действие, которое вы можете вызвать overridePendingTransition:
вызовите немедленно после одного из флейворов startActivity (намерения) или готово, чтобы указать явную анимацию перехода для выполнения далее.
Итак, программно:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
попробуйте этот код
this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
вы также можете просто сделать это во всех действиях, которые вы не хотите переходить от:
@Override
public void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
Мне нравится этот подход, потому что вам не нужно возиться со стилем вашей деятельности.
это не пример использования или объяснение, как использовать FLAG_ACTIVITY_NO_ANIMATION
, однако он отвечает, Как отключить Activity
переключение анимации, как задано в заголовке вопроса:
Android, Как отключить эффект "wipe" при запуске нового действия?
вот однострочное решение, которое работает так же низко, как 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>
Ура!
создайте свой собственный стиль, переопределяющий android: Theme
<style name="noAnimationStyle" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
затем используйте его в манифесте следующим образом:
<activity android:name=".MainActivity"
android:theme="@style/noAnimationStyle">
</activity>