J'ai deux images que je veux effectuer un fondu enchaîné. Initialement, ils utilisent tous deux imageview. J'utilise ensuite .getDrawable () pour obtenir le dessin des images.
C'est le code que j'ai utilisé
Drawable backgrounds[] = new Drawable[2];
backgrounds[0] = BackgroundImage.getDrawable();
backgrounds[1] = BackgroundImageBlurred.getDrawable();
TransitionDrawable crossfader = new TransitionDrawable(backgrounds);
crossfader.startTransition(3000);
Il ne montre que l'image sur le premier élément du tableau, ce qu'il montre quand même, car les deux images étaient définies comme visibles dans le XML.
La transition ne commence pas
Toute aide serait appréciée :)
Voici un exempleIFvous avez 2 dessinables et souhaitez animer leur transition dans une ImageView
:
package com.example.app;
import Android.app.Activity;
import Android.content.res.Resources;
import Android.graphics.drawable.Drawable;
import Android.graphics.drawable.TransitionDrawable;
import Android.os.Bundle;
import Android.widget.ImageView;
class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Drawable backgrounds[] = new Drawable[2];
Resources res = getResources();
backgrounds[0] = res.getDrawable(Android.R.drawable.btn_star_big_on);
backgrounds[1] = res.getDrawable(Android.R.drawable.btn_star_big_off);
TransitionDrawable crossfader = new TransitionDrawable(backgrounds);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(crossfader);
crossfader.startTransition(3000);
}
}
Ensuite, si vous souhaitez revenir à l'image d'origine, vous pouvez appeler
// Make sure the transition occurred
crossfader.startTransition(0);
// Reverse transition
crossfader.reverseTransition(3000);
S'il vous plaît corrigez-moi si j'ai mal compris votre question.
Vous devriez utiliser setCrossFadeEnabled
propery
final TransitionDrawable briefcaseTransition = (TransitionDrawable) briefcase.getDrawable();
briefcaseTransition.setCrossFadeEnabled(true);
briefcaseTransition.startTransition(500);
Peut-être que vous aimez celui-ci
- res/drawable/transition.xml:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/on" />
<item Android:drawable="@drawable/off" />
</transition>
ImageView:
<ImageButton Android:id="@+id/button"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:src="@drawable/transition" />
Javacode:
ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);
Si cela vous aide, vous pouvez voir Google-Dev:
http://developer.Android.com/guide/topics/resources/drawable-resource.html
Si vous utilisez des vecteurs, votre VectorDrawables ne sera pas passé en fondu dans TransitionDrawable.
Vous devrez d’abord les convertir en BitmapDrawables.
Voir ma réponse ici https://stackoverflow.com/a/54583929/114549 pour un exemple
Une TransitionDrawable
est juste un type spécial de dessinable. Il n'est pas dessiné par lui-même, il doit être placé quelque part (par exemple sur un fond de vue, sur une vue, etc.) pour être affiché.
Si vous essayez de procéder à un crossfade de deux images, vous avez deux approches possibles:
TransitionDrawable
.