Vous pouvez créer vos propres fichiers d'animation .xml pour fondre dans un nouveau Activity
et faire disparaître le courant 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" />
Utilisez-le dans un code comme celui-ci: (À l'intérieur de votre Activity
)
Intent i = new Intent(this, NewlyStartedActivity.class)
startActivity(i)
overridePendingTransition(R.anim.fade_in, R.anim.fade_out)
Le code ci-dessus disparaîtra de l'actuel actif Activity
et disparaîtra du nouveau démarré, Activity
ce qui entraînera une transition en douceur.
MISE À JOUR : @Dan J a souligné que l'utilisation des animations Android intégrées améliore les performances , ce que j'ai trouvé en effet être le cas après avoir fait quelques tests. Si vous préférez travailler avec les animations intégrées, utilisez:
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Remarquez que je fais référence android.R
au lieu d' R
accéder à l'ID de la ressource.
MISE À JOUR : Il est désormais courant d'effectuer des transitions à l'aide de la classe Transition introduite au niveau d'API 19 .
overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);
visualisation de ces fichiers peut également vous donner des conseils sur la façon d'améliorer vos animations personnalisées (par exemple, en prolongeant la durée du fondu avant).overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
:)Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(), android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);
Il suffit de republier la réponse d' oleynikd parce que c'est simple et soigné
Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(), android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);
la source
vous pouvez également ajouter une animation dans votre activité, dans la méthode onCreate comme ci-dessous, car overridePendingTransition ne fonctionne pas avec certains mobiles, ou cela dépend des paramètres de l'appareil ...
View view = findViewById(android.R.id.content); Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in); mLoadAnimation.setDuration(2000); view.startAnimation(mLoadAnimation);
la source
@Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); }
vous pouvez également utiliser ce code dans votre fichier style.xml pour ne pas avoir besoin d'écrire autre chose dans votre activity.java
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowAnimationStyle">@style/AppTheme.WindowTransition</item> </style> <!-- Setting window animation --> <style name="AppTheme.WindowTransition"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style>
la source