Como animar texto sobre outro ponto de vista no Android?
-
12-09-2019 - |
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.
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