Je suis en train de codifier un effet de transition entre l’activité de mon logo et mon activité principale, mais j’ai le problème qu’avant que l’activité disparaisse, il faut placer en haut:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shareInterpolator="false" >
<alpha
Android:duration="2000"
Android:fromAlpha="0.0"
Android:toAlpha="1.0" >
</alpha>
</set>
Comment puis-je améliorer ce code pour obtenir uniquement un effet de disparition?
Vous pouvez créer vos propres fichiers d’animation .xml pour créer un nouveau fondu Activity
et un fondu du Activity
actuel:
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: (Dans votre Activity
)
Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
Le code ci-dessus supprimera progressivement le Activity
actuellement actif et le Activity
nouvellement démarré, ce qui permettra une transition en douceur.
[~ # ~] mise à jour [~ # ~] : @Dan J a souligné que l'utilisation de la fonction intégrée Android animations améliore les performances , ce que j’ai trouvé être le cas après quelques tests. Si vous préférez utiliser les animations intégrées, utilisez:
overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
Avis moi référençant Android.R
au lieu de R
pour accéder à l'ID de la ressource.
[~ # ~] update [~ # ~] : Il est maintenant courant d'exécuter des transitions à l'aide de la classe Transition introduite au niveau de l'API 19 .
vous pouvez également ajouter une animation à 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);
Il suffit de re-poster répondez par 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);
vous pouvez également utiliser ce code dans votre fichier style.xml, de sorte que vous n'avez pas besoin d'écrire autre chose dans votre fichier 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>
Mettez la ligne ci-dessous juste après votre setContentView:
overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
Cela ajoutera l'animation en fondu enchaîné à votre activité. Les animations sont déjà données par le système Android, il n'est donc pas nécessaire de les recréer.
J'espère que ça vous aidera :)