Pergunta

Estou tentando animar algum texto 'zoom out' em cima de outro ponto de vista. Meu código é algo como:

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);
}

}

com animText sendo invocado na rotina onDraw() do BoardView. O que eu estou vendo, no entanto, é a bordo zoom out, não o texto, apesar das chamadas acima para setAnimation().

Eu olhei nos principais docs Android e em um outro exemplo . ponteiros até mesmo na direção certa seria útil.

Foi útil?

Solução

Bem, eu estou feliz que eu não sou o único que teve um tempo difícil encontrar o bug muito sutil no exemplo acima. O bug é:

startAnimation(anim);

que não é muito óbvio até que você expandi-lo em:

this.startAnimation(anim);

em que ponto está claro por que a visão externa (ie. 'This') é animar, bem como o texto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top