Comment animer le texte sur une autre Afficher dans Android?
-
12-09-2019 - |
Question
Je suis en train d'animer un texte « zoom arrière » sur le dessus d'une autre vue. Mon code ressemble à:
class BoardView extends View {
private TextView animText;
...
private void animText(String text, int color, int xBlocks, int yBlocks) {
animText.setText(text);
animText.setTextColor(color);
animText.setVisibility(View.VISIBLE);
final int x = BOARD_X_OFFSET + xBlocks * xBlockSize;
final int y = BOARD_Y_OFFSET + yBlocks * yBlockSize;
final float SCALE_FROM = (float) 0.25;
final float SCALE_TO = (float) 5.0;
ScaleAnimation anim = new ScaleAnimation(SCALE_FROM, SCALE_TO, SCALE_FROM, SCALE_TO, x, y);
anim.setDuration(500);
animText.setAnimation(anim);
this.setAnimation(null);
startAnimation(anim);
}
}
avec animText étant invoqué dans la routine de onDraw()
du BoardView
. Ce que je vois, cependant, est le Conseil zoom arrière, pas le texte, en dépit des appels ci-dessus à setAnimation()
.
Je l'ai regardé dans les principaux documents Android et à un autre exemple . Même pointeurs dans la bonne direction serait utile.
La solution
Eh bien, je suis content que je ne suis pas le seul qui a eu du mal à trouver le bug très subtil dans ce qui précède. Le bug est:
startAnimation(anim);
qui est pas trop évident jusqu'à ce que vous développez dans:
this.startAnimation(anim);
à quel point il est clair pourquoi la vue extérieure (ie. « Ce ») est anime ainsi que le texte.