J'ai besoin de remplacer les phrases du texte en A avec des images, puis appendez-le à un TextView. Pour les érables réguliers, ce n'est pas un problème, mais lorsque le digage est une animationDrawable, je ne sais pas où et quand appeler Les balises d'image dans le textewithhtmlimgTags sont remplacées à l'aide d'ImageGetter: P> .start (); code> : p>
new ImageGetter()
{
@Override
public Drawable getDrawable(String source) {
if(source.endsWith("_ani"))
{
Log.i("cmv", "This is an animated drawable.");
AnimationDrawable dra = (AnimationDrawable)res.getDrawable(sRes.get(source));
dra.setBounds(0, 0, dra.getIntrinsicWidth(), dra.getIntrinsicHeight());
dra.start(); // This doesn't work..
return dra;
}
Drawable dr = res.getDrawable(sRes.get(source));
dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight());
return dr;
}
};
3 Réponses :
Je suppose que la question importante est la suivante: quand faites-vous l'appel? Si vous l'appelez après Oncreate, vous pouvez appeler l'animation.Start (). S'il est appelé à la méthode oncreate (), je voudrais: p>
Je fais l'appel plusieurs fois, le premier appel est à ONCREATE. Après cela, il s'appelle plusieurs fois plus (chaque fois que l'application reçoit une réponse d'un serveur). J'ai essayé de garder une liste de tous les animationsDawables et de les commencer surtachedtowindow, mais ils restent toujours bloqués sur la première image.
Je suis sorti avec la solution. Dans votre TextView personnalisé:
(1) Tout d'abord, vous devez choisir la synchronisation du début et de l'arrêt de l'animation. P> (2) puis mettez en œuvre votre propre introduction .Callback pour déclencher le redessinage. P>
Super! C'est exactement ce dont j'avais besoin!
Voir déjà implémente drawable.Callback Vous n'avez besoin que des substitutions TextViews suivantes pour afficher des objets d'animationDrawable dans une imagepan:
// comparing against drawables found in the spans is probably safer @Override protected boolean verifyDrawable(Drawable who) { return (super.verifyDrawable(who) || who instanceof AnimationDrawable); } // again comparing against drawables found in the spans is probably safer @Override public void invalidateDrawable(Drawable drawable) { if (drawable instanceof AnimationDrawable) { onLayout(true, getLeft(), getTop(), getRight(), getBottom()); invalidate(); return; } super.invalidateDrawable(drawable); }
Après avoir défini l'appel des tirettes d'appel
textview.bringtofront () code> puis appelle
.start () code> pour animer ..