переключение действий без анимации

как я могу правильно использовать флаг намерениях 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>