Как анимировать текст поверх другого представления в Android?
-
12-09-2019 - |
Вопрос
Я пытаюсь анимировать «уменьшение масштаба» текста поверх другого представления.Мой код выглядит примерно так:
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);
}
}
с вызовом animText в onDraw()
рутина BoardView
.Однако я вижу, что доска уменьшение масштаба, а не текста, несмотря на приведенные выше призывы к setAnimation()
.
Я просмотрел основную документацию по Android и еще одну. пример.Даже указатели в правильном направлении были бы полезны.
Решение
Что ж, я рад, что я не единственный, кому было трудно найти очень тонкую ошибку, описанную выше.Ошибка:
startAnimation(anim);
что не слишком очевидно, пока вы не расширите его до:
this.startAnimation(anim);
в этот момент становится ясно, почему внешний вид (т.«это») анимируется так же, как и текст.
Не связан с StackOverflow