przełączanie czynności bez animacji

Jak poprawnie użyć znacznika Intent FLAG_ACTIVITY_NO_ANIMATION w pliku AndroidManifest? Uważam, że mój problem jest banalny, ale nie mogę znaleźć dobrego przykładu lub rozwiązania.

<intent-filter>
    <data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
</intent-filter>

Jednak żaden błąd nie jest zgłaszany przez compliator, ale data nie jest poprawny. Chcę tylko wyłączyć animację w przypadku przełączania między aktywnościami. Mogę używać getWindow().setWindowAnimations(0); w onCreate lub onResume, ale używanie flag jest lepszym sposobem, prawda?

Mogę użyć również w kodzie:

Intent intent = new Intent(v.getContext(), newactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);

Ale chcę użyć tej flagi w Androidzie Manifest. Aby wyłączyć animację również w przypadku powrotu z drugiej aktywności do pierwszej.

Author: woyaru, 2011-08-07

7 answers

Możesz stworzyć styl,

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

I ustaw go jako motyw dla swojej aktywności w manifeście:

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

Można również zdefiniować styl, aby określić niestandardowe animacje wejścia i wyjścia. http://developer.android.com/reference/android/R.attr.html#windowEnterAnimation

 229
Author: Santosh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-16 14:24:59

Jeśli twój kontekst jest działaniem możesz wywołać overridePendingTransition :

Wywołanie natychmiast po jednym ze smaków startActivity(Intent) lub Zakończ, aby określić jawną animację przejścia do wykonania następnego.

Więc programowo:

this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
 146
Author: eshirazi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 11:33:44

Wypróbuj ten kod,

this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
 25
Author: Bartłomiej Jończy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-01 12:35:26

Możesz to zrobić również we wszystkich czynnościach, z których nie chcesz przejść:

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

Podoba mi się to podejście, ponieważ nie musisz zadzierać ze stylem swojej działalności.

 18
Author: TastyLemons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-02 07:37:41

Nie jest to przykładowe użycie ani wyjaśnienie, jak używać FLAG_ACTIVITY_NO_ANIMATION, jednak odpowiada, jak wyłączyć animację przełączania Activity, Jak zadano w tytule pytania:

Android, Jak wyłączyć efekt "wytrzeć" podczas rozpoczynania nowej aktywności?

 4
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:39

Oto jednoliniowe rozwiązanie, które działa tak nisko, jak minSdkVersion 14, które należy wstawić w sobie res/styles.xml:

<item name="android:windowAnimationStyle">@null</item>

Like so:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        ...
        <item name="android:windowAnimationStyle">@null</item>
    </style>
    ...
</resources>
Zdrówko!
 1
Author: user1506104,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-15 06:39:33

Stwórz swój własny styl nadpisujący android: Theme

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

Następnie użyj go w oczywisty sposób:

<activity android:name=".MainActivity"
    android:theme="@style/noAnimationStyle">
</activity>
 0
Author: goyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-30 00:43:38