Możesz utworzyć własne pliki animacji .xml, aby zanikać nowe Activity
i znikać bieżące Activity
:
fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:fillAfter="true"
android:duration="500" />
Użyj tego w kodzie w ten sposób: (Wewnątrz Activity
)
Intent i = new Intent(this, NewlyStartedActivity.class)
startActivity(i)
overridePendingTransition(R.anim.fade_in, R.anim.fade_out)
Powyższy kod zaniknie aktualnie aktywny Activity
i zaniknie w nowo rozpoczętym, Activity
co spowoduje płynne przejście.
AKTUALIZACJA : @Dan J zwrócił uwagę, że użycie wbudowanych animacji Androida poprawia wydajność , co rzeczywiście okazało się tak po wykonaniu kilku testów. Jeśli wolisz pracować z wbudowanymi animacjami, użyj:
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Zauważ, że odwołuję się android.R
zamiast R
uzyskać dostęp do identyfikatora zasobu.
AKTUALIZACJA : Obecnie powszechną praktyką jest wykonywanie przejść przy użyciu klasy Transition wprowadzonej na poziomie API 19 .
overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);
tych plików może również dać wskazówki, jak ulepszyć własne animacje (np. Przez wydłużenie czasu trwania przejścia niż zanikania).