5

別のビューの上で「ズームアウト」するテキストをアニメーション化しようとしています。私のコードは次のようになります。

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

}

onDraw()のルーチンでanimText が呼び出されますBoardView。ただし、上記の呼び出しにもかかわらず、テキストではなく、ボードがズームアウトしていますsetAnimation()

メインの Android ドキュメントと、別のを見てきました。正しい方向へのポインタでさえ役に立ちます。

4

1 に答える 1

5

上記の非常に微妙なバグを見つけるのに苦労したのは私だけではありません。バグは次のとおりです。

startAnimation(anim);

これは、次のように拡張するまで明らかではありません。

this.startAnimation(anim);

この時点で、外側のビュー (つまり、「これ」) がテキストだけでなくアニメーション化されている理由も明らかです。

于 2009-04-24T04:01:58.547 に答える