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.

Était-ce 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top