Android: Comment faire pour actualiser l'affichage d'un élément graphique?
J'ai créé une classe RoundIcon qui s'étend de la Vue et de la classe contient setIconImage() méthode:
public void setIconImage(int imageFromResources) {
iconImage = BitmapFactory.decodeResource(getResources(), imageFromResources);
iconWidth = iconImage.getWidth();
iconHeight = iconImage.getHeight();
refreshDrawableState();
}
et il y a une méthode onDraw():
@Override
protected void onDraw(Canvas canvas) {
if(px == 0 || py == 0)
{
px = 50;
py = 50;
}
canvas.drawCircle(px, py, circleRadius, circlePaint);
canvas.save();
if(iconImage != null)
{
int cardinalX = px - iconWidth/2;
int cardinalY = py - iconHeight/2;
canvas.drawBitmap(iconImage, cardinalX, cardinalY, iconPaint);
}
canvas.restore();
}
Le problème est que la fonction onDraw() n'a pas d'exécuter à chaque fois que la méthode setIconImage() est appelée à partir de l'activité principale et, par conséquent, l'icône ne change pas dans l'interface utilisateur.
Personne ne sait comment modifier le code pour redessiner une image à chaque fois que la méthode setIconImage est appelé?
Vous devez vous connecter pour publier un commentaire.
Essayez d'appeler Vue.invalidate() au lieu de Vue.refreshDrawableState()
Invalider se dire à la vue de tous les pixels dans la vue a besoin d'être retracé, si vous êtes seulement de mettre à jour une plus petite zone de la vue regarder dans les invalider(Rect) surcharge pour un gain de performance.
Certainement appel d'invalider au lieu de refreshDrawableState(). Vous pouvez vérifier ce fil de votre sur la et si, sur fond d'appel postInvalidate().