Cómo animar texto sobre otra vista en Android?
-
12-09-2019 - |
Pregunta
Estoy tratando de animar un texto 'zoom out' en la parte superior de otro punto de vista. Mi código es 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);
}
}
con animText ser invocada en la rutina de la onDraw()
BoardView
. Lo que estoy viendo, sin embargo, es el general a reducir el zoom, no el texto, a pesar de las llamadas anteriores a setAnimation()
.
He mirado en los principales documentos androide y al otro ejemplo . Incluso los punteros en la dirección correcta sería de gran ayuda.
Solución
Bueno, me alegro de que no soy el único que tenía un tiempo difícil encontrar el error muy sutil en la anterior. El error es:
startAnimation(anim);
que no es demasiado evidente hasta que ampliarlo en:
this.startAnimation(anim);
momento en el que está claro por qué la vista exterior (es decir. 'Esto') está animando así como el texto.