J'ai des problèmes avec un diaporama que je construis.
J'ai créé 2 animations au format XML pour les fondus entrants et sortants:
fadein.xml
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2000"/>
</set>
fadeout.xml
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2000"/>
</set>
Ce que j'essaie de faire, c'est de changer les images d'une ImageView en utilisant l'effet de fondu, de sorte que l'image actuellement affichée disparaîtra et une autre disparaîtra. Étant donné que j'ai une image déjà définie, je peux fondre cette image sans problème, avec ceci:
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim);
imageView.startAnimation(fadeoutAnim);
Mais ensuite, j'ai défini l'image suivante à afficher:
imageView.setImageBitmap(secondImage);
Il apparaît juste dans l'imageView, et quand je règle l'animation, il cache l'image, le fondu dans ... Y a-t-il un moyen de résoudre ce problème, je veux dire, quand je fais imageView.setImageBitmap (secondImage); , l'image n'apparaît pas immédiatement, et uniquement lorsque l'animation en fondu est exécutée?
Je voulais atteindre le même objectif que vous, j'ai donc écrit la méthode suivante qui fait exactement cela si vous lui passez un ImageView et une liste de références aux images dessinables.
la source
Avez-vous pensé à utiliser TransitionDrawable au lieu d'animations personnalisées? https://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html
Une façon d'atteindre ce que vous recherchez est:
la source
J'ai utilisé une animation fadeIn pour remplacer la nouvelle image par l'ancienne
la source
Sur la base de la solution d'Aladin Q, voici une fonction d'aide que j'ai écrite, qui changera l'image dans une vue d'image tout en exécutant un petit fondu / fondu dans l'animation:
la source
vous pouvez le faire par deux simples points et changer votre code
1.Dans votre dossier xml dans le dossier anim de votre projet, définissez la durée du fondu entrant et sortant non égale
2.Dans votre classe java avant le début de l'animation en fondu, définissez la deuxième visibilité d'imageView.Autant, après le début de l'animation en fondu, définissez la deuxième visibilité imageView que vous souhaitez rendre visible
fadeout.xml
fadein.xml
Dans votre classe java
la source
Pour un fondu d'entrée et de sortie infini
la source
J'utilise ce genre de routine pour enchaîner les animations par programmation.
la source
La meilleure et la plus simple, pour moi, c'était la suivante.
-> Créez simplement un thread avec Handler contenant sleep ().
la source
C'est probablement la meilleure solution que vous obtiendrez. Simple et facile. Je l'ai appris sur udemy. Supposons que vous ayez deux images ayant respectivement l'id1 et l'id2 de l'ID d'image et que la vue de l'image soit actuellement définie comme id1 et que vous souhaitiez la remplacer par l'autre image à chaque fois que quelqu'un clique dessus. Voici donc le code de base dans
MainActivity.java
FileJ'espère que cela aidera sûrement
la source